Data sample

300 Dutch public tenders, as a clean CSV

This sample shows what a data delivery from Studio looks like. It's the 300 most recent procurement notices published by Dutch public buyers on TED, the EU's official tenders database, from 2026-10-27 to 2026-10-30.

Download the CSV (300 rows)

Why this source

TED (Tenders Electronic Daily) publishes every public contract above the EU thresholds. It has an official search API that anyone can use without a key, and the notices may be reused for commercial and non-commercial purposes under the EU's reuse policy. So there was no need to scrape web pages at all: the data came straight from api.ted.europa.eu, well within its fair use limits.

The sample contains no personal data. TED notices can include contact persons, email addresses and phone numbers for the buyer. Those fields were never requested, so they're not in the file. Buyers here are public organisations.

A quick look

  • 300 notices, one row each, no duplicates
  • 139 have a bid deadline (open calls), the rest are mostly award notices
  • 139 include an estimated contract value
PublishedTitleBuyerCPVDeadlineEst. value (EUR)
2026-10-30Supply services of personnel including temporary staff: Minicompetitie Software engineer SLuchtverkeersleiding Nederland (LVNL)7962000020000000
2026-10-30Accounting and auditing services: Accountantsdiensten 2027 ev gemeente OssGemeente Oss792100002026-11-23
2026-10-30Electrical machinery, apparatus, equipment and consumables; lighting: Vrijwillige TransparWaterschap Zuiderzeeland31000000
2026-10-30Taxi services: EA Leerlingenvervoer Gemeenten Zaltbommel en MaasdrielGemeente Zaltbommel60120000; 601400002027-01-05
2026-10-30Supply services of personnel including temporary staff: Minicompetitie Senior Systeem EngiLuchtverkeersleiding Nederland (LVNL)7962000020000000
2026-10-30Motor vehicles: Vrachtwagen met kraan gemeente Land van CuijkGemeente Land van Cuijk34100000; 42414410
2026-10-30Legal services: Vrijwillige transparantie: belastingtaken Gemeente Baarn 2027Gemeente Baarn79100000; 75111000
2026-10-30Archaeological services: Archeologisch project Haps-Laarakker Deelgebied 5Gemeente Land van Cuijk71351914

First 8 rows. Titles cut at 90 characters here, complete in the CSV.

The columns

publication_numberTED's own ID for the notice, like 752749-2026. Unique, so it's the key for spotting new rows.
publication_dateDate the notice was published on TED (YYYY-MM-DD).
notice_typeTED's notice type code. cn-standard is a new call for tenders, can-standard is a contract award, veat a voluntary transparency notice, pmc a prior market consultation.
titleNotice title as published. Usually country, CPV description and the buyer's own title, often in Dutch.
buyer_nameThe public body buying: a municipality, water board, hospital, ministry, school group and so on. Organisations only.
buyer_cityCity of the buyer's registered address.
cpv_codesCommon Procurement Vocabulary codes, the EU's standard category list. 79210000 means accounting and auditing services, for example. Several codes are separated by a semicolon.
contract_natureservices, supplies or works.
procedure_typeopen, restricted, neg-wo-call (negotiated without prior call) and similar.
place_of_performanceNUTS region codes where the work happens, like NL416.
tender_deadlineDeadline for submitting a bid (YYYY-MM-DD), when the notice has one. Award notices don't.
estimated_valueEstimated contract value as published, when the buyer gave one.
currencyCurrency of the estimated value, nearly always EUR.
notice_urlLink to the full notice on ted.europa.eu.

How a recurring feed would work

A one-off file is useful once. Most people who ask about tenders want to hear about new ones. Here's how I'd set that up:

  1. Pick the filter. For example: Dutch buyers, services only, CPV codes starting with 72 (IT services) or 79 (business services), only open calls.
  2. Run it every morning. TED publishes on weekdays, and the daily batch is out by 09:30 CET. A scheduled job queries the API right after that.
  3. Keep only what's new. Each notice has a unique publication number. The job remembers which numbers it has already sent, so you only get new rows.
  4. Deliver where you work. New rows get appended to a Google Sheet, posted to your webhook (n8n, Zapier, Make, your own app) or sent as a short email with links.
  5. Watch for breakage. If the API changes or a run fails, I get an alert and fix it. That's part of the monthly fee.

The same pattern works for other public sources: product prices, stock levels, listings. See custom web scraping for what I do and don't collect.

Source and licence

Source: TED, Tenders Electronic Daily, published by the Publications Office of the European Union, via the TED Search API. Retrieved on 30 October 2026. Changes made: selected fields only, multilingual values flattened to English or Dutch text, deadline reduced to a date. Notices published in the Supplement to the Official Journal can be reused under the Commission's reuse policy. Only the electronically signed notices on TED are authentic, so check the linked notice before you bid on anything.

Want one of these?

Send a few lines about what you need. You get a scope, a fixed price and a date back by email.

Get a quote