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.
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
| Published | Title | Buyer | CPV | Deadline | Est. value (EUR) |
|---|---|---|---|---|---|
| 2026-10-30 | Supply services of personnel including temporary staff: Minicompetitie Software engineer S | Luchtverkeersleiding Nederland (LVNL) | 79620000 | 20000000 | |
| 2026-10-30 | Accounting and auditing services: Accountantsdiensten 2027 ev gemeente Oss | Gemeente Oss | 79210000 | 2026-11-23 | |
| 2026-10-30 | Electrical machinery, apparatus, equipment and consumables; lighting: Vrijwillige Transpar | Waterschap Zuiderzeeland | 31000000 | ||
| 2026-10-30 | Taxi services: EA Leerlingenvervoer Gemeenten Zaltbommel en Maasdriel | Gemeente Zaltbommel | 60120000; 60140000 | 2027-01-05 | |
| 2026-10-30 | Supply services of personnel including temporary staff: Minicompetitie Senior Systeem Engi | Luchtverkeersleiding Nederland (LVNL) | 79620000 | 20000000 | |
| 2026-10-30 | Motor vehicles: Vrachtwagen met kraan gemeente Land van Cuijk | Gemeente Land van Cuijk | 34100000; 42414410 | ||
| 2026-10-30 | Legal services: Vrijwillige transparantie: belastingtaken Gemeente Baarn 2027 | Gemeente Baarn | 79100000; 75111000 | ||
| 2026-10-30 | Archaeological services: Archeologisch project Haps-Laarakker Deelgebied 5 | Gemeente Land van Cuijk | 71351914 |
First 8 rows. Titles cut at 90 characters here, complete in the CSV.
The columns
publication_number | TED's own ID for the notice, like 752749-2026. Unique, so it's the key for spotting new rows. |
|---|---|
publication_date | Date the notice was published on TED (YYYY-MM-DD). |
notice_type | TED'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. |
title | Notice title as published. Usually country, CPV description and the buyer's own title, often in Dutch. |
buyer_name | The public body buying: a municipality, water board, hospital, ministry, school group and so on. Organisations only. |
buyer_city | City of the buyer's registered address. |
cpv_codes | Common 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_nature | services, supplies or works. |
procedure_type | open, restricted, neg-wo-call (negotiated without prior call) and similar. |
place_of_performance | NUTS region codes where the work happens, like NL416. |
tender_deadline | Deadline for submitting a bid (YYYY-MM-DD), when the notice has one. Award notices don't. |
estimated_value | Estimated contract value as published, when the buyer gave one. |
currency | Currency of the estimated value, nearly always EUR. |
notice_url | Link 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:
- Pick the filter. For example: Dutch buyers, services only, CPV codes starting with 72 (IT services) or 79 (business services), only open calls.
- 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.
- 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.
- 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.
- 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.