CBS StatLine (Netherlands) API
Free Statistics Netherlands API with no key: query StatLine tables with OData, filtering and paging server-side with $top, $filter and $select. Tested example included.
Endpoint tested and returned HTTP 200 on 21 Aug 2026
What is the CBS StatLine (Netherlands) API?
CBS, Statistics Netherlands, publishes its StatLine tables through a free OData API with no key. Each table has a code such as 83625NED, and its `TypedDataSet` endpoint returns typed rows that can be filtered, projected and paged entirely server-side using standard OData query options.
Using OData instead of a bespoke query language is a real advantage: `$top`, `$skip`, `$filter`, `$select` and `$orderby` all behave the way they do in any OData client, and existing tooling in .NET, Python and JavaScript works without a custom adapter. Each table exposes several endpoints — `TypedDataSet` for values with proper types, `UntypedDataSet` for raw codes, plus `TableInfos` and one endpoint per dimension holding the code-to-label mappings.
The catch is that dimension values are codes with significant whitespace. A region arrives as `"NL01 "` — padded to a fixed width — and a period as `"1995JJ00"`, where `JJ` marks an annual figure and the trailing digits identify the sub-period. Trim before comparing, and join against the dimension endpoints to turn those codes into names. Table codes ending `NED` are Dutch-language; the `ENG` variants carry English labels for a subset of tables.
Quick facts
- Base URL
https://opendata.cbs.nl/ODataApi/odata- Authentication
- No API key or registration. The newer OData v4 service at datasets.cbs.nl is also open and offers the same tables in a different shape.
- Rate limit
- No published limit. Use `$top` and `$filter` rather than pulling whole tables.
- Pricing
- Free. CBS data may be reused, including commercially, with attribution to Statistics Netherlands.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the CBS StatLine (Netherlands) API
Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch a row from a CBS StatLine table
GET https://opendata.cbs.nl/ODataApi/odata/83625NED/TypedDataSet?$top=1&$format=json
curl 'https://opendata.cbs.nl/ODataApi/odata/83625NED/TypedDataSet?$top=1&$format=json'const res = await fetch("https://opendata.cbs.nl/ODataApi/odata/83625NED/TypedDataSet?$top=1&$format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://opendata.cbs.nl/ODataApi/odata/83625NED/TypedDataSet?$top=1&$format=json", timeout=20)
res.raise_for_status()
print(res.json()){
"odata.metadata": "https://opendata.cbs.nl/ODataApi/OData/83625NED/$metadata#Cbs.OData.WebAPI.TypedDataSet",
"value": [
{
"ID": 0,
"RegioS": "NL01 ",
"Perioden": "1995JJ00",
"GemiddeldeVerkoopprijs_1": 93750
}
]
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
{table} | path | Required | StatLine table code, for example `83625NED` for average house sale prices. 83625NED |
$top | query | Optional | Rows to return. 1 |
$skip | query | Optional | Rows to skip, for pagination. 100 |
$filter | query | Optional | OData filter expression over dimension codes. Perioden eq '2023JJ00' |
$select | query | Optional | Columns to return. RegioS,Perioden,GemiddeldeVerkoopprijs_1 |
$format | query | Optional | `json` for JSON output; the service otherwise negotiates. json |
Response fields
odata.metadatastring- URI of the table's metadata document, useful for discovering column names and types.
valuearray- The data rows.
value[].IDinteger- Row index within the table. Not a business key — it shifts when the table is republished.
value[].RegioSstring- Region code, space-padded to a fixed width such as `"NL01 "`. Trim before comparing.
value[].Periodenstring- Period code such as `1995JJ00`; `JJ` marks an annual value, `KW` a quarter, `MM` a month.
value[].<Measure>_nnumber- Measure columns are suffixed with a numeric index, for example `GemiddeldeVerkoopprijs_1`.
What you can build with the CBS StatLine (Netherlands) API
- Chart Dutch house prices, population or employment over time
- Filter a StatLine table to one region without downloading it whole
- Reuse existing OData tooling against official statistics
- Join dimension codes to labels for a readable statistics browser
Common errors and how to fix them
Filter matches nothing
Dimension codes are space-padded.
Fix: Compare against the exact padded value, or use `startswith()` in the filter rather than equality.
404 on the table code
Wrong code, or the table has been withdrawn.
Fix: Check the code in StatLine; `NED` suffixes are Dutch tables, `ENG` are the English-labelled subset.
Columns are unreadable codes
Dimension values are codes, not labels.
Fix: Fetch the dimension endpoints, such as `/RegioS`, and join on the code to get names.
Row IDs shift between runs
`ID` is a positional index, not a key.
Fix: Build your own key from the dimension columns instead of persisting `ID`.
CBS StatLine (Netherlands) API — frequently asked questions
Is the CBS open data API free?
Yes, no key and no registration. Statistics Netherlands publishes all StatLine tables openly, and reuse including commercial use is allowed with attribution.
How do I find a table code?
Browse StatLine on the CBS website; the code appears in the table's URL and metadata — for example 83625NED for average house sale prices. Codes ending NED are Dutch, ENG are the English-labelled tables.
What does 1995JJ00 mean?
It is a CBS period code: the year followed by a type marker and sub-period. `JJ` indicates an annual figure, `KW` a quarter and `MM` a month, so `1995JJ00` is the whole of 1995.
Should I use the v3 or v4 API?
The v3 ODataApi documented here is stable and covers every StatLine table. The newer v4 service at datasets.cbs.nl offers the same data in a different shape; pick one and stay on it, since the response structures differ.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
Alternatives to CBS StatLine (Netherlands) API
If CBS StatLine (Netherlands) does not fit, these government & open data apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Federal Register | Free US Federal Register API with no key: executive orders, rules, notices and proposed regulations with full text search back to 1994. Tested curl example. | No key | Yes | 19 Aug 2026 |
| USAspending | Free US federal spending API with no key: agency budgets, contracts, grants and award data covering trillions in government spending. Tested curl example. | No key | No | 19 Aug 2026 |
| UK Parliament Members | Free UK Parliament Members API with no key: MPs and Lords, constituencies, party affiliation, contact details and voting records. Tested curl example. | No key | No | 19 Aug 2026 |
| UK Police Data | Free UK Police API with no key: street-level crime data, police forces, neighbourhood teams and stop-and-search records by location and month. Tested example. | No key | Yes | 19 Aug 2026 |
| datos.gob.cl | Free Chilean government open data API with no key: 3,100+ datasets, many CC0, with daily-refresh cadences and organisation IDs that are agency codes. Tested example included. | No key | Yes | 21 Aug 2026 |
| CKAN (data.gov.uk) | Free CKAN API with no key: search and download thousands of government open datasets. The same API powers data.gov.uk and hundreds of portals. Tested example. | No key | No | 19 Aug 2026 |
CBS StatLine (Netherlands) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.