API documentation

Klant in beeld

Summary

Use this API to get real-time information about all 7.8 million Dutch households to gain customer insights and increase your conversion rates through personalized and relevant communication.

Methods and endpoints

MethodEndpoint
POSThttps://api.postnl.nl/address/national/insight/v1/basic

Required headers

Header keyHeader valueMandatory/optional
apikeyYour apikeyMandatory
Content-Typeapplication/jsonMandatory

Input parameters

FieldnameMandatory/optionalFormatExample
PostalCodeMandatoryString [6]1234AB
HouseNumberMandatoryString or Number [1-5]123 (only numerical values allowed)
HouseNumberAdditionOptionalString [0-6]A / a / a2
SelectionMandatoryList of strings["Segments", "LivingArea", "CommercialActivity"]

Explanation of field ‘Selection’

With the Selection input field, you can select the fields you want to get.

This input field expects an array of strings, where each string contains the name of the output field you are interested in. There is an extra option: you can also select a full domain by using the name of the domain instead of listing all its corresponding fields. If you mistype or use a fieldname that is not listed, it will be ignored. Please be aware that an additional fee will be charged if more than 10 different fields are requested during the license period.

A requested field that has a classification, can also be extended with a language label, with NL or EN. The response will then return the label itself. For example: PropertyType will return the classified code ‘1'. PropertyTypeNL will return ‘Vrijstaande woning’ and PropertyTypeEN will return ‘Detached house'. So, a selection like [“Segments”, “PropertyType”] or [“SegmentsEN”, “PropertyTypeEN”] are equally valid. Another example is PlotArea, this is always a number (and isn't a classification), therefore PlotAreaNL is ignored. The last column in the below table specifies if the field can be extended with NL or EN.

Output parameters

The expected output depends on the fields you have selected, the Address domain is always returned. 

You can find all output fields, including their descriptions and formatting in the downloadable documentation.

Example request & response

RequestResponse

{ 

  "PostalCode": "1234AB",  

  "HouseNumber": "123", 

  "HouseNumberAddition": "", 

  "Selection": [ 

       "Segment", 

        "SegmentEN", 

        "PropertyType", 

        "PropertyTypeNL", 

        "PropertyValuationClassificationEN", 

        "AgeHeadOfHousehold", 

        "NumberOfCarsInHouseholdEN", 

        "LifestageEN", 

        "GrossFamilyIncome", 

        "GrossFamilyIncomeEN", 

        "NumberOfPeopleWithIncomeFromWork", 

        "WhizeSegment" 

  ] 

} 

[ 

  { 

    "Address": { 

      "PostalCode": "1234AB", 

      "HouseNumber": 123, 

      "HouseNumberAddition": "" 

    }, 

    "Residence": { 

      "PropertyType": 1, 

      "PropertyTypeNL": "Vrijstaande woning", 

      "PropertyValuationClassificationEN": "750.000+" 

    }, 

    "SocioDemographic": { 

      "AgeHeadOfHousehold": 9, 

      "Lifestage": 7, 

      "LifestageEN": "Singles orcoupleswithoutchildren, 50-64" 

    }, 

    "SocioEconomic": { 

      "GrossFamilyIncome": 5, 

      "NumberOfPeopleWithIncomeFromWork": 2, 

      "GrossFamilyIncomeEN": "Morethandoubletheaverage", 

      "NumberOfCarsInHouseholdEN": "Twoor morecars" 

    }, 

    "Segments": { 

      "Segment": "K", 

      "SegmentEN": "K - Life ofLuxury" 

    }

  } 

] 

Possible error codes

HTTP status codeExplenation of the response
200JSON response with requested data. If no address if found, an empty list is returned.
400Error on customer-side. E.g. when not enough parameters are given.
500Error on PostNL side. 

Response labels

You can find all response labels, including their descriptions in the downloadable documentation.