# Ideal Postcodes > Add address search and validation in moments - [Ideal Postcodes](/index.md) ## search - [Search the documentation](/search.md) ## docs - [Standard Address](/docs/address.md): {address.description} - [Changelog](/docs/changelog.md): Stay informed about the latest updates and improvements to our address validation services with our changelog. View release notes and see what's new. - [Ideal Postcodes CLI](/docs/cli.md): idpc is the official command line interface for Ideal Postcodes. It manages API keys, cleanses messy addresses, validates emails and phone numbers, and resolves specific addresses from partial queries. - [idpc auth](/docs/cli/auth.md): Manage stored credentials at ~/.config/ideal-postcodes/credentials.json (or %APPDATA%\ideal-postcodes\credentials.json on Windows, or $XDGCONFIGHOME/ideal-postcodes/... if set). The file is written with mode 0600. - [idpc cleanse](/docs/cli/cleanse.md): Clean messy address strings — POST /cleanse/addresses. Requires api_key. Each input counts as a paid lookup. - [idpc email](/docs/cli/email.md): Validate email addresses: GET /emails. Requires api_key. Each input counts as a paid lookup. - [idpc find & resolve](/docs/cli/find.md): Address autocomplete: two-step by design. Useful when you need to pin a specific address from partial info before using it downstream. - [idpc keys](/docs/cli/keys.md): Inspect and manage API keys. - [idpc phone](/docs/cli/phone.md): Validate phone numbers: GET /phonenumbers. Requires apikey. Each input counts as a paid lookup. - [Design System Showcase](/docs/design-system.md): Every prose, code, admonition, and component element on a single page — a visual reference for the docs design system. - [Glossary](/docs/glossary.md): --- - [SDKs](/docs/sdks.md): To add address search to a web form, use a library rather than an SDK. Address Finder adds address autocomplete and Postcode Lookup adds a postcode search. Both come in React versions: Address Finder for React and Postcode Lookup for React. The libraries provide the interface, keyboard support and accessibility, then fill in your address fields. - [Ideal Postcodes Python SDK](/docs/sdks/python.md): Look up UK postcodes, addresses and UPRNs from Python with the Ideal Postcodes SDK - [Address cleanse](/docs/sdks/python/address-cleanse.md): address_cleanse matches a freeform UK address to the closest address on file and scores the match. Use it to clean addresses you already hold, such as a CRM export. - [Responses, arguments and testing](/docs/sdks/python/common.md): Every method takes the API's parameters as Python arguments and returns the API's result as a Pydantic model. - [Email validation](/docs/sdks/python/email-validation.md): email_validation checks whether an email address can receive mail before you store it. It also flags disposable, free, role and catch-all addresses. - [Endpoints](/docs/sdks/python/endpoints.md): Each API operation is one method on IdealPostcodes. Operations are grouped by resource. Examples use the ak_test key and placeholder identifiers; replace them with your own before running. - [address_cleanse](/docs/sdks/python/endpoints/address-cleanse.md): Cleanse Address - [addresses](/docs/sdks/python/endpoints/addresses.md): Extract Addresses - [create_config](/docs/sdks/python/endpoints/create-config.md): Create - [create_licensee](/docs/sdks/python/endpoints/create-licensee.md): Create - [delete_config](/docs/sdks/python/endpoints/delete-config.md): Delete - [delete_licensee](/docs/sdks/python/endpoints/delete-licensee.md): Cancel - [email_validation](/docs/sdks/python/endpoints/email-validation.md): Email Validation - [find_address](/docs/sdks/python/endpoints/find-address.md): Find Address - [find_place](/docs/sdks/python/endpoints/find-place.md): Find Place - [key_availability](/docs/sdks/python/endpoints/key-availability.md): Availability - [key_details](/docs/sdks/python/endpoints/key-details.md): Details - [key_logs](/docs/sdks/python/endpoints/key-logs.md): Logs (CSV) - [key_usage](/docs/sdks/python/endpoints/key-usage.md): Usage Stats - [list_configs](/docs/sdks/python/endpoints/list-configs.md): List - [list_licensees](/docs/sdks/python/endpoints/list-licensees.md): List - [phone_number_validation](/docs/sdks/python/endpoints/phone-number-validation.md): Phone Number Validation - [postcodes](/docs/sdks/python/endpoints/postcodes.md): Lookup Postcode - [regenerate_licensee_key](/docs/sdks/python/endpoints/regenerate-licensee-key.md): Regenerate Key - [resolve_address](/docs/sdks/python/endpoints/resolve-address.md): Resolve Address - [resolve_place](/docs/sdks/python/endpoints/resolve-place.md): Resolve Place - [retrieve_config](/docs/sdks/python/endpoints/retrieve-config.md): Retrieve - [retrieve_licensee](/docs/sdks/python/endpoints/retrieve-licensee.md): Retrieve - [update_config](/docs/sdks/python/endpoints/update-config.md): Update - [update_key_details](/docs/sdks/python/endpoints/update-key-details.md): Update Details - [update_licensee](/docs/sdks/python/endpoints/update-licensee.md): Update - [Error handling](/docs/sdks/python/errors.md): Every failure the SDK raises derives from ClientError. An unsuccessful HTTP response raises APIError or one of its subclasses. A network failure raises TransportError, and an unexpected response raises ProtocolError. - [API keys](/docs/sdks/python/keys.md): The key methods report whether a key can take requests, read or change its limits and export its usage. All of them except key_availability need a Management Key. - [Licensees](/docs/sdks/python/licensees.md): A licensee is a client of yours that uses Ideal Postcodes data under your key. Sublicensing lets a platform serve many clients from one account and one bill, with each client's usage kept separate. The licensee methods create, list, update and cancel them. - [Phone validation](/docs/sdks/python/phone-validation.md): phonenumbervalidation checks whether a phone number is valid and returns it in national and international format, with its country and network. - [Postcode lookup](/docs/sdks/python/postcode-lookup.md): postcodes returns every address at a UK postcode. It ignores case and spacing, so br87re finds BR8 7RE. - [Setup](/docs/sdks/python/setup.md): Install ideal-postcodes from PyPI, create one IdealPostcodes client with your API key and reuse it for every request. - [UPRN lookup](/docs/sdks/python/uprn-lookup.md): To get the address for a UPRN, call addresses with the uprn filter and no query. The UPRN (Unique Property Reference Number) is the number UK local authorities assign to each property and Ordnance Survey maintains. - [Ideal Postcodes TypeScript SDK](/docs/sdks/typescript.md): @ideal-postcodes/sdk calls the Ideal Postcodes UK address API from TypeScript, with a typed function for each operation over native fetch. It runs in browsers and Node.js 22 or later. - [Address cleanse](/docs/sdks/typescript/address-cleanse.md): addressCleanse matches a freeform UK address to the closest address on file. It returns the match, a confidence score and a match level for each address element. - [Autocomplete](/docs/sdks/typescript/autocomplete.md): The autocomplete helper turns a partial UK address into suggestions as the user types, then turns the chosen suggestion into a full address. It debounces keystrokes, drops stale requests and caches recent suggestions. - [Responses, cancellation and bundles](/docs/sdks/typescript/common.md): Every operation resolves to { data, request, response }, accepts an AbortSignal and ships as a named ESM export that bundlers can drop when unused. - [Endpoints](/docs/sdks/typescript/endpoints.md): Each API operation is one function. Operations are grouped by resource. Examples use the ak_test key and placeholder identifiers; replace them with your own before running. - [addressCleanse](/docs/sdks/typescript/endpoints/address-cleanse.md): Cleanse Address - [addresses](/docs/sdks/typescript/endpoints/addresses.md): Extract Addresses - [createConfig](/docs/sdks/typescript/endpoints/create-config.md): Create - [createLicensee](/docs/sdks/typescript/endpoints/create-licensee.md): Create - [deleteConfig](/docs/sdks/typescript/endpoints/delete-config.md): Delete - [deleteLicensee](/docs/sdks/typescript/endpoints/delete-licensee.md): Cancel - [emailValidation](/docs/sdks/typescript/endpoints/email-validation.md): Email Validation - [findAddress](/docs/sdks/typescript/endpoints/find-address.md): Find Address - [findPlace](/docs/sdks/typescript/endpoints/find-place.md): Find Place - [keyAvailability](/docs/sdks/typescript/endpoints/key-availability.md): Availability - [keyDetails](/docs/sdks/typescript/endpoints/key-details.md): Details - [keyLogs](/docs/sdks/typescript/endpoints/key-logs.md): Logs (CSV) - [keyUsage](/docs/sdks/typescript/endpoints/key-usage.md): Usage Stats - [listConfigs](/docs/sdks/typescript/endpoints/list-configs.md): List - [listLicensees](/docs/sdks/typescript/endpoints/list-licensees.md): List - [phoneNumberValidation](/docs/sdks/typescript/endpoints/phone-number-validation.md): Phone Number Validation - [postcodes](/docs/sdks/typescript/endpoints/postcodes.md): Lookup Postcode - [regenerateLicenseeKey](/docs/sdks/typescript/endpoints/regenerate-licensee-key.md): Regenerate Key - [resolveAddress](/docs/sdks/typescript/endpoints/resolve-address.md): Resolve Address - [resolvePlace](/docs/sdks/typescript/endpoints/resolve-place.md): Resolve Place - [retrieveConfig](/docs/sdks/typescript/endpoints/retrieve-config.md): Retrieve - [retrieveLicensee](/docs/sdks/typescript/endpoints/retrieve-licensee.md): Retrieve - [updateConfig](/docs/sdks/typescript/endpoints/update-config.md): Update - [updateKeyDetails](/docs/sdks/typescript/endpoints/update-key-details.md): Update Details - [updateLicensee](/docs/sdks/typescript/endpoints/update-licensee.md): Update - [Error handling](/docs/sdks/typescript/errors.md): An HTTP error rejects with ApiError, a subclass of Error. A network failure or an aborted request rejects with the runtime's native error. - [Filter and bias](/docs/sdks/typescript/filter-and-bias.md): Narrow or rank UK address suggestions by postcode, post town, country or location with the Ideal Postcodes TypeScript SDK. - [Migrate from the core clients](/docs/sdks/typescript/migrate-from-core.md): Move from the deprecated @ideal-postcodes/core-node, core-axios, core-browser and core-interface clients to the Ideal Postcodes TypeScript SDK. - [Postcode lookup](/docs/sdks/typescript/postcode-lookup.md): lookupPostcode returns every address for a UK postcode. Searches ignore case and spacing, so br87re finds BR8 7RE. - [React and Preact](/docs/sdks/typescript/react.md): Use the SDK to build your own UK address search component in React or Preact. The examples below search as the user types. - [Setup](/docs/sdks/typescript/setup.md): Install @ideal-postcodes/sdk, then create a client with your API key. The SDK runs in browsers and Node.js 22 or later and uses the runtime's native fetch. - [UPRN lookup](/docs/sdks/typescript/uprn-lookup.md): Retrieve a UK address by its Unique Property Reference Number (UPRN) with the Ideal Postcodes TypeScript SDK. ### Address Finder Add Address Validation to your address forms in moments with our Address Finder JavaScript package. Simple and quick setup. Guides and live technical support available. - [Address Finder](/docs/address-finder.md): Add Address Validation to your address forms in moments with our Address Finder JavaScript package. Simple and quick setup. Guides and live technical support available. - [Accessibility](/docs/address-finder/accessibility.md): Address Finder is developed to meet WCAG 2.1 Level AA. It implements the WAI-ARIA combobox pattern, works with screen readers and is operable by keyboard. - [Retrieve Additional Data](/docs/address-finder/additional-data.md): You can retrieve more data for an address by passing more arguments into outputFields. - [Bias By Geolocation](/docs/address-finder/bias-by-geolocation.md): Bias search to a geospatial circle determined by an origin and radius in metres. Max radius is 50000. - [Bias By IP](/docs/address-finder/bias-by-ip.md): Biases search based on approximate geolocation of an IP address. Set bias_ip to true within queryOptions to enable. - [Bias By Postcode](/docs/address-finder/bias-by-postcode.md): Display address results that closely match the chosen postcode value. - [Callbacks](/docs/address-finder/callbacks.md): Address Finder also provides callbacks which let you hook into the following events: - [Configuration Reference](/docs/address-finder/configuration-reference.md): A complete reference for every option accepted by AddressFinder.setup. Only apiKey and outputFields are required; everything else is optional and has a sensible default. - [Configure](/docs/address-finder/configure.md): Address Finder exports a setup method to apply address verification to a form. setup requires the following configuration at minimum. - [Convert ISO-3 to ISO-2](/docs/address-finder/convert-iso-code.md): By default, the Ideal Postcodes API returns the country code in ISO-3 format. - [CSS Classes](/docs/address-finder/css-classes.md): The Address Finder can be styled with CSS classes. - [Setting the default country](/docs/address-finder/default-country.md): detectCountry disables the country detection on Address Finder and defaultCountry sets the default country. - [Default Styling](/docs/address-finder/default-styling.md): Address Finder's default styling works by injecting a style tag into the document head. - [Detach and Re-attach Address Finder on your form](/docs/address-finder/detach-reattach-af.md): Detaching Address Finder - [Disable style injection and load the CSS externally](/docs/address-finder/external-stylesheet.md): Address Finder applies its default styling by injecting an inline ` tag into the document head. A strict Content Security Policy (one whose style-src omits 'unsafe-inline'`) blocks that tag and the widget renders unstyled. - [Filter By Country](/docs/address-finder/filter-by-country.md): Display address results that match the chosen country (England, Wales, Scotland, Northern Ireland, Jersey, Guernsey and Isle of Man) using queryOptions. - [Filter By Geospatial Box](/docs/address-finder/filter-by-geospatial-box.md): Restrict search to a geospatial box determined by the "top-left" and "bottom-right" geolocations. - [Filter By Locality](/docs/address-finder/filter-by-locality.md): Display address results that match the chosen locality, like a post town (post_town) using queryOptions. - [Filter By Postcode Outward](/docs/address-finder/filter-by-postcode-outward.md): Display address results that match the chosen postcode outward value. - [Gate Population by Delivery Area](/docs/address-finder/gate-population.md): Overview - [Hide Address Fields](/docs/address-finder/hide.md): Hide - [Hide the country toolbar](/docs/address-finder/hide-toolbar.md): Suppress the toolbar that renders below the suggestion list on focus. - [How it Works](/docs/address-finder/how-it-works.md): Address Finder can be attached to any form with pre-existing address inputs. - [Checking the usability of your key](/docs/address-finder/key-usability.md): Your key may not be available at some times. For instance: - [Messages](/docs/address-finder/messages.md): Address Finder uses a small default set of messages to communicate specific events to the user. All of Address Finder's default messages can be overridden. They are outlined below: - [Attach Multiple Instances](/docs/address-finder/multiple.md): Address Finder can be invoked multiple times to attach multiple instances to your forms. - [Offer an Out When No Matches Are Found](/docs/address-finder/no-match-action.md): No-Match Action - [Package Manager (npm)](/docs/address-finder/npm.md): Address Finder is also available without transpilation or minification on npm as @ideal-postcodes/address-finder. - [Vertically Shift Address Finder](/docs/address-finder/nudge-address-finder.md): From time to time, you may want to tweak the default style of Address Finder to better match your application's design system. - [Omit Organisation Name](/docs/address-finder/omit-organisation.md): In many countries including the UK, the organisation name will take precedence as the first line of an address if it is present. - [Populate a country select](/docs/address-finder/populate-country-select.md): Your form may capture country with a ` rather than a free text - for example a checkout that stores the ISO-3 country code ("GBR", "IRL", "FRA"`) against the order. - [Prevent Autofill](/docs/address-finder/prevent-autofill.md): Sets the autocomplete= attribute of the input element. Setting this attribute aims to prevent some browsers (particularly Chrome) from providing a clashing autofill overlay. - [Add to your React Application](/docs/address-finder/react.md): @ideal-postcodes/react is the official integration for Address Finder. It renders an `, attaches the widget, and hands selected addresses back through callbacks — no useEffect or useRef` wiring required. - [Restrict search to chosen countries](/docs/address-finder/restrict-country.md): Narrow the countries you wish to support. - [Drop-In Script](/docs/address-finder/script.md): Address Finder is shipped in a polyfilled, typed and minified package called address-finder-bundled. - [Separate Input from Address](/docs/address-finder/separate-input.md): Specify an inputField to apply the Address Finder to a field other than the first line of the address. - [Display Address in One Line](/docs/address-finder/single-field.md): Instead of writing each address attribute to individual fields, you may exercise fine control over how address data is presented using the onAddressRetrieved callback. - [Style with JavaScript](/docs/address-finder/style-js.md): It's possible that the default styling may require a small tweak to allow it to better match your design and site aesthetic. Rather than adding CSS assets, we recommend applying a style attribute as a setup configuration option. The configurations below apply a style attribute directly to a specific element of the address finder. - [Tag Resolve Requests](/docs/address-finder/tag-resolve.md): Tag your address resolve requests with metadata for usage tracking. Tags are appended to the resolve API call (the second request that retrieves the full address when a suggestion is selected). ### API Reference A REST service over HTTPS, returning JSON and authenticated with an API key. Endpoints are grouped below by use case. - [API Reference](/docs/api.md): A REST service over HTTPS, returning JSON and authenticated with an API key. Endpoints are grouped below by use case. - [Cleanse Address](/docs/api/address-cleanse.md): Cleanse and standardise addresses with confidence scoring and match level indicators. - [Address Search](/docs/api/address-search.md): A two-step typeahead flow. Find returns ranked candidates from a partial query; Resolve fetches the full structured address for the chosen candidate. Use bias and filter parameters (country, postcode, geolocation) to keep results local to your audience. - [API Reference](/docs/api/api-reference.md): A REST service over HTTPS, returning JSON and authenticated with an API key. - [Create Configuration](/docs/api/create-config.md): Creates a new configuration object associated with an API Key. - [Create Licensee](/docs/api/create-licensee.md): Create a licensee for an API Key. - [Delete Configuration](/docs/api/delete-config.md): Permanently deletes a configuration object. - [Cancel Licensee](/docs/api/delete-licensee.md): Cancel a licensee key, rendering it unusable. - [Email Validation](/docs/api/email-validation.md): Query for and validate email addresses. - [Find Address](/docs/api/find-address.md): Delivers address suggestions in order of relevance based on a provided query for search-as-you-type address autocomplete. - [Find Place](/docs/api/find-place.md): Query for geographical places across countries. Returns a list of place suggestions with names and IDs. - [Key Availability](/docs/api/key-availability.md): Returns public information on an API Key: whether it is usable, its available contexts, and the current likely context. - [Key Details](/docs/api/key-details.md): Returns private data on the key including remaining lookups, available datasets and usage limits. - [Key Logs (CSV)](/docs/api/key-logs.md): Returns a CSV download of lookup data and associated information for a key. - [Key Usage](/docs/api/key-usage.md): Reports the number of lookups consumed on a key for a range of days. - [Keys](/docs/api/keys.md): Inspect and manage your API keys programmatically - check balance, update settings, audit usage, and export logs. Useful for embedding key health into dashboards or pre-flighting requests from the browser. - [List Configurations](/docs/api/list-configs.md): Lists all configurations associated with an API Key. - [List Licensees](/docs/api/list-licensees.md): Returns a list of licensees for an API Key. - [Phone Number Validation](/docs/api/phone-number-validation.md): Query for and validate phone numbers. - [Lookup Postcode](/docs/api/postcodes.md): Returns the complete list of addresses for a postcode. Postcode searches are space and case insensitive. - [Resolve Address](/docs/api/resolve-address.md): Resolves an address autocompletion by its ID into a full UK-formatted address record. - [Resolve Place](/docs/api/resolve-place.md): Resolves a place autocompletion by its place ID to retrieve full place details including coordinates, timezone, and GeoNames metadata. - [Retrieve Configuration](/docs/api/retrieve-config.md): Retrieves a single configuration object by name. - [Retrieve Licensee](/docs/api/retrieve-licensee.md): Returns licensee information for a given licensee key. - [Poll CLI Signup Token](/docs/api/sign-up-claim.md): Polls the status of a CLI signup token to retrieve account credentials once signup is complete. - [Mint CLI Signup Token](/docs/api/sign-up-mint-token.md): Mints a one-shot CLI signup token and returns a prefilled signup URL for account creation. - [UK](/docs/api/uk.md): Endpoints tailored to UK address data. Look up all addresses at a postcode, or submit a free-form, single-line address and receive a structured, validated record back. Both endpoints work for the Republic of Ireland too. - [Update Configuration](/docs/api/update-config.md): Updates an existing configuration object. - [Update Key Details](/docs/api/update-key-details.md): Update API Key Details - [Update Licensee](/docs/api/update-licensee.md): Update licensee details for a given licensee key. ### Data Our address search and verification APIs provide UK and international address data. Datasets are sourced/licensed from authoritative national providers for accuracy and compatibility with local address formats. - [Global and UK Datasets](/docs/data.md): Our address search and verification APIs provide UK and international address data. Datasets are sourced/licensed from authoritative national providers for accuracy and compatibility with local address formats. - [UK Address Form](/docs/data/address-form.md): To capture the standard UK address, - [AddressBase Core](/docs/data/addressbase-core.md): {model.description} - [AddressBase Premium](/docs/data/addressbase-premium.md): An address from the Ordnance Survey AddressBase Premium dataset. - [BAN French Address File](/docs/data/ban.md): The Base Adresse Nationale (BAN) is France's official open national address - [BEV Austrian Address File](/docs/data/bev.md): {model.description} - [Canada National Address Register](/docs/data/cannar.md): Example Record - [AddressBase Classification Codes](/docs/data/classification-codes.md): The AddressBase Classification Codes provide additional identifiers not available on Royal Mail PAF. - [IE Address (ECAD)](/docs/data/ecad.md): ECAD file including additional data for each address. - [IE Address (ECAF)](/docs/data/ecaf.md): {model.description} - [Find an Address by UPRN](/docs/data/find-address-by-uprn.md): Filtering by UPRN. Does not accept comma-separated terms. Only a single term is permitted. - [FODBOSA](/docs/data/fodbosa.md): Example Record - [Geonames](/docs/data/geonames.md): {model.description} - [Geocoded National Address File](/docs/data/gnaf.md): {model.description} - [HERE Global Address](/docs/data/here.md): HERE provides comprehensive global address data with standardised formats across 240+ countries and territories. - [Kadaster](/docs/data/kadaster.md): {model.description} - [Kartverket](/docs/data/kartverket.md): {model.description} - [MoIS](/docs/data/mois.md): {model.description} - [Multiple Residence](/docs/data/mr.md): For more information on the Multiple Residence dataset, please refer to our comprehensive guide on this topic: Read More. - [Northern Ireland Pointer](/docs/data/nip.md): Northern Ireland Pointer data is sourced from OSNI (Ordnance Survey of Northern Ireland). - [Non-Unique Addresses (NUAs)](/docs/data/nua.md): A guide to understanding and handling Non-Unique Addresses in the Irish Eircode database. - [Not Yet Built](/docs/data/nyb.md): The Not Yet Built address format is identical to the Postcode Address File format. Only the dataset label differs. - [Standard UK Address](/docs/data/paf.md): Our APIs return all data contained in Royal Mail's Postcode Address File. - [UK Alias Addresses](/docs/data/paf-aliases.md): The Alias address format is identical to the Postcode Address File format. - [Supported Territories](/docs/data/paf-supported-territories.md): The PAF dataset covers the UK only. This includes: - [Postcode Areas](/docs/data/postcode-areas.md): What is a Postcode Area? - [UK Postcode Lists](/docs/data/postcode-list.md): Listed below are links to CSV downloads of UK Postcodes and partial postcodes in CSV format. - [Reverse Geocoding](/docs/data/reverse-geocoding.md): You can search for nearest addresses using a geolocation (longitude and latitude). - [SDFI](/docs/data/sdfi.md): {model.description} - [Search by UDPRN](/docs/data/search-by-udprn.md): A UDPRN is an eight-digit unique numeric code (e.g. 25962203) for any premises on the Postcode Address File. - [Search Republic of Ireland Addresses (Eircode)](/docs/data/search-eircode.md): To search for Irish addresses please contact us to have Eircode enabled on your account. - [Supported Countries](/docs/data/supported-countries.md): The Address Finder API searches addresses in {countries.length} countries and territories, served by datasets. The table at the foot of this page lists every country with the dataset behind it, how fine its coverage is and the context value that selects it. - [Swisstopo Swiss Address File](/docs/data/swt.md): {model.description} - [Thoroughfare Descriptors](/docs/data/thoroughfare.md): Thoroughfare descriptors are common words that suffix a thoroughfare like Road, Close and Court. - [UPUJP](/docs/data/upujp.md): Example Record - [United States Postal Service Address](/docs/data/usps.md): {model.description} - [Welsh Address](/docs/data/welsh-paf.md): The Welsh Postcode Address File format is identical to the Postcode Address File format except locality information such as post town, locality, and dependent locality, which are presented in Welsh. ### Guides Guides to Ideal Postcodes API Keys, billing, error codes and integration, ordered by what people read most. - [Guides](/docs/guides.md): Guides to Ideal Postcodes API Keys, billing, error codes and integration, ordered by what people read most. - [Allowed URLs](/docs/guides/allowed-urls.md): Allowed URLs restrict a Key to a list of web addresses. We match the Referer and Origin headers of an incoming HTTP request against your list. If no match is found, the API returns a 4011 reply. If a match is found the request proceeds as normal, and the Access-Control-Allow-Origin response header is set to the requester's Origin. - [API Key](/docs/guides/api-key.md): Your API Keys are listed on your dashboard after you sign in. An API Key generally begins with the characters ak_. - [API Key Security](/docs/guides/api-key-secure.md): Usage of your API Key can be controlled three ways: by the URL a request comes from, by total lookups in a day and by total lookups per IP address in a day. Which of them you reach for depends on where your integration runs. - [API Key Settings](/docs/guides/api-key-settings.md): Limit how much your API Key can be used, and from where, via the Security panel on your dashboard. Whether your key sits on a server or in a browser, we strongly recommend setting both a daily and an individual lookup limit. - [Automated Top-Ups](/docs/guides/automated-topups.md): Turn on automated top-ups so your API Key buys more lookups when its balance runs low. Steps, billing thresholds and balance expiry. - [How to Use ClickCleanse](/docs/guides/browser-cleanse.md): Learn how to use the Browser Address Cleanse tool to validate and standardise your customer addresses - [Setting Up UK Charity Licensing](/docs/guides/charity-licensing.md): This guide walks you through setting up a UK Charity PAF licence with Royal Mail via Ideal Postcodes. - [ChatGPT for Docs](/docs/guides/chatgpt-for-docs.md): We are in the very early stages of using an LLM to improve the developer experience around our tools and APIs. Please use ChatGPT for Docs and rate the answers to your questions so we can improve the agent and our documentation. - [Email Validation Guide](/docs/guides/email-validation.md): Check if an email address is deliverable using our Email Validation service. - [Error Codes and Common Fixes](/docs/guides/error-codes.md): Every error the API can return, with the cause and the fix. The four most common are first. The full list follows, grouped by HTTP status. - [Build with AI](/docs/guides/llms.md): Index of every Ideal Postcodes asset designed for AI agents and AI-powered app builders. - [Phone Validation Guide](/docs/guides/phone-validation.md): Check if a phone number is valid by using our Phone Validation service. - [Places API](/docs/guides/places.md): Query for geographical places across countries. Each query will return a list of place suggestions, which consists of a place name, descriptive name and id. - [Purchasing Lookups](/docs/guides/purchasing-lookups.md): Buy a one-off batch of lookups from your dashboard, and how each batch is drawn down and expires 12 months after first use. - [Status API](/docs/guides/status-api.md): Endpoint - [Sublicensing](/docs/guides/sublicensing.md): Sublicensing Keys allow you to license multiple organisations or individuals under the same key. All managed, controlled and billed to you under the same account. - [Tagging and Usage Tracking](/docs/guides/tag-and-track.md): Any request which affects your Key balance may be decorated with metadata called tags. This data is stored along with your lookup history and can be queried via the API. We call the ability to label your requests "tagging". - [Tagging](/docs/guides/tags.md) ### Integrations Add address validation to eCommerce platforms, CRMs and form builders with a native extension or integration guide. - [Integrations](/docs/integrations.md): Add address validation to eCommerce platforms, CRMs and form builders with a native extension or integration guide. - [Anything](/docs/integrations/anything.md): Add the Ideal Postcodes Address Finder to an Anything (Create Anything) app. - [Anything integration rules](/docs/integrations/anything-prompt.md): Reference rules for an AI builder integrating the Ideal Postcodes Address Finder React component into an Anything (React) app. - [base44](/docs/integrations/base44.md): Add the Ideal Postcodes Address Finder to a base44 app. - [base44 integration rules](/docs/integrations/base44-prompt.md): Reference rules for an AI builder integrating the Ideal Postcodes Address Finder React component into a base44 (React) app. - [Installing Address Validation & Postcode Lookup for BigCommerce](/docs/integrations/bigcommerce.md): Complete guide for installing and configuring Ideal Postcodes address lookup integration for BigCommerce. Supports checkout, account forms, and admin panel integration. - [Bolt](/docs/integrations/bolt.md): Add the Ideal Postcodes Address Finder to a Bolt.new app. - [Browser Extension Integration](/docs/integrations/browser-extension.md): Integrate Address Validation into Chrome and Firefox Browsers. Available for address validation across different platforms and web-based applications. - [Build with AI](/docs/integrations/build-with-ai.md): Per-platform guides for adding Ideal Postcodes to AI coding agents and browser-based app builders. - [Installing Postcode Lookup for Microsoft Dynamics 365 Business Central](/docs/integrations/business-central.md): Integrate Postcode Lookup to Microsoft Dynamics 365 Business Central. Follow our simple guide to enable UK address validation on address fields. - [Calculated Fields Form Integration](/docs/integrations/calculated-field-forms.md): Integrate Address Validation to your Calculated Field Forms Pages. Postcode Lookup or Address Finder. Quick installation using CFF's form editor. Live support. - [Claude Code](/docs/integrations/claude-code.md): Install the Ideal Postcodes agent skills into Claude Code for guided Address Finder, Postcode Lookup, and API integration. - [Codex](/docs/integrations/codex.md): Install the Ideal Postcodes agent skills into OpenAI Codex for guided Address Finder, Postcode Lookup, and API integration. - [Contact Form 7 Address Validation](/docs/integrations/contact-form-7.md): Integrate Address Validation into Your WordPress Contact Form 7 Pages. Postcode Lookup or Address Finder. Quick installation using CF7's form editor. Live support. - [Cursor](/docs/integrations/cursor.md): Install the Ideal Postcodes agent skills into Cursor for guided Address Finder, Postcode Lookup, and API integration. - [Divi Address Validation](/docs/integrations/divi.md): Integrate Address Validation with the WordPress Divi Page Builder. - [Integrate Address Validation with Dynamics 365](/docs/integrations/dynamics-365.md): Enable address validation for Microsoft Dynamics 365 with our Chrome and Firefox Browser Extension. Adds UK Address Finder to contact creation and editing. - [Elementor](/docs/integrations/elementor.md): Add address autocomplete and postcode lookup to your WordPress Elementor pages. Follow the address finder guide to get started. Live developer support. - [Installing Address Cleanse for Microsoft Excel](/docs/integrations/excel.md): Cleanse, validate and enrich UK and international addresses directly in Microsoft Excel using the Ideal Postcodes Cleanse API. Adds a Cleanse button to the Home ribbon that writes results as plain static values. - [Fluent Forms](/docs/integrations/fluent-forms.md): Add address autocomplete and postcode lookup to your WordPress Fluent Forms pages. Follow the address finder guide to get started. Live developer support. - [FormAssembly Address Validation](/docs/integrations/formassembly.md): Integrate Address Validation into Your FormAssembly Pages. Follow our setup guide to get started. Quick and easy implementation. Live developer support available. - [Formidable Forms Address Validation Integration](/docs/integrations/formidable.md): Integrate Address Validation into Your WordPress Formidable Forms. Follow our setup guide to get started. Quick and easy. Live developer support available. - [Forminator](/docs/integrations/forminator.md): Add address autocomplete and postcode lookup to your WordPress Forminator pages. Follow the address finder guide to get started. Live developer support. - [Formstack Integration](/docs/integrations/formstack.md): Add address validation to your Formstack Form builder with Ideal Postcodes address finder integration. Simply insert JavaScript into the form builder. - [GitHub Copilot](/docs/integrations/github-copilot.md): Wire Ideal Postcodes documentation into GitHub Copilot via custom instructions. - [Gravity Forms Address Validation Integration](/docs/integrations/gravity-forms.md): Attach Address Finder or Postcode Lookup to WordPress Gravity Forms using custom HTML fields. - [Gutenberg Forms Address Validation Integration](/docs/integrations/gutenberg.md): Integrate Address Validation and Postcode Lookup to Your WordPress Gutenberg Forms Pages. Add address input fields easily through the HTML editor. - [HubSpot Address Validation Integration | Documentation](/docs/integrations/hubspot.md): Add address finder to your HubSpot CRM with our Browser Extension. Quick and easy setup through Chrome or Firefox. Live technical support. - [HubSpot Pages](/docs/integrations/hubspot-pages.md): Integrate Address Validation with the HubSpot Page Builder. - [JetFormbuilder Address Validation](/docs/integrations/jetformbuilder.md): Integrate Address Finder and Postcode Lookup to your JetFormbuilder pages easily using the form editor. Follow the guide for a quick setup. - [Jotform Integration](/docs/integrations/jotform.md): This guide outlines how to attach Address Finder to your Jotform address form. Follow our setup guide to get started. Live developer support available. - [Leap.new](/docs/integrations/leap-new.md): Add the Ideal Postcodes Address Finder to a Leap.new app. - [Leap.new integration rules](/docs/integrations/leap-new-prompt.md): Reference rules for an AI builder integrating the Ideal Postcodes Address Finder React component into a Leap.new (Encore.ts + React) app. - [Lovable](/docs/integrations/lovable.md): Add the Ideal Postcodes Address Finder to a Lovable app. - [Installing Address Validation & Postcode Lookup for Adobe Commerce (Magento)](/docs/integrations/magento.md): Complete guide for installing and configuring Ideal Postcodes address lookup extension for Adobe Commerce (Magento). Supports checkout, account forms, and admin panel integration. - [Ninja Forms Address Validation](/docs/integrations/ninja-forms.md): Add Address Validation and Postcode Lookup to your Ninja Forms pages using WordPress' form editor. Follow the guide for a quick setup. Live developer support. - [Odoo Integration](/docs/integrations/odoo.md): Enable address finder for Odoo CRM with our Chrome and Firefox browser extensions - [Installing Address Validation & Postcode Lookup for OpenCart](/docs/integrations/opencart.md): Add Address Validation and Postcode lookup to your OpenCart address forms. Follow our simple setup guide to get started. Live developer support available. - [Installing Address Validation for PageFly](/docs/integrations/pagefly.md): Integrate Address Finder and Postcode Lookup to your PageFly Address Forms. Follow our simple guide to get started. - [QuickBooks](/docs/integrations/quickbooks.md): Integrate Address Validation with QuickBooks with our Browser Extension. Quick and easy setup through Chrome or Firefox. Live technical support. - [Really Simple Systems](/docs/integrations/really-simple-systems.md): Integrate Address Validation with your Really Simple Systems CRM with our Browser Extension. Quick and easy setup through Chrome or Firefox. Live technical support. - [Replit](/docs/integrations/replit.md): Add the Ideal Postcodes Address Finder to a Replit app. - [Sage Business Cloud Accounting Integration](/docs/integrations/sage.md): Integrate Address Validation into Your Sage Application with our Browser Extension. Adds Address Finder to new customer and supplier record creation fields. - [Salesforce Integration](/docs/integrations/salesforce.md): Integrate address validation to your Salesforce CRM with our Browser Extension. Quick and easy setup through Chrome or Firefox. Live technical support. - [shadcn registry](/docs/integrations/shadcn.md): Drop-in shadcn component for the Ideal Postcodes Address Finder. - [Installing One-Step Address Validation for Shopify](/docs/integrations/shopify.md): Shopify Integration for UK Address Search and Validation. Follow our guide to get started. - [Installing Address Validation & Postcode Lookup for ShopWired](/docs/integrations/shopwired.md): Complete guide for installing and configuring Ideal Postcodes address lookup integration for ShopWired. Supports checkout, account forms, and admin panel integration. - [Unbounce Address Validation](/docs/integrations/unbounce.md): Integrate Address Validation into Your Unbounce Form. Works by inserting scripts and stylesheets into the Unbounce Builder page. Quick and easy setup. - [v0](/docs/integrations/v0.md): Add the Ideal Postcodes Address Finder to a v0 app. - [Webflow Integration](/docs/integrations/webflow.md): This guide outlines how to attach Address Finder and Postcode Lookup to your Webflow Form Block. - [Windsurf](/docs/integrations/windsurf.md): Use Ideal Postcodes inside Windsurf by pointing Cascade at our llms.txt context file. - [Wix Integration](/docs/integrations/wix.md): Integrate Address Validation with the Wix Editor. - [Installing Address Validation & Postcode Lookup for WooCommerce](/docs/integrations/woocommerce.md): Integrate Address Finder and Postcode Lookup to your WordPress WooCommerce Address Forms. Follow our simple guide to get started. - [Zapier Address Validation Documentation](/docs/integrations/zapier.md): Improve customer data management with Ideal Postcodes & Zapier. Automate email, address, and phone verification workflows in your software seamlessly - [Zoho CRM](/docs/integrations/zoho-crm.md): Add Address Finder to Zoho CRM address forms with our Browser Extension. Quick and easy setup through Chrome or Firefox. Live technical support. ### Libraries - [Open API Specification](/docs/libraries/open-api.md): OpenAPI Specification is an API description format for REST APIs. Our OpenAPI files describe the entire API including available endpoints, operation parameters and request outputs. ### Migration - [Migrating from GetAddress](/docs/migrate/getaddressio.md): Comprehensive migration guide from GetAddress to Ideal Postcodes - [API Compatibility Layer](/docs/migrate/getaddressio/api-compatibility.md): Temporary GetAddress-compatible API to ease migration to Ideal Postcodes - [Autocomplete Migration](/docs/migrate/getaddressio/autocomplete.md): Migrate from GetAddress Autocomplete API to Ideal Postcodes Address Finder API - [Browser Extension Migration Guide](/docs/migrate/getaddressio/browser-extension.md): Complete guide to migrating from the GetAddress Chrome extension to Ideal Postcodes browser extensions for Chrome and Firefox - [Microsoft Dynamics 365 Business Central](/docs/migrate/getaddressio/dynamics-business-central.md): Migrate from GetAddress to Ideal Postcodes on Microsoft Dynamics 365 Business Central - [Address Field Mapping Reference](/docs/migrate/getaddressio/field-mapping.md): Complete field mapping reference for migrating GetAddress address data to Ideal Postcodes - [Gravity Forms Migration](/docs/migrate/getaddressio/gravity-forms.md): Complete migration guide for transitioning your WordPress Gravity Forms address validation from GetAddress to Ideal Postcodes following the High Court ruling. - [Jotform Migration](/docs/migrate/getaddressio/jotform.md): Complete migration guide for transitioning your Jotform address validation from GetAddress to Ideal Postcodes. Includes side-by-side code comparison and step-by-step instructions. - [Autocomplete JS Library Migration](/docs/migrate/getaddressio/js-autocomplete.md): Migrate from GetAddress Autocomplete JS library to Ideal Postcodes Address Finder JavaScript library - [Find JS Library Migration](/docs/migrate/getaddressio/js-find.md): Migrate from GetAddress Find JavaScript library to Ideal Postcodes Postcode Lookup JavaScript library - [jQuery Plugin Migration](/docs/migrate/getaddressio/js-jquery.md): Migrate from GetAddress jQuery Find plugin to Ideal Postcodes jquery.postcodes plugin - [Legacy v2 API Migration](/docs/migrate/getaddressio/legacy-v2.md): Migrate from GetAddress Legacy v2 API to the Ideal Postcodes API - [Postcode Lookup Migration](/docs/migrate/getaddressio/postcode-lookup.md): Migrate from GetAddress Find API to the Ideal Postcodes API - [C# SDK Migration](/docs/migrate/getaddressio/sdk-dotnet.md): Use the GetAddress .NET SDK with Ideal Postcodes compatibility API - [Validation Migration](/docs/migrate/getaddressio/validation.md): Migrate from GetAddress Validate API to Ideal Postcodes Cleanse API - [WooCommerce Migration](/docs/migrate/getaddressio/woocommerce.md): Migrate from GetAddress WooCommerce plugin to Ideal Postcodes WooCommerce plugin ### Postcode Lookup Add Postcode Lookup to your forms with our Postcode Lookup JavaScript package. Simple and quick set up. Guides and live technical support available. - [Postcode Lookup](/docs/postcode-lookup.md): Add Postcode Lookup to your forms with our Postcode Lookup JavaScript package. Simple and quick set up. Guides and live technical support available. - [Add Custom Elements](/docs/postcode-lookup/add-custom-elements.md): You may have a specific postcode lookup user interface in mind and don't wish to rely on just specifying a context to generate Postcode Lookup elements and CSS to style those elements. - [Retrieve Additional Data](/docs/postcode-lookup/additional-data.md): We can also pull in more data from the Postcode Address File by passing more arguments into the outputFields object. - [Behaviour](/docs/postcode-lookup/behaviours.md): This guide outlines technical details about how Postcode Lookup behaves and interacts with the DOM. - [Callbacks](/docs/postcode-lookup/callbacks.md): Postcode Lookup also provides callbacks which let you hook into specific events. - [Configuration Reference](/docs/postcode-lookup/configuration-reference.md): A complete reference for every option accepted by PostcodeLookup.setup. Only context, apiKey and outputFields are required; everything else is optional and has a sensible default. - [Configure](/docs/postcode-lookup/configure.md): Postcode Lookup exports a setup method to apply address verification to a form. setup requires the following configuration at minimum. - [CSS Classes](/docs/postcode-lookup/css-classes.md): Postcode Lookup does not inject any styling into your page. Instead, it relies on your pre-existing styles for your forms to render the Postcode Lookup UI. - [Custom Search Button](/docs/postcode-lookup/custom-button.md): You may also specify any clickable DOM element as a trigger to look up a postcode. - [Run Custom Callback](/docs/postcode-lookup/custom-callback.md): By passing a function to a callback like onSearchCompleted, you can modify or extend the behaviour of Postcode Lookup. - [Custom Elements](/docs/postcode-lookup/custom-elements.md): While Postcode Lookup can reduce much of the friction by rendering postcode lookup elements inside the provided context, this is less ideal for forms with complex designs and styling rules. In these instances, you may create one or more custom postcode lookup elements and provide them to Postcode Lookup. - [Custom Postcode Input](/docs/postcode-lookup/custom-input.md): You may not want the plugin to create its own postcode input field. Instead, you may wish to use an existing field. - [Enable Full Address Search](/docs/postcode-lookup/full-search.md): You can also enable a full address search, i.e. combine a postcode with house number. - [Gate Population by Delivery Area](/docs/postcode-lookup/gate-population.md): Overview - [Hide Address Fields](/docs/postcode-lookup/hide-fields.md): You can hide your address input fields until the user has selected a verified address, making it harder to bypass address verification with an unrecognised entry. - [How it Works](/docs/postcode-lookup/how-it-works.md): Postcode Lookup can be attached to any form with pre-existing address inputs and an empty container to render the Postcode Lookup UI. - [Messages](/docs/postcode-lookup/messages.md): Postcode Lookup uses a small default set of messages to communicate specific events to the user. All of Postcode Lookup's default messages can be overridden. They are outlined below: - [Multi-page Form](/docs/postcode-lookup/multi-page-form.md): You can have the user enter their postcode and open the address form on a new page by saving the user's input in localStorage. - [Create Multiple Instances](/docs/postcode-lookup/multiple.md): You can create multiple, independent Postcode Lookup fields on the same page. This is useful for certain requirements, e.g. separate billing and shipping addresses. - [Package Manager (npm)](/docs/postcode-lookup/npm.md): Postcode Lookup is also available without transpilation or minification on npm as @ideal-postcodes/postcode-lookup. - [Add to React](/docs/postcode-lookup/react.md): 1. Create a context container and attach a reference with createRef - [Omit Company Name](/docs/postcode-lookup/remove-organisation.md): In many countries including the UK, the organisation name will take precedence as the first line of an address if it is present. - [Drop-In Script](/docs/postcode-lookup/script.md): Postcode Lookup is shipped in a polyfilled, typed and minified package called postcode-lookup-bundled. - [Merge Address into One Field](/docs/postcode-lookup/single-field.md): Instead of writing address attributes to specific input fields, you can also write out the entire address to a general input like a textarea. - [Style Adjustments](/docs/postcode-lookup/style-tweaks.md): It's possible that the default styling may require a small tweak to allow it to better match your design and site aesthetic. Rather than adding CSS assets, consider applying a style attribute as a setup configuration option. The configurations below apply a style attribute directly to a specific element of the Postcode Lookup. ## Optional - [OpenAPI Reference (Markdown)](https://docs.ideal-postcodes.co.uk/openapi.md): Every API operation - parameters, request/response schemas, examples - in one markdown file - [OpenAPI Specification (JSON)](https://openapi.ideal-postcodes.co.uk/openapi.json): Machine-readable API specification in JSON format - [OpenAPI Specification (YAML)](https://openapi.ideal-postcodes.co.uk/openapi.yaml): Machine-readable API specification in YAML format