Netherlands Tenders Scraper: TenderNed Aanbestedingen to Excel avatar

Netherlands Tenders Scraper: TenderNed Aanbestedingen to Excel

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Netherlands Tenders Scraper: TenderNed Aanbestedingen to Excel

Netherlands Tenders Scraper: TenderNed Aanbestedingen to Excel

Scrape Dutch public tenders (aanbestedingen) from TenderNed via the official public JSON API, no key. Filter by keyword, CPV, province, procedure, contract type, open deadline. "Only new" daily alerts. Excel, CSV, JSON. GDPR-safe contacts off by default.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

TenderFeed

TenderFeed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Security

Limited permissions

Share

Export Dutch public tenders (aanbestedingen) from TenderNed to Excel, CSV or JSON, with no API key. TenderNed is the national e-procurement platform of the Netherlands. This Actor reads the official public JSON API (papi/tenderned-rs-tns v2) and returns one clean row per publication: title and description, buyer (opdrachtgever), procedure, contract type (Diensten / Leveringen / Werken), CPV codes, NUTS place of performance, publication date, submission deadline (sluitingsDatum) and the direct TenderNed link. TenderNed publishes ~2,500 notices per 30 days (~80/day), measured 2026-11-05.

Built by TenderFeed (apify.com/tenderfeed). No login, no browser, no HTML scraping. Buyer contacts stay off by default (GDPR).

Endpoints used

  • List (newest first, page size ≤ 100): GET https://www.tenderned.nl/papi/tenderned-rs-tns/v2/publicaties?page={n}&size=100
  • Optional server filters that work: search, typeOpdracht (D/L/W), procedure (e.g. OPE, NOP)
  • Detail (deadline, CPV, NUTS, reference): GET https://www.tenderned.nl/papi/tenderned-rs-tns/v2/publicaties/{publicatieId}
  • Notice page: https://www.tenderned.nl/aankondigingen/overzicht/{publicatieId}
  • PDF: https://www.tenderned.nl/papi/tenderned-rs-tns/v2/publicaties/{publicatieId}/pdf

TenderNed does not honour publication-date query params; the Actor pages chronologically and stops once publishedFrom is passed. Full-text search is relevance-sorted, so date filtering is applied client-side there.

What can you do with it?

  • Open tender alerts: contract notices still accepting offers in your sector or province, with the deadline and TenderNed link.
  • Market consultations and prior information: MAC / VAK notices before the formal call.
  • SME / supplier research: who buys what across Dutch municipalities, ministries, water boards and agencies.
  • Bid consultancies and grant writers: feed a CRM or spreadsheet with every new Dutch notice for your clients.
  • AI agents: use it as an MCP tool (Apify MCP server) and ask "Which open software tenders were published in Noord-Holland this week?"

Input example

{
"keywords": ["software", "onderhoud"],
"provinces": ["Noord-Holland", "Utrecht"],
"contractTypes": ["D"],
"publishedFrom": "14 days",
"onlyOpen": true,
"maxResults": 50
}
  • keywords match the tender name and description; with keywords set, TenderNed's server-side search is used for speed.
  • noticeTypes: empty = AAO (contract notice), REC (rectification), MAC (market consultation), VAK (prior information). Add AGO for awards.
  • contractTypes: D services, L supplies, W works.
  • provinces: Dutch province names (accent-insensitive). Nationwide notices (NUTS NL) are kept.
  • cpvCodes: prefix match ("72" keeps every IT-services code).
  • onlyOpen (on by default) keeps active notices whose sluitingsDatum is today or later.
  • Default run: open opportunity notices published in the last 7 days, newest first, 50 results.

Output example

{
"source": "nl-tenderned",
"sourceId": "447983",
"url": "https://www.tenderned.nl/aankondigingen/overzicht/447983",
"title": "Herinrichting Prins Hendriklaan en Rimburgerweg te Brunssum",
"noticeType": "Aankondiging opdracht",
"status": "active",
"procedureType": "Openbaar",
"contractType": "works",
"buyerName": "Gemeente Brunssum",
"buyerCountry": "NL",
"cpvCodes": ["45200000-9"],
"province": "Limburg",
"publishedAt": "2026-11-05T09:11:33.700156",
"deadlineAt": "2026-12-22T10:00:00",
"documentsUrl": "https://www.tenderned.nl/papi/tenderned-rs-tns/v2/publicaties/447983/pdf"
}

Other fields: description, announcementCode (AAO/AGO/…), publicationCode, contractTypeNl, legalFramework, scope (Nationaal/Europees), nature, formType, kenmerk, referenceNumber, nutsCodes, startDate, endDate, daysBeforeDeadline, digitalSubmission, tsender, placeOfPerformance, otherClassificationCodes.

The data follows the same normalized schema as our other TenderFeed Actors (EU TED, SAM.gov, UK, Germany, Colombia SECOP).

Daily alerts ("only new" monitoring mode)

Turn on onlyNew, set a monitoringId (for example "nh-software") and schedule the Actor daily. Each run returns, and charges for, only publications you have not received yet.

Personal data

TenderNed's public API does not publish personal emails or phone numbers. includeBuyerContacts stays off by default (GDPR); organization-level fields (buyerName, province, URL) are always kept.

Sample output (real run)

One row from a run on 6 November 2026 (core columns only; every row also has description, status, procedureType, documentsUrl and more). Contact values are masked here. Since schema 1.2 every row also carries the cross-source columns country, deadline, valueAmount, valueCurrency and cpvOrNaics next to the original ones (buyerCountry, deadlineAt, estimatedValue, currency, cpvCodes/naicsCodes), which are unchanged.

{
"title": "ERP-systeem",
"source": "nl-tenderned",
"country": "NL",
"noticeType": "Rectificatie",
"publishedAt": "2026-11-06T13:16:00.58749",
"deadline": "2026-11-27T12:00:00",
"buyerName": "Kamer van Koophandel",
"valueAmount": null,
"valueCurrency": null,
"cpvOrNaics": "72260000-5, 72000000-5, 72200000-7, 72210000-0",
"setAside": null,
"url": "https://www.tenderned.nl/aankondigingen/overzicht/448304",
"buyerContactName": null,
"buyerContactEmail": null,
"buyerContactPhone": null
}

Limits and notes

  • Data source: TenderNed public publications API.
  • Access: No login or API key.
  • Delays and gaps: Notices are mostly in Dutch. Value is often not published.
  • Contacts: No buyer contact persons are extracted.
  • Fields the portal does not publish stay null; nothing is guessed or filled in.

Pricing

Pay per result: you pay only for the publications saved to the dataset (see the price on this page), plus Apify's small run-start fee. The default run takes under a minute.

More TenderFeed sources

Same output schema across all sources, so you can merge results in one sheet or CRM: