Which postcode API should I choose: PostcodeAPI.nu, PostNL or something else?
For most SME applications, PostcodeAPI.nu is a good starting point: simple onboarding, a free tier for low volumes and a clean REST API. Postcode.nl is more commercially oriented and offers a richer dataset (including ownership information and historical address versions), which is worth considering if you need more than address autocomplete. The PostNL Postcode API is PostNL's official offering, useful if you already ship with PostNL and want your address data to match how PostNL uses it. For enterprise volumes, or when you need direct BAG conformity, we would typically integrate directly with the Basic Registry of Addresses and Buildings via PDOK. We advise per project, as it depends heavily on volume, use case and the other systems the data needs to flow into.
Can a postcode API also be used offline?
Yes. For applications where offline working matters, such as field service apps, inspections or deliveries in rural areas, we build a hybrid. A local subset of the BAG (the Netherlands' official address register) is periodically downloaded to the device. As long as there is a connection, the app uses the online API; if that drops out, it quietly switches over to the local dataset. We determine the sync frequency and the size of the subset based on your working area and device storage. For a fleet of tablets across the Netherlands, a full-NL BAG subset works well; for mobile-first apps with storage constraints, we cut it down by region. When back online, changes (newly created addresses, location adjustments) automatically sync back to the server, with a clear audit trail of what was entered when, and in which offline session.
What determines whether a postcode API becomes expensive?
Mainly the number of API calls. Many teams send a lookup call on every keystroke, which adds up quickly for a webshop with considerable traffic. With debouncing (waiting until the user has paused typing), caching at postcode level, and a second layer at house-number level, we can often reduce the number of calls substantially. Another point that is often overlooked is bot and crawler traffic hitting lookup endpoints without ever resulting in an order. For heavily used endpoints we put rate limiting per IP address and CAPTCHA fallbacks in place. For very high volumes, an in-house BAG export becomes worthwhile: there is an upfront investment, but afterwards there are no variable costs and you are not tied to one provider's pricing.
How do we handle international addresses?
Dutch postcode APIs only cover the Netherlands. For cross-border customers, such as international webshops, logistics and SaaS, we combine a Dutch provider for Dutch addresses with the Google Address Validation API or Loqate for the rest of the world. We choose based on the countries that actually appear in your order flow and on privacy considerations (Loqate is a European provider, while Google processes data in its own data centres). Address normalisation ensures your database always ends up with the same fields, regardless of which source the data came from, which saves considerable effort in downstream integrations with carriers, invoicing software and CRM.
What is the difference between BAG direct and a postcode provider?
The BAG (Basisregistratie Adressen en Gebouwen, the Dutch Key Register of Addresses and Buildings) is the official Dutch register, maintained by the Kadaster (Land Registry) and available via PDOK. Postcode providers also use BAG data as their basis, but they add a user-friendly API on top, with fast autocomplete endpoints and a commercial SLA. For most applications, a provider is quicker and simpler to integrate. Connecting directly to the BAG via PDOK is worthwhile when compliance requirements apply (property, municipalities, housing associations), at very high volumes where provider costs become significant, or if you already use other PDOK data, such as parcels, buildings or WOZ (property valuation) data, and it makes sense to draw from the same source.
What if the chosen API goes down or hits its rate limit?
We build for that structurally. A retry mechanism with exponential backoff absorbs brief hiccups. In the event of a longer outage, the application falls back to manual entry or a second provider. For mission-critical applications we often run two providers in parallel (the first hits its rate limit, the second takes over) or a hybrid with local fallback. We actively monitor response times and error rates so you can spot issues before your users do. Alerts go through your existing channel, whether that is Slack, Teams or your own monitoring platform.
Do you work together with our in-house IT team?
Almost always. We deliver not only working code but also documentation, a runbook for incidents and a knowledge transfer in the final sprint. Your team can then maintain the integration itself, or we can do so under an ongoing maintenance contract. Often it is a mix: you handle day-to-day operations, while we remain available for extensions, provider changes and BAG version upgrades. The code lives in your own repository, following the same standards (linting, tests, CI) as the rest of your codebase, with no vendor lock-in and no separate stack to learn.