Skip to main content
The postcodes table contains 844,248 records covering 125 countries. Each record includes the postcode / ZIP code string, country, granularity type, source attribution, and locality name.
This is informational postcode data, not an address verification or mail-deliverability service. A record confirms a code exists in the dataset — it does not confirm a delivery point, standardize an address, or guarantee mail will arrive.

Coverage

type is a source-provided classification, not a fixed enum on either the database column or the API. It reflects whatever granularity each country’s source data actually distinguishes, and can gain new values as more sources are imported — don’t hardcode a switch over a closed list.

Postcode Types

The five values present in the current dataset, most to least common:

Query Examples

Look up postcodes for a country

This listing endpoint requires a Supporter+ plan — including a bare request with no ?q= at all, to stop lower-tier keys from scraping the full dataset. See Get Postcodes by Country for full query parameters, pagination, and tier-based field availability. For a single known code, Get Postcode by Code is free on every plan.

Validate a postcode format

Use the postal_code_regex field on the countries table to validate a postcode before querying:

Find postcodes by locality

Count postcodes per country

Availability by Format

The postcodes table is included in all SQL-based exports (MySQL, PostgreSQL, SQLite, SQL Server), the JSON export, and the CSV and YAML exports. It is not included in the GeoJSON export.
Use the Export Tool to download a postcodes-only dataset for specific countries, which is significantly smaller than the full dump.

Get Postcode by Code

Exact lookup via the hosted API, free on every plan.

Get Postcodes by Country

Paginated listing and search via the hosted API. Requires Supporter+.

Database Schema

Full table definitions including the postcodes table structure.

Export Tool

Export postcodes data in your preferred format.