TED Tenders — EU Public Procurement Notices & Awards
Pricing
from $4.25 / 1,000 notices
TED Tenders — EU Public Procurement Notices & Awards
Scrape EU tenders and procurement notices from TED (Tenders Electronic Daily): European public tender notices and contract awards from all EU countries plus Switzerland, with buyer, CPV codes, deadlines, estimated value and winners. Export to JSON, CSV or Excel; schedule a daily feed.
Pricing
from $4.25 / 1,000 notices
Rating
0.0
(0)
Developer
PublicData
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Stop checking the TED portal by hand: get every EU tender that matches your country, sector and keywords delivered as a structured file — and see who won the comparable contracts, and for how much.
This Actor turns TED (Tenders Electronic Daily), the official journal of European public procurement, into a filtered JSON, CSV or Excel feed. It covers the contract notices and contract awards published by every EU member state, the EEA countries and Switzerland (Swiss GPA notices appear on TED too — 11,584 of them in 2025), 904,387 notices in the twelve months to 20 August 2026, about 75,000 a month. No login, no API key, no proxy.
It reads the official TED Search API v3 with iteration paging, so an export is not capped at the 15,000-result window of the web interface: seven months of one country's call-for-competition notices come out in a single run — all 11,739 of Italy's published between 1 January and 31 July 2026, not a subset, in 104 seconds (drained live on 21 August 2026). Notices come out newest first, ordered by publication number, which TED issues in publication order.
What you get
Every notice is flattened into one row, ready for Sheets, a database or a BI tool.
Identification and dates
publicationNumber— the TED publication number, and a natural deduplication keypublicationDate,noticeType(cn-standard,can-standard,pin-only,qu-sy…) andnoticeTypeLabel, the plain-English version —noticeTypeLabelisnullfor any code the Actor does not carry a label for, whilenoticeTypealways holds TED's raw code
What is being bought
titleanddescriptionin your preferred language, falling back to the notice's own language when no translation existscpvMainandcpvCodes— the full Common Procurement Vocabulary listcontractNature(works, supplies or services) andprocedureType(open, restricted, negotiated …)
Who is buying, and where the work happens
buyerName,buyerCity,buyerCountry(ISO-3)placeOfPerformanceNuts— NUTS region codes
The two fields that decide whether you bid
estimatedValuewithcurrencyofferDeadline— the deadline for receipt of tenders
On award notices, the competitive intelligence
winnerNames,winnerCountriesandawardDecisionDate— filled on award notices onlytotalValue— not an award-only field, and not proof that anything was awarded. On an award notice it is the awarded value and normally differs fromestimatedValue. On an ordinary call-for-competition notice TED fills it too, where it is simply a copy ofestimatedValue. Measured live on 21 August 2026 over all 11,739 Italian call-for-competition notices published between 1 January and 31 July 2026:totalValuewas present on 11,367 of them and equal toestimatedValueon all 11,365 rows carrying both. ReadnoticeType/noticeTypeLabel, nevertotalValue, to tell an awarded contract from an open tender.
Links and provenance
pdfUrlandxmlUrl— the official notice documents in your chosen language editiontedUrl— the notice page on ted.europa.eusource— carried on every record for attribution
Who uses this
- A bid manager at a construction or IT firm runs a daily feed of new tender notices for two countries and three CPV families, and reads the deadlines before the competition does.
- A sales lead pulls award notices for their sector to see which rivals win which buyers, and at what price.
- A compliance or public-affairs analyst checks whether a counterparty appears as a winner of public contracts, and in which member states.
- A researcher or journalist exports several years of European public procurement notices for one CPV branch and compares values by country.
- An AI agent or developer calls the Actor as an MCP tool or over the API and passes a raw TED expert query, using the full search grammar without writing a TED client.
Example output
Both records below were exported from the live API on 21 August 2026 (fields the notice leaves empty are omitted here).
A contract notice (tender you can still bid on):
{"publicationNumber": "575842-2026","publicationDate": "2026-08-20","noticeType": "cn-standard","noticeTypeLabel": "Contract notice","title": "Italia – Sistemi diagnostici – fornitura quinquennale in service di un sistema diagnostico per allergologia in vitro su siero con reagenti, materiale di consumo e assistenza tecnica, da destinare alla U.O.C. di Patologia Clinica del P.O. di Paternò (CT)","buyerName": "AZIENDA SANITARIA PROVINCIALE DI CATANIA","buyerCity": "Catania","buyerCountry": "ITA","cpvMain": "33124110","cpvCodes": ["33124110"],"contractNature": "supplies","procedureType": "open","estimatedValue": 1360000.0,"totalValue": 1360000.0,"currency": "EUR","offerDeadline": "2026-10-06","placeOfPerformanceNuts": ["ITA", "ITG17"],"pdfUrl": "https://ted.europa.eu/it/notice/575842-2026/pdf","tedUrl": "https://ted.europa.eu/it/notice/575842-2026","source": "TED (Tenders Electronic Daily), Publications Office of the EU"}
An award notice adds the result of the competition (on this one totalValue happens to match the estimate; across a July 2026 sample of 800 Italian award notices it differed from estimatedValue on 521 of the 712 rows carrying both):
{"publicationNumber": "575424-2026","noticeTypeLabel": "Contract award notice","buyerName": "Provincia Autonoma di Trento","winnerNames": "Dolomiti Energia Mercato SpA","winnerCountries": ["ITA"],"awardDecisionDate": "2026-08-18","estimatedValue": 89380900.0,"totalValue": 89380900.0,"currency": "EUR"}
Input
| Field | What it does |
|---|---|
noticeGroup | tenders (open competitions, default), awards (winners and values), planning (prior information notices), all. Each group covers its whole TED form-type; awards also carries contract modifications. |
buyerCountries | ISO-3 codes of the contracting authority: ITA, DEU, FRA, CHE, AUT, ESP … Empty means all countries. |
cpvCodes | Full CPV codes (45000000) or wildcard prefixes: 45* construction, 72* IT services, 33* medical, 34* transport equipment. |
fullText | Keyword(s) searched across the whole notice, using TED's FT~ operator (any word form). |
publishedFrom / publishedUntil | Date window, YYYY-MM-DD. Must be real calendar dates between 2000-01-01 and 2099-12-31 — the range TED's own publication-date filter accepts — and anything else (2026-13-45, 2026-02-30, 1999-01-01) is refused before the run starts instead of failing mid-run. An empty string, or the field left out entirely, means no bound: publishedFrom then defaults to 7 days ago and publishedUntil to no upper bound. |
expertQuery | A raw TED expert query for full control, sent to TED untouched. When set, every field above is ignored — including the dates, so add your own publication-date clause or you search the whole archive. Sort it with SORT BY publication-number DESC. |
language | Preferred language for titles, descriptions and the PDF link. Default en. |
maxItems | Safety cap. Default 500; 0 means unlimited, since iteration paging handles any size. Results are newest first, so the cap keeps the newest matches. |
Last week's Italian construction tenders, with Italian titles:
{ "noticeGroup": "tenders", "buyerCountries": ["ITA"], "cpvCodes": ["45*"], "language": "it" }
Who has been winning IT contracts in Germany and Austria this year — every award, no cap:
{"noticeGroup": "awards","buyerCountries": ["DEU", "AUT"],"cpvCodes": ["72*"],"publishedFrom": "2026-01-01","language": "de","maxItems": 0}
Anything the TED expert search supports, passed through untouched — which also means nothing is added: no date window, no sort order. Put both in the query yourself, and sort by publication-number (unique per notice) rather than publication-date (many notices share one date):
{ "expertQuery": "(buyer-country=ITA) AND (FT~(\"fotovoltaico\")) AND (publication-date>=20260101) SORT BY publication-number DESC" }
Run it on a schedule
Save your filters as a Task and leave the two date fields empty (or absent): each run then covers the last 7 days. Schedule it weekly, not daily — the window and the cadence then match, and every notice is exported, and charged, exactly once.
A daily schedule on that same 7-day default re-exports the previous six days on every run, and this Actor charges per exported notice, so you pay for each notice about seven times. Measured live on 21 August 2026 on Italian call-for-competition notices: a run with the default window exported and charged 218 notices, of which 34 had been published that day; the other 184 were re-exports of 14–20 August that an earlier run had already paid for. Seven such runs a week charge roughly 1,500 notices for the ~218 a single weekly run would cover.
If you do want a daily feed, set publishedFrom to a fixed recent date and move it forward yourself through the API, or accept that the overlap is billed — there is no relative "last 1 day" option, only the fixed 7-day default. The overlap is a billing cost, not a data problem: deduplicate on publicationNumber, which is unique and stable per notice, so a rolling window never puts the same tender in your sheet twice.
Attach an Apify integration to the schedule and the results land where you already work: Google Sheets, Slack, e-mail, a webhook into your own system, or Make and Zapier for your CRM.
Use it from code or from an AI agent
Start a run and read the dataset through the Apify API or CLI, with JSON or CSV export straight from the dataset endpoint. The Actor is also exposed through the Apify MCP server, so an AI agent can call it as a tool — and expertQuery lets that agent express a precise question without a purpose-built public tenders API client.
Pricing
Pay per event: a small fee for each notice exported, shown in the pricing box on this page. There is no browser and no proxy involved — only API calls — so Apify platform usage on top of that is negligible. Every exported row is charged, including a row an overlapping date window makes you export a second time, so match your schedule to your date window (see Run it on a schedule).
Where the data comes from
Every record comes from the official TED Search API of the Publications Office of the European Union. TED data is free for commercial and non-commercial reuse under the Commission's open-data policy (Decision 2011/833/EU) with attribution to the source, and each record carries source: TED (Tenders Electronic Daily), Publications Office of the EU.
Honest limits: TED holds notices above the EU publication thresholds, so smaller contracts published only on national portals are not here. Notices appear on their publication day, not in real time. winnerNames, winnerCountries and awardDecisionDate are filled on award notices only; totalValue is not, and duplicates estimatedValue on ordinary tender notices. Tender documents, buyer contact details and lists of unsuccessful bidders are not in the API response; use tedUrl or pdfUrl for the full official notice. Some notice types sit outside all three notice groups — voluntary ex-ante transparency (veat, an intended direct award rather than an awarded contract), prior market consultations (pmc), business-registration notices (brin-ecs, brin-eeig), completion notices (compl) and the discontinued legacy corrigendum (corr, last published 2025-04-16): select all, or name them in an expert query, if you want them. noticeTypeLabel is a convenience lookup rather than an exhaustive index of TED's code list, so it can be null if TED introduces a new code; checked on 21 August 2026, it covered every notice type published from 2023-01-01 to 2026-08-21 (3,049,457 notices, none unlabelled). Paging follows TED's iteration cursor, which advances by the query's sort key, so the Actor sorts by publication-number — the only notice field guaranteed unique — and logs an error if a run ever ends short of the match count TED reported. This Actor is independent and not affiliated with the EU institutions.
Frequently asked questions
Can TED data be reused commercially?
Yes. TED data is free for commercial and non-commercial reuse under the Commission's open-data policy (Decision 2011/833/EU) with attribution, which every record carries in its source field.
Does the EU Tenders Scraper cover Switzerland and the EEA?
Yes. Swiss GPA notices are published on TED too, alongside every EU member state and the EEA countries.
Is there a limit on how much I can export?
No. The Actor uses TED's iteration paging, so an export is not capped at the 15,000-result window of the web interface. A full year of one country's tenders comes out in a single run.
Why are winner fields empty on some rows?
Winner names and awarded values exist only on award notices. On a contract notice — a tender still open for bids — there is no winner yet, so those fields are null rather than guessed.
Related Actors
Same engine, same official-source approach:
- AusTender (Australia) — federal contracts, winners and expiry dates
- UK Public Tenders — Contracts Finder and Find a Tender in one run
- Swiss Public Tenders (simap.ch) — tenders and awards with prices, bid counts and weighted criteria
- Swiss Commercial Register (SHAB) — new companies, changes, deletions and bankruptcies
- France Company Register — SIREN/SIRET, executives, official labels
- GLEIF LEI — LEI lookup, lapsed-LEI screening, parent companies
- Brazil CNPJ — Receita Federal company data and partners