EU Tenders Scraper - TED Tenders & Public Procurement API
Pricing
from $1.00 / 1,000 tender notices
EU Tenders Scraper - TED Tenders & Public Procurement API
EU tenders scraper for TED (Tenders Electronic Daily): EU public tenders and contract awards via the official TED API. Filter by keywords, countries, CPV codes, notice type, dates and open deadlines; get buyer, value, CPV, deadline and links. $1 per 1,000 notices.
Pricing
from $1.00 / 1,000 tender notices
Rating
0.0
(0)
Developer
Christian Machon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TED tenders scraper and EU tenders API: search every EU public tender, contract award and prior information notice published on TED (Tenders Electronic Daily) by keyword, country, CPV code, notice type and date. Clean JSON, one row per notice. $1 per 1,000 notices.
TED is the official EU journal for public procurement: around 800,000 notices a year from 27 EU countries plus EEA, Switzerland, Ukraine, Moldova, the Western Balkans and EU institutions. This Actor uses the official TED Search API v3 (api.ted.europa.eu) - no browser, no proxies, no scraping of HTML - so runs are fast (typically 1-4 seconds) and stable.
Tested before release: 12/12 platform test runs behaved as expected (10 data runs across 12 countries with keywords, phrases, CPV codes, notice types, open-deadline filter, date windows, 3-page pagination and an advanced expert query; 2 invalid inputs were correctly rejected with a clear error). Charged events matched dataset items on every run.
Who it's for and use cases
- Bid teams and sales - find open calls for tenders in your CPV codes and countries every morning, with the submission deadline and the link to the tender documents.
- Market intelligence - see who won which contracts (award notices include winners and total value) and which buyers spend in your sector.
- Consultants and lead generation - build lists of public buyers planning purchases (prior information notices) before the tender is out.
- Researchers and journalists - analyse procurement by country, CPV sector, procedure type or value.
- AI agents and automations - call it from Make, Zapier, n8n, LangChain or Apify's MCP server and get flat JSON back in a few seconds.
Why this TED tenders scraper?
| This Actor | |
|---|---|
| Source | Official TED Search API v3 of the EU Publications Office - free, open data |
| Filters | Keywords (full text, any language, phrases), buyer countries (ISO 2- or 3-letter), CPV codes (sub-codes included automatically), notice type, published since/until (dates or "7 days"), only tenders still open for bids |
| Notice types | Calls for tenders, contract awards (results), planning / prior information, contract modifications, direct-award pre-notices (VEAT), market consultations |
| Clean output | Title in your language (24 EU languages), original title, description, buyer name/city/website, country, CPV codes, estimated value + currency, total/awarded value, winners, deadline (tenders or requests to participate), publication date, documents and submission links, TED HTML/PDF/XML links |
| Power users | Add any TED expert-query clause (e.g. procedure-type=open, place-of-performance IN (DK01)) |
| Honest status | OUTPUT record with the exact TED query, total matching notices, status (SUCCEEDED, NO_DATA, PARTIAL, INVALID_QUERY, FAILED) and network stats |
| Polite | Sequential requests, max ~2.5 per second, honest User-Agent, retries with exponential backoff and Retry-After |
How to use it
- Type keywords (optional) - a notice matches any of them.
- Pick buyer countries and/or CPV codes (e.g. 72000000 = IT services, 45000000 = construction, 33000000 = medical equipment).
- Choose a notice type and a published since date (default: last 30 days). Tick only tenders still open to drop expired calls.
- Set max notices (default 50, newest first) and click Start. Download JSON, CSV or Excel, or call it via the API.
Input example
{"keywords": ["software","cloud hosting"],"countries": ["DK","SE","DE"],"cpvCodes": ["72000000"],"publishedSince": "30 days","noticeType": "competition","onlyOpen": true,"maxItems": 50,"language": "eng"}
| Field | Type | Default | Notes |
|---|---|---|---|
keywords | array of strings | - | Full-text, OR-combined; multi-word = phrase |
countries | array of strings | all | Buyer country, ISO alpha-2 or alpha-3 (UK and EL accepted) |
cpvCodes | array of strings | all | 8-digit CPV, check digit optional, or a 2-7 digit prefix; children included |
publishedSince | string | 30 days | 2026-10-01 or 7 days / 4 weeks / 3 months |
publishedUntil | string | - | Inclusive end date |
noticeType | enum | any | competition, result, planning, contract-modification, direct-award-prenotice, consultation |
onlyOpen | boolean | false | Deadline (tenders or requests to participate) today or later |
maxItems | integer | 50 | 1-5,000, newest first |
language | enum | eng | 3-letter EU language code for titles, buyer names and links |
expertQuery | string | - | Extra TED expert-query clause, ANDed |
Output example
One item per notice (real run, description shortened):
{"noticeId": "751610-2026","title": "Belgium – Networking, Internet and intranet software development services – Raamovereenkomst voor Digitale diensten en software (vervolg Project LB365)","originalTitle": "Raamovereenkomst voor Digitale diensten en software (vervolg Project LB365)","description": "De aanbestedende overheid wenst een raamovereenkomst te sluiten voor het leveren van digitale diensten, ICT-dienstverlening, consultancy, softwaregerelateerde diensten en softwarelicenties ten behoeve van de aanbestedende overheid en de organisaties die gerechtigd zijn om gebruik te maken van deze r...","buyerName": "Gemeente Brasschaat","buyerCity": "Brasschaat","buyerWebsite": "http://www.brasschaat.be/","country": "BE","countryIso3": "BEL","placeOfPerformance": ["BE100","BEL"],"noticeType": "cn-standard","noticeTypeLabel": "Contract notice","formType": "competition","procedureType": "neg-w-call","contractNature": "services","mainCpv": "72212200","cpvCodes": ["72212200"],"estimatedValue": null,"estimatedValueCurrency": null,"totalValue": null,"totalValueCurrency": null,"winners": null,"deadline": null,"deadlineDate": null,"publicationDate": "2026-10-29","officialLanguages": ["NLD"],"documentsUrl": "https://cloud.3p.eu/Downloads/1/2908/AA/2026","submissionUrl": "https://www.publicprocurement.be","url": "https://ted.europa.eu/en/notice/-/detail/751610-2026","pdfUrl": "https://ted.europa.eu/en/notice/751610-2026/pdf","xmlUrl": "https://ted.europa.eu/en/notice/751610-2026/xml","scrapedAt": "2026-10-29T19:32:47.030Z"}
Award notices additionally carry winners and totalValue / totalValueCurrency. Fields TED does not publish for a notice are null. Values are as published by the buyer (estimated values are often missing on calls for tenders).
Pricing
Pay per event - you only pay for notices you get:
| Event | Price |
|---|---|
| Actor start | $0.00005 per run (256 MB) |
| Tender notice | $0.001 per notice ($1 per 1,000) |
Examples: 25 notices = $0.02505; 100 notices = $0.10005; a search with no matches = $0.00005. Set a maximum charge per run and the Actor stops exactly there.
FAQ
Is this legal / can I reuse the data? Yes. TED data is published by the Publications Office of the European Union as open data and may be reused free of charge, including commercially, under Commission Decision 2011/833/EU, with attribution: "© European Union, https://ted.europa.eu". The Actor only calls the official public API.
How fresh is it? TED publishes new notices every working day (Monday-Friday); results are live from the API at run time.
Which countries? All countries that publish on TED: EU-27, Norway, Iceland, Liechtenstein, Switzerland, North Macedonia, Serbia, Montenegro, Albania, Moldova, Ukraine, Georgia and others, plus EU institutions.
Why is the estimated value empty? Many buyers do not publish an estimate. Award notices usually have totalValue (the awarded amount).
How many notices can I get? Up to 5,000 per run (newest first). For larger extracts, split by date window or country.
Does it get the full tender documents? It returns the links (documentsUrl, submissionUrl, pdfUrl, xmlUrl). The documents themselves live on national e-procurement portals.
Something wrong? Open an issue on the Actor page - the OUTPUT record shows the exact TED query that was run, which makes problems easy to reproduce.