
TED, Europese aanbestedingen
TED (Tenders Electronic Daily) is het aanbestedingsblad van de EU. Elke overheid die boven de Europese drempels inkoopt, moet het hier melden: vooraankondiging, aankondiging, gunning en wijziging, met CPV-code, aanbestedende dienst en vaak de winnaar en het bedrag. De zoek-API werkt zonder sleutel. In 2025 verschenen er 22.755 aankondigingen van Nederlandse aanbesteders, sinds oktober 2016 ruim 183.000.

Aankondigingen op TED van Nederlandse aanbesteders: 22.755 aankondigingen in 2025, 68% meer dan in 2017
Aankondigingen op TED van Nederlandse aanbesteders, 2017 – 2025, in aankondigingen. Dat is het hoogste punt in de reeks.
Wat je ermee kunt bouwen1
Wat kun je ermee?4 ideeën
Wat koopt jouw gemeente in?
Zoek op de naam van de aanbestedende dienst. Op 16 oktober 2026 stond er bijvoorbeeld een gunning van de gemeente Hengelo voor kantoormeubilair.
Meer aanbestedingen per jaar
Tel per jaar met buyer-country=NLD en een datumbereik. Van 13.531 in 2017 naar 22.755 in 2025. Let wel op de overstap naar eForms in 2023.
Wie wint het vaakst?
Haal de gunningen (form-type=result) van één jaar op en tel per winnaar. Koppel de namen aan GLEIF of KvK om concerns samen te nemen.
Diensten, leveringen of werken
In 2025 ging het bij 14.214 Nederlandse aankondigingen om diensten, 6.836 om leveringen en 2.510 om werken. Een aankondiging met meer percelen kan in meer groepen vallen.
Zo verwerk je het4 stappen
Zoeken met een expert-query
POST naar /v3/notices/search met query, fields en limit. Zonder sleutel. Maximaal 250 per pagina en 15.000 per zoekvraag (pagina × limit).
curl -X POST -H "Content-Type: application/json" -d '{"query":"buyer-country=NLD SORT BY publication-date DESC","fields":["publication-number","publication-date","notice-title","buyer-name","notice-type"],"limit":10,"paginationMode":"PAGE_NUMBER"}' https://api.ted.europa.eu/v3/notices/searchTellen zonder alles op te halen
Met limit 1 staat het aantal in totalNoticeCount. Zo tel je per jaar, per soort bericht (form-type) of per soort opdracht (contract-nature).
curl -X POST -H "Content-Type: application/json" -d '{"query":"buyer-country=NLD AND publication-date>=20250101 AND publication-date<=20251231 AND form-type=result","fields":["publication-number"],"limit":1,"paginationMode":"PAGE_NUMBER"}' https://api.ted.europa.eu/v3/notices/searchMeer dan 15.000 resultaten
Gebruik paginationMode ITERATION. Elk antwoord geeft een iterationNextToken voor de volgende reeks.
curl -X POST -H "Content-Type: application/json" -d '{"query":"buyer-country=NLD AND publication-date>=20261001","fields":["publication-number"],"limit":250,"paginationMode":"ITERATION"}' https://api.ted.europa.eu/v3/notices/searchDe volledige aankondiging
Elk resultaat heeft links naar de aankondiging als XML (eForms) en als PDF in alle EU-talen.
https://ted.europa.eu/en/notice/599786-2026/xml
Interessante koppelingen


Bij welk concern horen de winnaars?
Zoek de winnende bedrijven op in GLEIF en tel de gunningen per uiteindelijke moedermaatschappij.


