API Documentation
Here you'll find all the information and examples you need to implement our Postcode API in your website or application.
Table of contents
Introduction
The Nederland Postcode API provides access to reliable address data based on Dutch postcodes. All endpoints are GET requests and return JSON.
Base URL
https://api.nederlandpostcode.nl/
Authentication
All requests require authentication with your API key. Send it as a Bearer token in the Authorization header.
Authorization: Bearer npa_live_xxx
All API keys start with a prefix that indicates the environment:
-
npa_live_for live API keys -
npa_test_for test API keys
With an account you can manage multiple projects, each with their own test and live API keys.
Test postcodes
With a test API key (npa_test_) you can try all endpoints for free. You get the same responses as with a live API key, but only for postcodes starting with 1012, 1015 or 1118, with any letter combination. Test requests do not count towards your monthly quota; a test API key does have a limit of 100 requests per day.
Want to get started right away? Use one of these addresses:
| Postcode | House number | Addition | City |
|---|---|---|---|
| 1012PS | 20 | - | Amsterdam |
| 1015CN | 10 | A, B, C, D | Amsterdam |
| 1118BN | 800 | - | Schiphol |
If you use a test API key with any other postcode, you get a 403 Forbidden. For the range endpoints this applies to the given reference address, for /v2/coordinates to the nearest address within the radius, and for /v1/energy-label-radius to the nearest address with an energy label within the radius.
{
"message": "Test API-keys are limited to postcodes starting with 1012, 1015 or 1118. Use a live API-key to access all addresses."
}
Try it right away
Copy one of these requests and send your test API key in the Authorization header:
GET https://api.nederlandpostcode.nl/v1/address?postcode=1015CN&number=10
GET https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&start_number=700&end_number=900
GET https://api.nederlandpostcode.nl/v2/coordinates?latitude=52.305285&longitude=4.750645&radius=50
GET https://api.nederlandpostcode.nl/v2/energy-label?postcode=1012PS&number=20
GET https://api.nederlandpostcode.nl/v1/energy-label-range?postcode=1118BN&number=800&start_number=700&end_number=900
GET https://api.nederlandpostcode.nl/v1/energy-label-radius?latitude=52.305285&longitude=4.750645&radius=150
Endpoints
Below is an overview of the available endpoints of the Nederland Postcode API. All endpoints require authentication with your API key. Click an endpoint for more details and example requests and responses.
| Method | Endpoint | Description |
|---|---|---|
| GET |
/v1/address
|
Retrieve address data based on postcode and house number (+ addition) |
| GET |
/v1/address-range
|
Retrieve all addresses on a street or within a range of house numbers |
| GET |
/v2/coordinates
|
Retrieve all addresses within a radius around a coordinate, sorted by distance |
| GET |
/v2/energy-label
|
Retrieve the current and historical energy labels of one address based on postcode and house number (+ addition) |
| GET |
/v1/energy-label-range
|
Retrieve the most recent energy label of all addresses on a street or within a range of house numbers |
| GET |
/v1/energy-label-radius
|
Retrieve the most recent energy label of all addresses within a radius around a coordinate, sorted by distance |
| GET |
/quota
|
Request current API usage and limits |
GET /v1/address
This endpoint retrieves addresses based on a given postcode and house number, with an optional house number addition. This can be useful for validating addresses or obtaining additional address information. The result is always a list of addresses matching the given criteria, even if only one address is found.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
postcode |
string | yes | Postcode without spaces (e.g. 1015CN) |
number |
integer | yes | House number (e.g. 10) |
addition |
string | no | House number addition (e.g. A) |
attributes[] |
array | no | Extra fields (e.g. coordinates, district, neighborhood) |
Note: The attributes[] parameter can be used to request additional information.
Note: If the addition parameter is omitted, all addresses for the given postcode and house number are returned. If the parameter is provided but empty, addresses without an addition are searched for.
Supported extra fields
The following extra fields can be requested via the attributes[] parameter:
| Parameter | Description | Example |
|---|---|---|
coordinates |
Coordinates of the location | 52.30528553688755, 4.750645160863609 |
district |
Name of the district | Grachtengordel-West |
neighborhood |
Name of the neighborhood | Bloemgrachtbuurt |
function |
Function of the location | woonfunctie |
location_status |
Status of the location | verblijfsobject in gebruik |
property_status |
Status of the building | pand in gebruik |
surface_area |
Surface area of the building | 120 |
construction_year |
Construction year of the building | 1990 |
Example with a single address
This example retrieves the address for postcode 1012RJ and house number 147 with coordinates, district and neighborhood name. There is only one address for this combination.
GET https://api.nederlandpostcode.nl/v1/address?postcode=1012RJ&number=147&attributes[]=coordinates&attributes[]=district&attributes[]=neighborhood
{
"data": [
{
"postcode": "1012RJ",
"number": 147,
"addition": null,
"street": "Nieuwezijds Voorburgwal",
"city": "Amsterdam",
"municipality": "Amsterdam",
"province": "Noord-Holland",
"country": "Nederland",
"details": {
"district": {
"official": "Burgwallen-Nieuwe Zijde",
"name": "Burgwallen-Nieuwe Zijde"
},
"neighborhood": "Nieuwe Kerk e.o."
},
"coordinates": {
"latitude": 52.37316211827917,
"longitude": 4.890902032461384
}
}
]
}
Example with multiple addresses
This example retrieves the address for postcode 1015CN and house number 10. There are 4 addresses for this combination.
GET https://api.nederlandpostcode.nl/v1/address?postcode=1015CN&number=10
{
"data": [
{
"postcode": "1015CN",
"number": 10,
"addition": "A",
"street": "Keizersgracht",
"city": "Amsterdam",
"municipality": "Amsterdam",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1015CN",
"number": 10,
"addition": "B",
"street": "Keizersgracht",
"city": "Amsterdam",
"municipality": "Amsterdam",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1015CN",
"number": 10,
"addition": "C",
"street": "Keizersgracht",
"city": "Amsterdam",
"municipality": "Amsterdam",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1015CN",
"number": 10,
"addition": "D",
"street": "Keizersgracht",
"city": "Amsterdam",
"municipality": "Amsterdam",
"province": "Noord-Holland",
"country": "Nederland"
}
]
}
Example with no address
This example retrieves the address for postcode 1234AB and house number 9999. There is no address for this combination. The response contains an empty list with the 200 OK status code.
GET https://api.nederlandpostcode.nl/v1/address?postcode=1234AB&number=9999
{
"data": []
}
GET /v1/address-range
The address range endpoint allows you to retrieve all addresses on the same street as a given address. The provided postcode and house number are used to determine the street.
This is useful, for example, when you want to retrieve all residential units of a homeowners' association (VvE), apartment complex, or a particular street. Because a street can contain multiple postcode areas, the returned addresses may have different postcodes. You can use start_number and end_number to limit the results to a specific range of house numbers. The results are paginated using page and per_page. Use attributes[]=coordinates to also receive the coordinates of each address.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
postcode |
string | yes | Postcode without spaces (e.g. 1015CN) |
number |
integer | yes | House number (e.g. 10) |
start_number |
integer | no | The lowest house number to include in the address range. Must be provided together with end_number. |
end_number |
integer | no | The highest house number to include in the address range. Must be provided together with start_number. |
page |
integer | no | The page number to retrieve. Defaults to 1. |
per_page |
integer | no | The number of addresses returned per page. Defaults to 25, with a maximum of 50. |
attributes[] |
array | no | Send coordinates to also receive the coordinates (latitude and longitude) of each address. Other attributes, such as district, are not supported by this endpoint. |
Example
The request below uses the provided postcode and house number as the reference address and retrieves the first page with up to 5 addresses on the same street.
GET https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&per_page=5&page=1
{
"data": [
{
"postcode": "1118BG",
"number": 101,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1118BG",
"number": 103,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1118BG",
"number": 105,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1118BG",
"number": 107,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland"
},
{
"postcode": "1118BG",
"number": 109,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland"
}
],
"links": {
"first": "https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&page=1&per_page=5",
"last": "https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&page=41&per_page=5"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 41,
"path": "https://api.nederlandpostcode.nl/v1/address-range",
"per_page": 5,
"to": 5,
"total": 203
}
}
Practical example
Suppose you want to automatically create the residential units of a homeowners' association (VvE). The administrator enters an address they know, for example postcode 1118BN and house number 800. The API uses this address to determine the corresponding street. You can then use start_number and end_number to request, for example, house numbers 700 through 900. The API then returns all addresses within this range, including their corresponding postcodes. This is particularly useful because a street often contains multiple postcode areas: a range of, for example, 10 to 20 house numbers may share the same postcode, after which the next range may have a different postcode.
Pagination
A street can contain many addresses. Therefore, the results are automatically divided across multiple pages. Use page to request a specific page and per_page to set the number of results per page. The maximum value for per_page is 50.
GET https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&per_page=25&page=2
Filter by house number
You can optionally specify a range of house numbers using start_number and end_number. Only addresses with a house number within this range will be returned. When start_number is provided, end_number is also required, and vice versa. Leave both parameters out to retrieve all addresses on the specified street.
GET https://api.nederlandpostcode.nl/v1/address-range?postcode=1118BN&number=800&start_number=700&end_number=900
The meta section of the response contains pagination information, including the current page number, the number of results per page, the total number of pages, and the total number of addresses found. The links.first and links.last fields contain the URLs for the first and last page respectively.
GET /v2/coordinates
This endpoint retrieves all addresses within a radius around the given coordinates (latitude and longitude). This can be useful for finding addresses near a specific location, for example the location of a user or a point on a map.
The results are sorted by distance to the given point, nearest address first. Addresses at the same distance, such as apartments in the same building, are sorted by postcode, house number and addition. Each address always includes its coordinates and the distance to the given point. The attributes[] parameter is not supported by this endpoint.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude |
float | yes | Latitude of the center point (e.g. 52.305285), between -90 and 90 |
longitude |
float | yes | Longitude of the center point (e.g. 4.750645), between -180 and 180 |
radius |
integer | yes | The radius in meters around the given point. Minimum 1, maximum 1000. |
page |
integer | no | The page number to retrieve. Defaults to 1. |
per_page |
integer | no | The number of addresses returned per page. Defaults to 10, with a maximum of 25. |
Example
The request below retrieves all addresses within 50 meters of Schiphol Boulevard 800 (latitude: 52.305285, longitude: 4.750645).
GET https://api.nederlandpostcode.nl/v2/coordinates?latitude=52.305285&longitude=4.750645&radius=50
{
"data": [
{
"postcode": "1118BN",
"number": 800,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland",
"coordinates": {
"latitude": 52.30528553688755,
"longitude": 4.750645160863609
},
"distance": 0
},
{
"postcode": "1118BN",
"number": 810,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"municipality": "Haarlemmermeer",
"province": "Noord-Holland",
"country": "Nederland",
"coordinates": {
"latitude": 52.30556719835437,
"longitude": 4.750419372039126
},
"distance": 35
}
],
"links": {
"first": "https://api.nederlandpostcode.nl/v2/coordinates?latitude=52.305285&longitude=4.750645&radius=50&page=1",
"last": "https://api.nederlandpostcode.nl/v2/coordinates?latitude=52.305285&longitude=4.750645&radius=50&page=1"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.nederlandpostcode.nl/v2/coordinates",
"per_page": 10,
"to": 2,
"total": 2
}
}
The distance field is the distance in whole meters between the given point and the address.
Pagination
Use page to request a specific page and per_page to set the number of results per page (maximum 25). The meta and links sections are the same as those of the address range endpoint; meta.total counts all addresses within the radius.
No addresses found or invalid parameters
If there are no addresses within the radius, you get a 200 OK with an empty data array. If a required parameter is missing or a value is invalid, for example a radius larger than 1000 meters, you get a 422 Unprocessable Content with a validation error.
GET /v2/energy-label
This endpoint retrieves all energy labels of one specific address. Besides the validated address (street and city), you receive the full energy_labels array: not only the current label, but also any historical labels of the same building, including detailed energy performance data.
Want to retrieve the energy labels of an entire street or a range of house numbers at once? Use the /v1/energy-label-range endpoint instead. Looking for the energy labels of all addresses near a location? Use the /v1/energy-label-radius endpoint.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
postcode |
string | yes | Postcode without spaces (e.g. 1015CN) |
number |
integer | yes | House number (e.g. 10) |
addition |
string | no | House number addition (e.g. A) |
attributes[] |
array | no | Send coordinates to also receive the coordinates (latitude and longitude) of the address. Other attributes are not supported. |
Example with a single address
This example retrieves the energy labels for postcode 1118BN and house number 800.
GET https://api.nederlandpostcode.nl/v2/energy-label?postcode=1118BN&number=800
{
"data": {
"postcode": "1118BN",
"number": 800,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"energy_labels": [
{
"registration_date": "30-08-2022",
"inspection_date": "02-08-2022",
"valid_until_date": "02-08-2032",
"status": "bestaand",
"construction_type": "utiliteitsbouw",
"building_type": null,
"energy_label": "A+++",
"calculation_type": "NTA 8800:2022 (basisopname utiliteitsbouw)",
"inspection_type": "basis",
"construction_year": 2019,
"thermal_zone_area": 5648.39,
"compactness": 1.16,
"energy_demand": 98.4,
"energy_demand_requirement": null,
"primary_fossil_energy": 55.48,
"primary_fossil_energy_requirement": null,
"primary_fossil_energy_emg": null,
"renewable_energy_share": 55.3,
"renewable_energy_share_requirement": null,
"renewable_energy_share_emg": null,
"calculated_energy_consumption": 55.48,
"heat_demand": 55.02,
"calculated_co2_emission": 13.01,
"temperature_excess": 0,
"temperature_excess_requirement": null
}
]
}
}
Example with an address without an energy label
If the address exists but has no registered energy label, that is not an error: you get a 200 OK with the address fields filled in and an empty energy_labels array. So check for an empty array rather than for an error code.
{
"data": {
"postcode": "...",
"number": ...,
"addition": null,
"street": "...",
"city": "...",
"energy_labels": []
}
}
Example with no or multiple addresses
If you retrieve an energy label for a non-existent address, or for a postcode-house number combination that yields multiple addresses, you get an error with status code 422 Unprocessable Content. For multiple addresses, send an addition to select the right one. To select the address without an addition, send an empty addition=.
{
"message": "No address found for the given postcode and number."
}
{
"message": "Multiple addresses found for the given postcode and number."
}
A detailed explanation of every field in the response, such as the BENG indicators and the possible label classes, can be found in the Energy label API documentation on EnergielabelAPI.nl (in Dutch).
GET /v1/energy-label-range
The energy label range endpoint lets you retrieve the energy labels of multiple addresses in a single request: of an entire street or of a specific range of house numbers on that street. This is useful, for example, for an apartment complex, a homeowners' association (VvE) or a housing block.
Just like with the address range endpoint, the provided postcode and house number are used to determine the street. Because a street can contain multiple postcode areas, the returned addresses may have different postcodes.
This endpoint differs from /v2/energy-label in a few ways:
- For each address you only receive the most recent energy label, as an
energy_labelobject (singular), without history. If you need the full label history of an address, use /v2/energy-label. - Only addresses with at least one registered energy label are returned. A house number without a label does not appear in the response.
- The results are paginated using
pageandper_page.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
postcode |
string | yes | Postcode without spaces (e.g. 1015CN) |
number |
integer | yes | House number (e.g. 10) |
start_number |
integer | no | The lowest house number to include in the address range. Must be provided together with end_number. |
end_number |
integer | no | The highest house number to include in the address range. Must be provided together with start_number. |
page |
integer | no | The page number to retrieve. Defaults to 1. |
per_page |
integer | no | The number of addresses returned per page. Defaults to 10, with a maximum of 25. |
attributes[] |
array | no | Send coordinates to also receive the coordinates (latitude and longitude) of the address. Other attributes are not supported. |
Example
The request below uses postcode 1118BN and house number 800 as the reference address and retrieves the energy labels of house numbers 700 through 900 on the same street. Only the addresses with a registered energy label are returned.
GET https://api.nederlandpostcode.nl/v1/energy-label-range?postcode=1118BN&number=800&start_number=700&end_number=900
{
"data": [
{
"postcode": "1118BN",
"number": 701,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"energy_label": {
"registration_date": "30-04-2026",
"inspection_date": "23-03-2026",
"valid_until_date": "23-03-2036",
"status": "bestaand",
"construction_type": "utiliteitsbouw",
"building_type": null,
"energy_label": "A+",
"calculation_type": "NTA 8800:2024 (detailopname utiliteitsbouw)",
"inspection_type": "detail",
"construction_year": 2015,
"thermal_zone_area": 25941.84,
"compactness": 0.51,
"energy_demand": 54.33,
"energy_demand_requirement": null,
"primary_fossil_energy": 162.4,
"primary_fossil_energy_requirement": null,
"primary_fossil_energy_emg": null,
"renewable_energy_share": 23.5,
"renewable_energy_share_requirement": null,
"renewable_energy_share_emg": null,
"calculated_energy_consumption": 162.39,
"heat_demand": 7.31,
"calculated_co2_emission": 34.25,
"temperature_excess": null,
"temperature_excess_requirement": null
}
},
{
"postcode": "1118BN",
"number": 800,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"energy_label": {
"registration_date": "30-08-2022",
"inspection_date": "02-08-2022",
"valid_until_date": "02-08-2032",
"status": "bestaand",
"construction_type": "utiliteitsbouw",
"building_type": null,
"energy_label": "A+++",
"calculation_type": "NTA 8800:2022 (basisopname utiliteitsbouw)",
"inspection_type": "basis",
"construction_year": 2019,
"thermal_zone_area": 5648.39,
"compactness": 1.16,
"energy_demand": 98.4,
"energy_demand_requirement": null,
"primary_fossil_energy": 55.48,
"primary_fossil_energy_requirement": null,
"primary_fossil_energy_emg": null,
"renewable_energy_share": 55.3,
"renewable_energy_share_requirement": null,
"renewable_energy_share_emg": null,
"calculated_energy_consumption": 55.48,
"heat_demand": 55.02,
"calculated_co2_emission": 13.01,
"temperature_excess": 0,
"temperature_excess_requirement": null
}
}
],
"links": {
"first": "https://api.nederlandpostcode.nl/v1/energy-label-range?postcode=1118BN&number=800&start_number=700&end_number=900&page=1",
"last": "https://api.nederlandpostcode.nl/v1/energy-label-range?postcode=1118BN&number=800&start_number=700&end_number=900&page=1"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.nederlandpostcode.nl/v1/energy-label-range",
"per_page": 10,
"to": 2,
"total": 2
}
}
The energy_label object contains the same fields as the items in the energy_labels array of /v2/energy-label.
Pagination
Use page to request a specific page and per_page to set the number of results per page (maximum 25). The meta and links sections are the same as those of the address range endpoint; meta.total only counts the addresses with an energy label. Leave out start_number and end_number to retrieve the energy labels of the entire street.
No address or no energy labels found
If the reference address cannot be found, you get a 422 Unprocessable Content with the message No address found for the given postcode and number. If there are no addresses with an energy label within the given range, you get a 200 OK with an empty data array.
A detailed explanation of every field in the response, such as the BENG indicators and the possible label classes, can be found in the Energy label API documentation on EnergielabelAPI.nl (in Dutch).
GET /v1/energy-label-radius
The energy label radius endpoint lets you retrieve the energy labels of all addresses within a radius around a coordinate in a single request. This is useful, for example, to show the energy labels in a neighborhood on a map, to compare a home with its surroundings or to analyze an area.
The results are sorted by distance to the given point, nearest address first. Addresses at the same distance, such as apartments in the same building, are sorted by postcode, house number and addition. Only have an address? Retrieve its coordinates first via the address endpoint with attributes[]=coordinates.
This endpoint differs from the other energy label endpoints in a few ways:
- For each address you only receive the label class of the most recent energy label, as a string in the
energy_labelfield (e.g."A+"), without the other energy performance data. If you need all data or the label history of an address, use /v2/energy-label. - Only addresses with at least one registered energy label are returned. A house number without a label does not appear in the response.
- Each address always includes its
coordinatesand thedistanceto the given point. Theattributes[]parameter is not supported by this endpoint. - The results are paginated using
pageandper_page.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude |
float | yes | Latitude of the center point (e.g. 52.305285), between -90 and 90 |
longitude |
float | yes | Longitude of the center point (e.g. 4.750645), between -180 and 180 |
radius |
integer | yes | The radius in meters around the given point. Minimum 1, maximum 1000. |
page |
integer | no | The page number to retrieve. Defaults to 1. |
per_page |
integer | no | The number of addresses returned per page. Defaults to 10, with a maximum of 25. |
Example
The request below retrieves the energy labels of all addresses within 150 meters of Schiphol Boulevard 800 (latitude: 52.305285, longitude: 4.750645). Only the addresses with a registered energy label are returned.
GET https://api.nederlandpostcode.nl/v1/energy-label-radius?latitude=52.305285&longitude=4.750645&radius=150
{
"data": [
{
"postcode": "1118BN",
"number": 800,
"addition": null,
"street": "Schiphol Boulevard",
"city": "Schiphol",
"coordinates": {
"latitude": 52.30528553688755,
"longitude": 4.750645160863609
},
"distance": 0,
"energy_label": "A+++"
},
{
"postcode": "1118CX",
"number": 308,
"addition": null,
"street": "Evert van de Beekstraat",
"city": "Schiphol",
"coordinates": {
"latitude": 52.30482565215747,
"longitude": 4.749222421097077
},
"distance": 110,
"energy_label": "A+"
},
{
"postcode": "1118CL",
"number": 1,
"addition": null,
"street": "Evert van de Beekstraat",
"city": "Schiphol",
"coordinates": {
"latitude": 52.30549394509628,
"longitude": 4.752529225036044
},
"distance": 130,
"energy_label": "A+"
}
],
"links": {
"first": "https://api.nederlandpostcode.nl/v1/energy-label-radius?latitude=52.305285&longitude=4.750645&radius=150&page=1",
"last": "https://api.nederlandpostcode.nl/v1/energy-label-radius?latitude=52.305285&longitude=4.750645&radius=150&page=1"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"path": "https://api.nederlandpostcode.nl/v1/energy-label-radius",
"per_page": 10,
"to": 3,
"total": 3
}
}
The distance field is the distance in whole meters between the given point and the address. The energy_label field contains the label class of the most recent energy label (A+++++ to G), or null if no label class is known for that label.
Pagination
Use page to request a specific page and per_page to set the number of results per page (maximum 25). The meta and links sections are the same as those of the address range endpoint; meta.total only counts the addresses with an energy label within the radius.
No energy labels found or invalid parameters
If there are no addresses with an energy label within the radius, you get a 200 OK with an empty data array. If a required parameter is missing or a value is invalid, for example a radius larger than 1000 meters, you get a 422 Unprocessable Content with a validation error.
GET /quota
This endpoint retrieves the current API usage and limits for the authenticated user. This can be useful for monitoring how many requests are still available for the current period.
Note: this endpoint does not have a version number in the URL.
It can take up to 5 minutes before usage is up to date.
Quota example
This example shows the current API usage and limits for the authenticated user.
GET https://api.nederlandpostcode.nl/quota
{
"data": {
"quota": {
"used": 250,
"limit": 2000
}
}
}
Status codes and error handling
The API uses standard HTTP status codes to indicate the outcome of a request. Below is an overview of the most common status codes and their meaning.
| Code | Explanation |
|---|---|
| 200 | Request processed successfully. |
| 401 | Unauthorized. Invalid or missing API key. |
| 403 | Forbidden. A test API key was used with a postcode outside the test postcodes. |
| 404 | Wrong API endpoint used. |
| 422 | Invalid request. Check the parameters you entered. |
| 429 | Too many requests: the rate limit or the monthly quota has been exceeded. |
Example of a validation error
This example shows a response when required fields are missing from the request. In this case the postcode and number fields are missing.
{
"message": "The postcode field is required. (and 1 more error)",
"errors": {
"postcode": [
"The postcode field is required."
],
"number": [
"The number field is required."
]
}
}
Rate Limiting
To prevent abuse of the API, a rate limiting policy is in place. Each API key has a limit on the number of requests that can be made within a given time period. If this limit is exceeded, the API will return a 429 Too Many Requests status code.
There is a default limit per API key to prevent server overload and to protect your API key against unintended high usage. Contact our support team if you need a higher limit for your use case.
There is also a monthly quota on the total number of requests, depending on your subscription. You can view your current usage and increase your limits by logging in to your account dashboard.
Example of exceeding the per-second limit
This example shows a response when the per-second rate limit has been exceeded. In this case the limit is set to 10 requests per second.
{
"message": "Rate limit exceeded.",
"quota": {
"strategy": "per_second",
"limit": 10
}
}
Example of exceeding the monthly limit
This example shows a response when the monthly API quota has been exceeded. In this case the limit is set to 2000 requests per month.
{
"message": "Monthly API quota exceeded.",
"quota": {
"strategy": "per_month",
"limit": 2000
}
}
Plugins
This list contains plugins developed by us and our partners. These plugins make it easier to integrate address validation into your webshop or website.
The plugins for WordPress and other e-commerce platforms are maintained by Postcode Checkout; they also provide support and help with installing these plugins.
Have you developed a plugin yourself? Get in touch with us so we can list it here.
| Name | Developer | Link | Latest version | Last updated |
|---|---|---|---|---|
| WooCommerce | Postcode Checkout | View WooCommerce plugin | 3.0.9.4 | 05-05-2026 |
| Contact Form 7 | Postcode Checkout | View Contact Form 7 plugin | 2.1.2 | 07-05-2026 |
| PrestaShop 9 | Postcode Checkout | View PrestaShop 9 plugin | 3.9.6 | 23-09-2026 |
| Magento 2 | Postcode Checkout | View Magento 2 plugin | 1.1.3 | 15-09-2026 |
| CS-Cart 4 | Postcode Checkout | View CS-Cart 4 plugin | 3.1.2 | 17-09-2026 |
| OpenCart 4 | Postcode Checkout | View OpenCart 4 plugin | 1.0.7 | 10-08-2026 |
| Shopware 6 | Postcode Checkout | View Shopware 6 plugin | 1.0.6 | 10-08-2026 |
| PHP | Nederland Postcode API | View PHP plugin | 2.0.0 | 05-09-2026 |
| Laravel | Nederland Postcode API | View Laravel plugin | 1.4.0 | 05-09-2026 |