How to get Dutch public tenders from TenderNed into a spreadsheet, with daily alerts
Updated 2026-10-28 · Tool used: TenderNed Netherlands Tenders Scraper on Apify · Price: $2.50 per 1,000 notices; failed and empty runs and notices already seen are free
TenderNed is the national procurement platform of the Netherlands. Every Dutch public buyer publishes its notices there, including many contracts below the EU threshold that never appear on TED. The website search works for one person, but bid teams that track several keywords end up copying notices into a sheet by hand.
This guide shows how to pull TenderNed notices from the official keyless open data API (CC0) into CSV, Excel or JSON, filter them by keyword, publication date, assignment type and open deadline, and run the search every morning so you only see notices that are new since the last run.
Open TenderNed Netherlands Tenders Scraper on Apify →Steps
- Add search terms to
keywords(Dutch or English, e.g.software,ICT,schoonmaak) or leave it empty for every notice in the date window. - Set
publishedWithinDaysor an exactpublishedFrom/publishedTorange, and turn ononlyOpento drop notices whose deadline has passed. - Schedule it daily with
onlyNewon and astateKeyper saved search; each run then returns only new notices, and already-seen ones are free.
Example input
{
"keywords": [
"software"
],
"publishedWithinDays": 14,
"maxResults": 20,
"onlyOpen": true
}
Example output (one item, shortened)
{
"source": "tenderned",
"noticeId": "443740",
"solicitationNumber": "611473",
"title": "Managed Services en Consultancy voor de ServiceNow Omgeving",
"description": "LVNL wenst één geschikte dienstverlener te selecteren die LVNL zelfstandig en langdurig kan ondersteunen bij het beheer, onderhoud en de doorontwikkeling van het ServiceNow-platform...",
"publicationDate": "2026-10-10",
"deadlineDate": "2026-11-30",
"isOpen": true,
"buyerName": "Luchtverkeersleiding Nederland",
"buyerCountry": "Netherlands",
"estimatedValue": null,
"currency": null,
"noticeUrl": "https://www.tenderned.nl/aankondigingen/overzicht/443740",
"documentsUrl": "https://www.tenderned.nl/aankondigingen/overzicht/443740",
"cpvOrNaics": "72000000-5",
"naicsCode": null,
"classificationCode": "72000000-5",
"procedureType": "Openbaar",
"noticeType": "Aankondiging opdracht",
"setAside": null,
"placeOfPerformance": "Groot-Amsterdam",
"scrapedAt": "2026-10-11T07:00:00.000Z"
}
Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.
Run it from code
Python
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"keywords": [
"software"
],
"publishedWithinDays": 14,
"maxResults": 20,
"onlyOpen": true
}
run = client.actor("tinyrex/tenderned-tenders-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)JavaScript / Node.js
import { ApifyClient } from 'apify-client'; // npm i apify-client
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/tenderned-tenders-scraper').call({
"keywords": [
"software"
],
"publishedWithinDays": 14,
"maxResults": 20,
"onlyOpen": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);curl (no SDK)
# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~tenderned-tenders-scraper/run-sync-get-dataset-items?format=csv" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["software"], "publishedWithinDays": 14, "maxResults": 20, "onlyOpen": true}' > results.csv
Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.
Use it from an AI agent (MCP)
The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=tinyrex/tenderned-tenders-scraper",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}
Then ask in plain language, e.g. "Tenderned api for this list and give me a table".
Use cases
- Bid and tender teams: one daily sheet of new Dutch notices for your CPV codes or keywords.
- Market research: count tenders per buyer, region or procedure type over time.
- Combine with the TED and US/UK tender actors, which share the same schema, for one international pipeline.
Pricing
Pay per result: $2.50 per 1,000 notices; failed and empty runs and notices already seen are free. You can cap the cost of every run in the run options.
FAQ
Is there a free TenderNed API?
Yes. TenderNed publishes its notices as open data under CC0 through a public JSON API with no key. The actor reads that API, so you get the same data as the website.
Does it include tenders below the EU threshold?
Yes. National notices that are only published on TenderNed are included, which is the main reason to use it next to TED.
Can I get the CPV code and region of each tender?
Yes, with includeDetails on (the default) each notice is enriched with its CPV code and NUTS place of performance. Turn it off for a faster run without those fields.
Can I filter by works, supplies or services?
Set typeOpdracht to W (works), L (supplies) or D (services).
Related guides
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to export US federal (SAM.gov) and UK (Contracts Finder) tenders to CSV or JSON
More guides
- Bulk tech stack lookup: a Wappalyzer / BuiltWith alternative for thousands of domains
- How to scrape Greenhouse, Lever and Ashby jobs (plus Personio, Teamtailor, Recruitee)
- How to export all products from any Shopify store to CSV or JSON
- How to scrape jobs from Workday career sites (myworkdayjobs.com)
- How to export products from any WooCommerce store to CSV or JSON
- How to export EU public tenders from TED (Tenders Electronic Daily) to CSV or JSON
- How to scrape remote jobs from Himalayas, Remote OK, We Work Remotely and more in one run
- How to export open EU funding calls (Horizon Europe, Digital Europe, cascade funding) to CSV or JSON
- How to turn any RSS or Atom feed into JSON or CSV (bulk, with monitoring)
- How to extract emails, phone numbers and social links from a list of company domains
- How to take bulk website screenshots from a URL list and save them to CSV or Google Drive
- How to export US federal (SAM.gov) and UK (Contracts Finder) tenders to CSV or JSON
- How to look up French companies by SIREN or SIRET and build a B2B list from Sirene
- How to look up Norwegian companies by organisation number and build lead lists from Brreg
- How to download SEC filings (10-K, 10-Q, 8-K, Form 4) by ticker and search EDGAR full text
- How to validate NPI numbers in bulk and build US healthcare provider lists from NPPES
- How to look up hundreds of UK companies on Companies House at once (profile, officers, PSC)
- How to look up Finnish companies by Y-tunnus and build B2B lead lists from the YTJ register
- How to extract all URLs from a website's sitemap (and find broken links)
- How to transcribe hundreds of audio and video files to text and subtitles with Whisper
- How to extract text from hundreds of PDFs, including scanned ones, in one run
- How to clean an email list before a campaign: bulk MX, disposable and typo check
- How to audit titles, meta descriptions, H1s and canonicals for hundreds of pages at once
- How to find every broken link and redirect on a website, with the pages to fix
- How to validate LEI codes and find the LEI for a list of companies in bulk
- How to run Lighthouse on hundreds of URLs and get Core Web Vitals in one table