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": 354224,
"northings": 446279,
"country": "England",
"nhs_ha": "North West",
"longitude": -2.723233,
"latitude": 53.873809,
"european_electoral_region": "North West",
"primary_care_trust": "North Lancashire",
"region": "North West",
"lsoa": "Lancaster 001C",
"msoa": "Lancaster 001",
"incode": "0SG",
"outcode": "PR3",
"parliamentary_constituency": "Wyre and Preston North",
"parliamentary_constituency_2024": "Wyre and Preston North",
"admin_district": "Lancaster",
"parish": "Cockerham",
"admin_county": "Lancashire",
"date_of_introduction": "198001",
"admin_ward": "Upper Lune Valley",
"ced": "Lancaster Rural East",
"ccg": "NHS Lancashire and South Cumbria",
"nuts": "Lancaster",
"pfa": "Lancashire",
"nhs_region": "North West",
"ttwa": "Lancaster and Morecambe",
"national_park": null,
"bua": null,
"icb": "NHS Lancashire and South Cumbria Integrated Care Board",
"cancer_alliance": "Lancashire and South Cumbria",
"lsoa11": "Lancaster 001C",
"msoa11": "Lancaster 001",
"lsoa21": "Lancaster 001C",
"msoa21": "Lancaster 001",
"oa21": "E00175466",
"ruc11": "(England/Wales) Rural village in a sparse setting",
"ruc21": "Rural: Hamlet and Isolated dwellings in a sparse setting",
"lep1": "Lancashire",
"lep2": null,
"codes": {
"admin_district": "E07000121",
"admin_county": "E10000017",
"admin_ward": "E05009646",
"parish": "E04005324",
"parliamentary_constituency": "E14000995",
"parliamentary_constituency_2024": "E14000995",
"ccg": "E38000222",
"ccg_id": "02M",
"ced": "E58000659",
"nuts": "TLD45",
"lsoa": "E01025301",
"msoa": "E02005344",
"lau2": "E07000121",
"pfa": "E23000005",
"nhs_region": "E40000010",
"ttwa": "E30000074",
"national_park": "E99999999",
"bua": "E99999999",
"icb": "E54000048",
"cancer_alliance": "E56000014",
"lsoa11": "E01025301",
"msoa11": "E02005344",
"lsoa21": "E01025301",
"msoa21": "E02005344",
"oa21": "E00175466",
"ruc11": "E2",
"ruc21": "RH2",
"lep1": "E37000016",
"lep2": null
}
}
},
{
"query": "M45 6GN",
"result": {
"postcode": "M45 6GN",
"quality": 1,
"eastings": 381471,
"northings": 405968,
"country": "England",
"nhs_ha": "North West",
"longitude": -2.298444,
"latitude": 53.513289,
"european_electoral_region": "North West",
"primary_care_trust": "Bury",
"region": "North West",
"lsoa": "Bury 009E",
"msoa": "Bury 009",
"incode": "6GN",
"outcode": "M45",
"parliamentary_constituency": "Bury South",
"parliamentary_constituency_2024": "Bury South",
"admin_district": "Bury",
"parish": "Bury, unparished area",
"admin_county": null,
"date_of_introduction": "198001",
"admin_ward": "Pilkington Park",
"ced": null,
"ccg": "NHS Greater Manchester",
"nuts": "Greater Manchester North East",
"pfa": "Greater Manchester",
"nhs_region": "North West",
"ttwa": "Manchester",
"national_park": null,
"bua": "Greater Manchester",
"icb": "NHS Greater Manchester Integrated Care Board",
"cancer_alliance": "Greater Manchester",
"lsoa11": "Bury 009E",
"msoa11": "Bury 009",
"lsoa21": "Bury 009E",
"msoa21": "Bury 009",
"oa21": "E00034703",
"ruc11": "(England/Wales) Urban city and town",
"ruc21": "Urban: Nearer to a major town or city",
"lep1": "Greater Manchester",
"lep2": null,
"codes": {
"admin_district": "E08000002",
"admin_county": "E99999999",
"admin_ward": "E05000678",
"parish": "E43000144",
"parliamentary_constituency": "E14000600",
"parliamentary_constituency_2024": "E14000600",
"ccg": "E38000223",
"ccg_id": "02H",
"ced": "E99999999",
"nuts": "TLD33",
"lsoa": "E01005134",
"msoa": "E02001101",
"lau2": "E08000002",
"pfa": "E23000006",
"nhs_region": "E40000010",
"ttwa": "E30000129",
"national_park": "E99999999",
"bua": "E63007827",
"icb": "E54000057",
"cancer_alliance": "E56000009",
"lsoa11": "E01005134",
"msoa11": "E02001101",
"lsoa21": "E01005134",
"msoa21": "E02001101",
"oa21": "E00034703",
"ruc11": "C1",
"ruc21": "UN1",
"lep1": "E37000010",
"lep2": null
}
}
},
{
"query": "EX165BL",
"result": {
"postcode": "EX16 5BL",
"quality": 1,
"eastings": 294373,
"northings": 114872,
"country": "England",
"nhs_ha": "South West",
"longitude": -3.489552,
"latitude": 50.911417,
"european_electoral_region": "South West",
"primary_care_trust": "Devon",
"region": "South West",
"lsoa": "Mid Devon 002C",
"msoa": "Mid Devon 002",
"incode": "5BL",
"outcode": "EX16",
"parliamentary_constituency": "Tiverton and Honiton",
"parliamentary_constituency_2024": "Tiverton and Minehead",
"admin_district": "Mid Devon",
"parish": "Tiverton",
"admin_county": "Devon",
"date_of_introduction": "198001",
"admin_ward": "Cranmore",
"ced": "Tiverton East",
"ccg": "NHS Devon",
"nuts": "Devon",
"pfa": "Devon & Cornwall",
"nhs_region": "South West",
"ttwa": "Tiverton",
"national_park": null,
"bua": "Tiverton",
"icb": "NHS Devon Integrated Care Board",
"cancer_alliance": "Peninsula",
"lsoa11": "Mid Devon 002C",
"msoa11": "Mid Devon 002",
"lsoa21": "Mid Devon 002C",
"msoa21": "Mid Devon 002",
"oa21": "E00140295",
"ruc11": "(England/Wales) Urban city and town in a sparse setting",
"ruc21": "Urban: City and Town",
"lep1": "Heart of the South West",
"lep2": null,
"codes": {
"admin_district": "E07000042",
"admin_county": "E10000008",
"admin_ward": "E05012834",
"parish": "E04003121",
"parliamentary_constituency": "E14000996",
"parliamentary_constituency_2024": "E14001495",
"ccg": "E38000230",
"ccg_id": "15N",
"ced": "E58000169",
"nuts": "TLK43",
"lsoa": "E01020125",
"msoa": "E02004179",
"lau2": "E07000042",
"pfa": "E23000028",
"nhs_region": "E40000006",
"ttwa": "E30000222",
"national_park": "E99999999",
"bua": "E63012263",
"icb": "E54000036",
"cancer_alliance": "E56000003",
"lsoa11": "E01020125",
"msoa11": "E02004179",
"lsoa21": "E01020125",
"msoa21": "E02004179",
"oa21": "E00140295",
"ruc11": "C2",
"ruc21": "UC1",
"lep1": "E37000042",
"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.723233,
"latitude": 53.873809
}
},
{
"query": "M45 6GN",
"result": {
"postcode": "M45 6GN",
"longitude": -2.298444,
"latitude": 53.513289
}
},
{
"query": "EX165BL",
"result": {
"postcode": "EX16 5BL",
"longitude": -3.489552,
"latitude": 50.911417
}
}
]
}