Hoeveel van de begroting gaat via Europese aanbestedingen?
Tel per gemeente de gegunde bedragen in TED en zet die naast de lasten uit de Iv3-cijfers. Niet alle gunningen noemen een bedrag.
Vergelijkbare bronnen
TenderNed aanbestedingenTenderNed is het Nederlandse aanbestedingsplatform, ook voor opdrachten onder de Europese drempels. TED heeft alleen de Europese aanbestedingen, maar wel van alle EU-landen.
data.europa.euHet Europese dataportaal heeft TED als dataset (ted-1) en een CSV-deel (ted-csv), handig voor bulk, maar geen zoekvraag op losse aankondigingen.
Waar je op moet letten
- Alleen boven de Europese drempels
Kleinere opdrachten staan niet in TED. Voor een volledig beeld van Nederlandse inkoop kijk je ook in TenderNed.
- Een aankondiging is geen aanbesteding
Eén aanbesteding levert vaak meer berichten op (vooraankondiging, aankondiging, gunning, wijziging). Tel per soort bericht als je aanbestedingen wilt tellen.
- Zoekindex begint in oktober 2016
Zoekvragen op eerdere publicatiedatums gaven op 16 oktober 2026 nul resultaten. Zoek oudere aankondigingen in de TED-datasets op data.europa.eu.
- Overstap naar eForms
Sinds eind 2023 gebruiken aanbesteders eForms, met andere formulieren en velden. Vergelijk jaren voor en na de overstap voorzichtig.
- Velden zijn soms lijsten of meertalig
contract-nature en buyer-name komen terug als lijst of als object per taal (bv. buyer-name.nld). Een aankondiging met percelen kan dus dubbel tellen.
APIREST (POST, JSON), OpenAPI 3 · gelezen 16 okt 2026
Geen sleutel voor zoeken. De andere v3-endpoints (submit, validate, render) zijn voor aanbesteders en eSenders en vragen een API-sleutel. getest
aankondigingen met een Nederlandse aanbesteder (buyer-country=NLD, scope ALL, 16 okt 2026); 17.776 actief getest
jsonxmlpdfhtml
Basisadres
https://api.ted.europa.eu/v3
Endpoints 3
- POST
/notices/searchZoeken met een expert-query; body JSON met query (verplicht), fields (verplicht), limit, page, scope, paginationMode. Antwoord: notices, totalNoticeCount, iterationNextToken. - GET
https://ted.europa.eu/{taal}/notice/{publicatienummer}/xmlDe volledige aankondiging als XML (eForms of het oude TED-schema). Elk zoekresultaat geeft deze links. - GET
https://ted.europa.eu/{taal}/notice/{publicatienummer}/pdfDe aankondiging als PDF in elke EU-taal (ook /html).
Filteren getest
TED expert-query: veld operator waarde, gecombineerd met AND/OR/NOT en haakjes, lijsten met IN (A B), tekst bevat met ~ "woord", FT~ voor de volledige tekst, sorteren met SORT BY veld ASC|DESC aan het eind.
Parameters 9
query | Expert-query, bv. buyer-country=NLD AND publication-date>=20250101 SORT BY publication-date DESC. Datums als JJJJMMDD. | getest |
fields | Welke velden terugkomen (verplicht), bv. publication-number, publication-date, notice-title, buyer-name, notice-type, form-type, classification-cpv, winner-name. | uit de beschrijving |
limit | Aantal per pagina, standaard 10, hoogstens 250 (251 geeft SEARCH_EXCEEDS_MAX_LIMIT). Daarnaast hoogstens 10.000 velden per pagina (limit × aantal fields). | getest |
page | Paginanummer, begint bij 1 (alleen PAGE_NUMBER). | uit de beschrijving |
paginationMode | PAGE_NUMBER (standaard, hoogstens 15.000 resultaten) of ITERATION (onbeperkt, met iterationNextToken; geldig tot 24 uur na de volgende OJ S-uitgave). | uit de beschrijving |
iterationNextToken | Token uit het vorige antwoord, voor de volgende pagina in ITERATION. | uit de beschrijving |
scope | ALL (standaard), ACTIVE (alleen lopende aankondigingen) of LATEST (alleen de laatste OJ S-uitgave). | getest |
onlyLatestVersions | Alleen de nieuwste versie van een aankondiging. | uit de beschrijving |
checkQuerySyntax | Alleen de syntaxis controleren, niet zoeken. | uit de beschrijving |
Velden die je in fields kunt vragen (selectie van 1.830) 14
| Naam | Type | Betekenis |
|---|---|---|
publication-number | string | Publicatienummer (715510-2026) |
publication-date | date | Publicatiedatum met tijdzone (2026-10-16+02:00) |
notice-title | object | Titel per taal (nld, eng …) |
buyer-name | object | Aanbesteder per taal, waarde is een lijst |
buyer-country | string | Land van de aanbesteder (ISO-3: NLD) |
notice-type | string | Soort bericht (cn-standard, can-standard …) |
form-type | string | competition, result, planning, dir-awa-pre, cont-modif, change |
contract-nature | lijst | works, supplies, services; per perceel, dus kan dubbel |
classification-cpv | lijst | CPV-codes (8 cijfers), per perceel herhaald |
procedure-type | string | open, restricted, neg-w-call … |
place-of-performance | lijst | NUTS-codes en land |
winner-name | object | Winnaar per taal (bij gunningen; kan een persoon zijn) |
Toon alle 14
| Naam | Type | Betekenis |
|---|---|---|
deadline-receipt-tender-date-lot | lijst | Sluitingsdatum per perceel |
links | object | Links naar xml, pdf en html per taal |
Limieten en valkuilen
- PAGE_NUMBER: hoogstens 250 per pagina en 15.000 per zoekvraag (page × limit; daarboven SEARCH_WINDOW_TOO_WIDE). ITERATION: geen maximum aan resultaten. uit de beschrijving
- Geen rate-limit-koppen gezien. Eén zoekvraag met SORT BY duurde ongeveer 7 s; een telling met limit 1 is sneller. getest
- Fouten komen als JSON met error.type: QUERY_UNKNOWN_FIELD (met fieldName en positie), QUERY_SYNTAX_ERROR, SEARCH_EXCEEDS_MAX_LIMIT … getest
- Tellen: limit 1 en totalNoticeCount lezen. NL 2025: 22.755 aankondigingen; met buyer-country IN (NLD BEL) 349.226 sinds 2016. getest
- De zoekindex begint in oktober 2016; eerdere publicatiedatums geven 0. buyer-country=NLD is voor de eerste jaren onvolledig (2016: 2.912, 2018: 15.491). ervaring
- Velden die er niet zijn komen niet terug (total-value ontbrak bij gunningen). buyer-name en notice-title zijn objecten per taal; contract-nature en classification-cpv lijsten per perceel, dus tel aankondigingen, geen lijstwaarden. getest
- Op api.ted.europa.eu is geen robots.txt (404). Op ted.europa.eu zijn alleen portaal- en zoekpagina's verboden; /…/notice/<nr>/xml mag. ervaring
Probeer het HTTP 200 · 519 ms · 16 okt
curl -X POST "https://api.ted.europa.eu/v3/notices/search" \
-d '{"query":"buyer-country=NLD SORT BY publication-date DESC","fields":["publication-number","publication-date","buyer-name","notice-type","form-type"],"limit":3,"paginationMode":"PAGE_NUMBER"}'{
"notices": [
{
"notice-type": "cn-standard",
"publication-number": "715510-2026",
"publication-date": "2026-10-16+02:00",
"buyer-name": {
"nld": [
"SSC IUC DJI"
]
},
"links": {
"xml": {
"MUL": "https://ted.europa.eu/en/notice/715510-2026/xml"
},
"pdf": {
"BUL": "https://ted.europa.eu/bg/notice/715510-2026/pdf",
"SPA": "https://ted.europa.eu/es/notice/715510-2026/pdf",
"CES": "https://ted.europa.eu/cs/notice/715510-2026/pdf",
"DAN": "https://ted.europa.eu/da/notice/715510-2026/pdf",
"DEU": "https://ted.europa.eu/de/notice/715510-2026/pdf",
"EST": "https://ted.europa.eu/et/notice/715510-2026/pdf",
"ELL": "https://ted.europa.eu/el/notice/715510-2026/pdf",
"ENG": "https://ted.europa.eu/en/notice/715510-2026/pdf",
"FRA": "https://ted.europa.eu/fr/notice/715510-2026/pdf",
"GLE": "https://ted.europa.eu/ga/notice/715510-2026/pdf",
"HRV": "https://ted.europa.eu/hr/notice/715510-2026/pdf",
"ITA": "https://ted.europa.eu/it/notice/715510-2026/pdf",
"LAV": "https://ted.europa.eu/lv/notice/715510-2026/pdf",
"LIT": "https://ted.europa.eu/lt/notice/715510-2026/pdf"
},
"pdfs": {
"NLD": "https://ted.europa.eu/nl/notice/715510-2026/pdfs"
},
"html": {
"BUL": "https://ted.europa.eu/bg/notice/-/detail/715510-2026",
"SPA": "https://ted.europa.eu/es/notice/-/detail/715510-2026",
"CES": "https://ted.europa.eu/cs/notice/-/detail/715510-2026",
"DAN": "https://ted.europa.eu/da/notice/-/detail/715510-2026",
"DEU": "https://ted.europa.eu/de/notice/-/detail/715510-2026",Ingekort antwoord, opgeslagen bij het oogsten. Klik op het adres voor het echte, actuele antwoord.
Gelezen uit OpenAPI van de TED API v3 (450 kB): zoekparameters, limieten, foutsoorten en 1.830 op te vragen velden (NoticeResponse) · Swagger UI om aanroepen te proberen · Expert Search: query opstellen, syntaxis controleren en alle velden opzoeken. Labels: uit de beschrijving staat in wat de api zelf publiceert. getest uit onze eigen kleine aanroep. platform geldt voor elk api van dit platform, volgens de documentatie. ervaring zelf ondervonden bij het bouwen van open data index.
Zo haal je het op
curl -X POST -H "Content-Type: application/json" -d '{"query":"buyer-country=NLD SORT BY publication-date DESC","fields":["publication-number","publication-date","buyer-name","notice-type"],"limit":5,"paginationMode":"PAGE_NUMBER"}' https://api.ted.europa.eu/v3/notices/searchMeer in dit thema
Bekijk hoe deze pagina is opgebouwd
bron: ted-aanbestedingen
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
- code
cache:
tag: bron:ted-aanbestedingen
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: publicatiedatum van de nieuwste Nederlandse aankondiging (SORT BY
publication-date DESC)
verwacht: dagelijks
Bron: content/bronnen/ted-aanbestedingen.yaml · Markdown


