ParseForge Scrapers

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.

Run this scraper See the API call
Total users
2
Monthly active
1
Total runs
44
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

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

  1. Create a free Apify account with $5 in credit.
  2. Open the CBS Netherlands Statistics Scraper.
  3. Set your inputs and any filters, then click Start.
  4. 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

FieldTypeWhat it doesDefault
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 forWhat it isPrice 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.

POST ยท run and get results
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.

input.json
{
  "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