CBS Netherlands Statistics Scraper
parseforge/cbs-netherlands-statistics-scraper
EducationAutomationOther
Scrapes CBS OpenData tables by table ID and returns each row of the TypedDataSet as a flat object. Supports up to 1,000,000 records per run.
- Total users
- 2
- Monthly active
- 1
- Total runs
- 44
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
CBS Netherlands Statistics Scraper
Scrape CBS Netherlands statistics tables by table ID, up to a million records per run. Each row returns every column of the TypedDataSet, ready for CSV, JSON, Excel, or XML export. No API key or registration needed.
CBS Netherlands publishes official Dutch statistics as OpenData tables, but downloading them manually means clicking through the portal and stitching files together. This Actor reads a table's TypedDataSet directly from the CBS OpenData API and returns each record as a flat row, so you can analyze population, economy, or labor data in minutes.
| Who uses it | What they scrape CBS Netherlands for |
|---|---|
| Market researchers | Pull demographic or economic indicators for trend reports. |
| Data analysts | Feed official Dutch statistics into dashboards or models. |
| Journalists | Verify figures on population, employment, or inflation. |
| Government policy staff | Monitor key metrics across regions or time periods. |
What it does
This Actor collects all rows and columns from a CBS OpenData table identified by its table ID, and returns each record as a flat object.
- ๐ Table ID input: provide any CBS OpenData table identifier, such as 37556eng, and the Actor fetches its full TypedDataSet.
- ๐ข Record limit: set maxItems from 1 to 1,000,000 to control how many rows are returned per run.
- ๐ค Flat output: every row includes all columns from the table, with no nested structures, ready for export.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with CBS Netherlands data
๐ Build a regional dashboard.
A data analyst scrapes a CBS table on municipal population and loads the flat rows into a BI tool to track changes by province.
๐ Monitor economic indicators.
A market researcher pulls a table on consumer prices each month and compares the latest figures against historical data.
๐๏ธ Fact-check a news story.
A journalist enters the table ID for unemployment statistics and verifies the exact numbers before publication.
๐๏ธ Support policy analysis.
A government staffer scrapes a table on housing construction and uses the records to evaluate regional targets.
Why choose this scraper
| What you get | |
|---|---|
| Official source | Data comes directly from Statistics Netherlands, the authoritative Dutch statistical agency. |
| No API key | The Actor uses the public CBS OpenData endpoint, so no registration or authentication is required. |
| Full table coverage | Every column in the TypedDataSet is included in each returned record. |
| Scalable | Fetch up to 1,000,000 records in a single run for large tables. |
How it compares
No other Store actor targets CBS Netherlands the same way, so the honest comparison is with the alternatives teams actually weigh.
| CBS Netherlands Statistics Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When CBS Netherlands changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor with a single CBS OpenData table ID and a maximum record count; the Actor reads the table's TypedDataSet and returns each row as a flat object. The Input tab lists every parameter.
A first run with the defaults:
{
"tableId": "37556eng",
"maxItems": 10
}
A larger pull:
{
"tableId": "37556eng",
"maxItems": 200
}
Pricing
Pay-per-result: $0.005 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.50 |
| 1,000 results | $5.00 |
| 10,000 results | $50.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the CBS Netherlands Statistics Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to CBS Netherlands through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/cbs-netherlands-statistics-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the table ID is correct and that the table has data. Some tables may be empty or retired. Try a known ID like 37556eng to test.
The run fails with an invalid table ID error.
Visit https://opendata.cbs.nl and search for the dataset. Copy the exact identifier from the URL, including the language suffix like 'eng' or 'ned'.
I only got a few records but expected more.
Increase the maxItems input up to 1,000,000. If the table itself has fewer rows, the Actor returns all available records.
The output has Dutch column names but I need English.
Use a table ID ending in 'eng' for English metadata. If the table only exists in Dutch, you can rename columns after export.
FAQ
| Question | Answer |
|---|---|
| Where do I find the table ID? | Visit https://opendata.cbs.nl, browse or search for a dataset, and copy the identifier from the URL or the table's metadata page. The ID often looks like '37556eng'. |
| Do I need an API key or account? | No. The Actor uses the public CBS OpenData API, which does not require authentication. |
| What format is the output? | Each record is a flat JSON object with all columns from the table's TypedDataSet. You can export the dataset to CSV, JSON, Excel, or XML from the Apify platform. |
| Can I scrape multiple tables in one run? | This Actor is designed for one table ID per run. To scrape multiple tables, run the Actor separately for each ID or use multiple runs. |
| How many records can I get? | You can set maxItems up to 1,000,000. If the table has fewer rows, the Actor returns all available records. |
| What if the table has more than a million rows? | Set maxItems to 1,000,000 and run the Actor multiple times, or contact support for larger extractions. |
| Is the data in English or Dutch? | The language depends on the table ID you choose. IDs ending in 'eng' return English metadata and column names; others may return Dutch. |
| Can I filter columns? | The Actor returns all columns from the TypedDataSet. You can filter columns after export using tools like Excel or pandas. |
| How often is the data updated? | The Actor fetches live data from CBS OpenData each time it runs, so you always get the latest published figures. |
| What if I get an error for an invalid table ID? | Double-check the ID on the CBS OpenData portal. The Actor will fail with a clear message if the ID does not exist. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Statistics Netherlands (Centraal Bureau voor de Statistiek). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| tableId | string | The CBS OpenData table identifier to scrape (for example 37556eng). Find table IDs at https://opendata.cbs.nl. | 37556eng |
| maxItems | integer | How many statistics records to collect per run. | 10 |
Pricing
from $4.52 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.00452 to $0.005 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~cbs-netherlands-statistics-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run CBS Netherlands Statistics Scraper on Apify All scrapers
