EU Tenders Scraper - TED Tenders & Public Procurement API avatar

EU Tenders Scraper - TED Tenders & Public Procurement API

Pricing

from $1.00 / 1,000 tender notices

Go to Apify Store
EU Tenders Scraper - TED Tenders & Public Procurement API

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

Christian Machon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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
SourceOfficial TED Search API v3 of the EU Publications Office - free, open data
FiltersKeywords (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 typesCalls for tenders, contract awards (results), planning / prior information, contract modifications, direct-award pre-notices (VEAT), market consultations
Clean outputTitle 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 usersAdd any TED expert-query clause (e.g. procedure-type=open, place-of-performance IN (DK01))
Honest statusOUTPUT record with the exact TED query, total matching notices, status (SUCCEEDED, NO_DATA, PARTIAL, INVALID_QUERY, FAILED) and network stats
PoliteSequential requests, max ~2.5 per second, honest User-Agent, retries with exponential backoff and Retry-After

How to use it

  1. Type keywords (optional) - a notice matches any of them.
  2. Pick buyer countries and/or CPV codes (e.g. 72000000 = IT services, 45000000 = construction, 33000000 = medical equipment).
  3. Choose a notice type and a published since date (default: last 30 days). Tick only tenders still open to drop expired calls.
  4. 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"
}
FieldTypeDefaultNotes
keywordsarray of strings-Full-text, OR-combined; multi-word = phrase
countriesarray of stringsallBuyer country, ISO alpha-2 or alpha-3 (UK and EL accepted)
cpvCodesarray of stringsall8-digit CPV, check digit optional, or a 2-7 digit prefix; children included
publishedSincestring30 days2026-10-01 or 7 days / 4 weeks / 3 months
publishedUntilstring-Inclusive end date
noticeTypeenumanycompetition, result, planning, contract-modification, direct-award-prenotice, consultation
onlyOpenbooleanfalseDeadline (tenders or requests to participate) today or later
maxItemsinteger501-5,000, newest first
languageenumeng3-letter EU language code for titles, buyer names and links
expertQuerystring-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:

EventPrice
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.