Migrating from Ideal Postcodes

Ideal Postcodes and Zapex both answer from PAF, so the fields are PAF’s in both. The calls map one to one, and most fields keep their names: Ideal Postcodes spells `dependant` where PAF and Zapex spell `dependent`.

Calls

Ideal PostcodesZapex
GET /v1/autocomplete/addresses?query=GET /v1/addresses?q=
GET /v1/autocomplete/addresses/{id}/gbrGET /v1/addresses/{uprn}
GET /v1/postcodes/{postcode}GET /v1/postcodes/{postcode}/addresses
GET /v1/udprn/{udprn}GET /v1/geocode/forward, or keep the UPRNZapex looks an address up by its UPRN.
GET /v1/uprn/{uprn}GET /v1/addresses/{uprn}
Cleanse APIGET /v1/geocode/forward, POST /v1/cleansing/jobs

Fields, one by one

Ideal PostcodesZapex
hits[].idsuggestions[].uprn
hits[].suggestionsuggestions[].street_address, post_town and postcode
line_1, line_2, line_3lines.line_1, line_2, line_3
post_townpost_town
postcodepostcode
organisation_name, department_namecomponents.organisation_name, department_name
sub_building_name, building_name, building_numbercomponents.sub_building_name, building_name, building_number
po_boxcomponents.po_box
thoroughfarecomponents.thoroughfare_and_descriptor
dependant_thoroughfarecomponents.dependent_thoroughfare_and_descriptor
dependant_localitycomponents.dependent_locality
double_dependant_localitycomponents.double_dependent_locality
udprn, uprnudprn, uprn
latitude, longitudelocation.lat, location.lng
district, ward, countygeography.local_authority, ward, countyEach with its ONS code.
countrycountryISO 3166-1 (`GB`) rather than a name.

What to watch for

  • Ideal Postcodes takes its key as `api_key` in the query. Zapex takes it in `Authorization: Bearer`, and a publishable key in the query only for maps.
  • Ideal Postcodes’ test postcodes become Zapex’s sandbox: a test key finds the addresses of SA1 1DF, SA1 1RE, SA1 1RP, SA1 1TY and SA1 8JQ.

Of Ideal Postcodes’s documentation as of October 2026. Check it against the calls your integration makes, and tell us of anything that differs.