Skip to main content

Bulk Lookup Postcodes

This endpoint allows you to retrieve data for multiple postcodes in a single request.

Returns matching postcode data for each valid postcode provided. If a postcode is not found, its result will be null.

For more details, see the API Documentation.

Endpoint

POST https://api.postcodes.io/postcodes

Request Format

Submit a JSON object with an array of postcodes. Ensure you set the Content-Type header to application/json.

You can include up to 100 postcodes in a single request.

Example Request

POST https://api.postcodes.io/postcodes
Content-Type: application/json

{
"postcodes": ["PR3 0SG", "M45 6GN", "EX165BL"]
}

Example Response

{
"status": 200,
"result": [
{
"query": "PR3 0SG",
"result": {
"postcode": "PR3 0SG",
"quality": 1,
"eastings": 351012,
"northings": 440302,
"country": "England",
"nhs_ha": "North West",
"longitude": -2.746251,
"latitude": 53.856635,
"european_electoral_region": "North West",
"primary_care_trust": "North Lancashire Teaching",
"region": "North West",
"lsoa": "Wyre 006A",
"msoa": "Wyre 006",
"incode": "0SG",
"outcode": "PR3",
"parliamentary_constituency": "Lancaster and Wyre",
"parliamentary_constituency_2024": "Lancaster and Wyre",
"senedd_constituency": null,
"senedd_constituency_no": null,
"admin_district": "Wyre",
"parish": "Myerscough and Bilsborrow",
"admin_county": "Lancashire",
"date_of_introduction": "200705",
"date_of_termination": null,
"index_of_multiple_deprivation": 23736,
"admin_ward": "Brock with Catterall",
"ced": "Wyre Rural East",
"ccg": "NHS Lancashire and South Cumbria",
"nuts": "Wyre",
"pfa": "Lancashire",
"nhs_region": "North West",
"ttwa": "Preston",
"national_park": "England (non-National Park)",
"bua": "Bilsborrow",
"icb": "NHS Lancashire and South Cumbria Integrated Care Board",
"cancer_alliance": "Lancashire and South Cumbria",
"lsoa11": "Wyre 006A",
"msoa11": "Wyre 006",
"lsoa21": "Wyre 006A",
"msoa21": "Wyre 006",
"oa21": "E00185591",
"ruc11": "(England/Wales) Rural village",
"ruc21": "Smaller rural: Nearer to a major town or city",
"lep1": "Lancashire",
"lep2": null,
"codes": {
"admin_district": "E07000128",
"admin_county": "E10000017",
"admin_ward": "E05009934",
"parish": "E04005340",
"parliamentary_constituency": "E14001318",
"parliamentary_constituency_2024": "E14001318",
"ccg": "E38000226",
"ccg_id": "02M",
"ced": "E58000832",
"nuts": "TLD44",
"lsoa": "E01025547",
"msoa": "E02005324",
"lau2": "E07000128",
"pfa": "E23000003",
"nhs_region": "E40000014",
"ttwa": "E30000255",
"national_park": "E65000001",
"bua": "E63007815",
"icb": "E54000048",
"cancer_alliance": "E56000018",
"lsoa11": "E01025547",
"msoa11": "E02005324",
"lsoa21": "E01025547",
"msoa21": "E02005324",
"oa21": "E00185591",
"ruc11": "E1",
"ruc21": "RSN1",
"lep1": "E37000019",
"lep2": null
}
}
},
{
"query": "M45 6GN",
"result": {
"postcode": "M45 6GN",
"quality": 1,
"eastings": 380402,
"northings": 406021,
"country": "England",
"nhs_ha": "North West",
"longitude": -2.297263,
"latitude": 53.550467,
"european_electoral_region": "North West",
"primary_care_trust": "Bury",
"region": "North West",
"lsoa": "Bury 019C",
"msoa": "Bury 019",
"incode": "6GN",
"outcode": "M45",
"parliamentary_constituency": "Bury South",
"parliamentary_constituency_2024": "Bury South",
"senedd_constituency": null,
"senedd_constituency_no": null,
"admin_district": "Bury",
"parish": "Bury, unparished area",
"admin_county": "(pseudo) England (UA/MD/LB)",
"date_of_introduction": "199405",
"date_of_termination": null,
"index_of_multiple_deprivation": 26575,
"admin_ward": "Pilkington Park",
"ced": null,
"ccg": "NHS Greater Manchester",
"nuts": "Bury",
"pfa": "Greater Manchester",
"nhs_region": "North West",
"ttwa": "Manchester",
"national_park": "England (non-National Park)",
"bua": "Whitefield",
"icb": "NHS Greater Manchester Integrated Care Board",
"cancer_alliance": "Greater Manchester",
"lsoa11": "Bury 019C",
"msoa11": "Bury 019",
"lsoa21": "Bury 019C",
"msoa21": "Bury 019",
"oa21": "E00025239",
"ruc11": "(England/Wales) Urban major conurbation",
"ruc21": "Urban: Nearer to a major town or city",
"lep1": "Greater Manchester",
"lep2": null,
"codes": {
"admin_district": "E08000002",
"admin_county": "E99999999",
"admin_ward": "E05014159",
"parish": "E43000156",
"parliamentary_constituency": "E14001145",
"parliamentary_constituency_2024": "E14001145",
"ccg": "E38000024",
"ccg_id": "00V",
"ced": "E99999999",
"nuts": "TLD37",
"lsoa": "E01004989",
"msoa": "E02001037",
"lau2": "E08000002",
"pfa": "E23000005",
"nhs_region": "E40000014",
"ttwa": "E30000239",
"national_park": "E65000001",
"bua": "E63008275",
"icb": "E54000057",
"cancer_alliance": "E56000032",
"lsoa11": "E01004989",
"msoa11": "E02001037",
"lsoa21": "E01004989",
"msoa21": "E02001037",
"oa21": "E00025239",
"ruc11": "A1",
"ruc21": "UN1",
"lep1": "E37000015",
"lep2": null
}
}
},
{
"query": "EX165BL",
"result": {
"postcode": "EX16 5BL",
"quality": 1,
"eastings": 294478,
"northings": 112252,
"country": "England",
"nhs_ha": "South West",
"longitude": -3.50197,
"latitude": 50.900064,
"european_electoral_region": "South West",
"primary_care_trust": "Devon",
"region": "South West",
"lsoa": "Mid Devon 005C",
"msoa": "Mid Devon 005",
"incode": "5BL",
"outcode": "EX16",
"parliamentary_constituency": "Tiverton and Minehead",
"parliamentary_constituency_2024": "Tiverton and Minehead",
"senedd_constituency": null,
"senedd_constituency_no": null,
"admin_district": "Mid Devon",
"parish": "Tiverton",
"admin_county": "Devon",
"date_of_introduction": "198001",
"date_of_termination": null,
"index_of_multiple_deprivation": 7072,
"admin_ward": "Tiverton Westexe",
"ced": "Tiverton West",
"ccg": "NHS Devon",
"nuts": "Mid Devon",
"pfa": "Devon & Cornwall",
"nhs_region": "South West",
"ttwa": "Exeter",
"national_park": "England (non-National Park)",
"bua": "Tiverton (Mid Devon)",
"icb": "NHS Devon Integrated Care Board",
"cancer_alliance": "Peninsula",
"lsoa11": "Mid Devon 005C",
"msoa11": "Mid Devon 005",
"lsoa21": "Mid Devon 005C",
"msoa21": "Mid Devon 005",
"oa21": "E00101678",
"ruc11": "(England/Wales) Urban city and town",
"ruc21": "Urban: Nearer to a major town or city",
"lep1": "Heart of the South West",
"lep2": null,
"codes": {
"admin_district": "E07000042",
"admin_county": "E10000008",
"admin_ward": "E05014813",
"parish": "E04003055",
"parliamentary_constituency": "E14001548",
"parliamentary_constituency_2024": "E14001548",
"ccg": "E38000230",
"ccg_id": "15N",
"ced": "E58000304",
"nuts": "TLK43",
"lsoa": "E01020079",
"msoa": "E02004168",
"lau2": "E07000042",
"pfa": "E23000035",
"nhs_region": "E40000006",
"ttwa": "E30000206",
"national_park": "E65000001",
"bua": "E63013547",
"icb": "E54000037",
"cancer_alliance": "E56000014",
"lsoa11": "E01020079",
"msoa11": "E02004168",
"lsoa21": "E01020079",
"msoa21": "E02004168",
"oa21": "E00101678",
"ruc11": "C1",
"ruc21": "UN1",
"lep1": "E37000016",
"lep2": null
}
}
}
]
}

Optional Query Parameters

ParameterDescription
filterA comma-separated whitelist of attributes to include in the result objects. Example: filter=postcode,longitude,latitude. Null responses will remain null, and if no attributes match, an empty object is returned.

Example Filtered Request

POST https://api.postcodes.io/postcodes?filter=postcode,longitude,latitude
Content-Type: application/json

{
"postcodes": ["PR3 0SG", "M45 6GN", "EX165BL"]
}

Example Filtered Response

{
"status": 200,
"result": [
{
"query": "PR3 0SG",
"result": {
"postcode": "PR3 0SG",
"longitude": -2.746251,
"latitude": 53.856635
}
},
{
"query": "M45 6GN",
"result": {
"postcode": "M45 6GN",
"longitude": -2.297263,
"latitude": 53.550467
}
},
{
"query": "EX165BL",
"result": {
"postcode": "EX16 5BL",
"longitude": -3.50197,
"latitude": 50.900064
}
}
]
}