EU Public Tenders (TED) Search & Monitor avatar

EU Public Tenders (TED) Search & Monitor

Pricing

Pay per event

Go to Apify Store
EU Public Tenders (TED) Search & Monitor

EU Public Tenders (TED) Search & Monitor

Search EU public procurement notices from TED (Tenders Electronic Daily) by keyword, CPV code, country, notice type, date and value. Get buyer, deadline, estimated value, CPV, lots and links, and daily alerts for new tenders.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Max Prozapas

Max Prozapas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

EU Tenders Scraper — TED Public Procurement Search & Alerts

Search EU public procurement notices from TED (Tenders Electronic Daily), the official journal of European public tenders, and get clean, structured data: title, buyer, country, CPV codes, deadline, estimated value, lots, winners and direct links to the notice and its PDF. Filter by keywords, CPV codes, countries, notice type, publication date and contract value, with no API key, login or browser needed.

Monitor mode remembers which notices you already received and outputs only new tenders. Schedule it daily and get tender alerts by email, Slack, Google Sheets or webhook. You pay only for new notices.

TED publishes over 3,000 notices every working day from the 27 EU member states, the EEA, Switzerland, EU institutions and many other countries: calls for tender, prior information notices, contract awards and more.

Why this TED scraper

  • Official data source: uses the public TED Search API v3 of the Publications Office of the EU. No scraping of HTML pages, no blocking, stable output.
  • Business-friendly filters: type CPV codes, ISO country codes (DE, FR, PL) and keywords. The Actor builds the TED expert query for you. Power users can paste their own expert query.
  • CPV hierarchy built in: 72000000 (IT services) also finds every sub-code such as 72260000 (software services). Short prefixes like 45 (construction) work too.
  • Clean, flat records: English title where available (falls back to the original language), buyer name and city, place of performance (countries and NUTS regions), main CPV with label, deadline as ISO date-time, isOpen and daysToDeadline, estimated/awarded value with currency plus an approximate EUR value, lots, winners.
  • Tender alerts: monitor mode outputs only notices not seen in previous runs. Several watchlists with different monitor IDs.
  • Value filter across currencies: minValueEur also matches notices in PLN, SEK, CZK, HUF, DKK, RON, CHF, ...
  • Cheap: pay per notice, no monthly rental.

Use cases

  • Bid / tender alerts for agencies & SMEs: get every new call for tender in your sector and countries each morning, with the deadline and a link to the tender documents.
  • Sales leads: find public buyers that buy what you sell, and contract award notices with the winning companies (your competitors or partners).
  • Market research: analyse public spending by CPV sector, country, procedure type and contract value.
  • Consultants & bid writers: monitor opportunities for several clients with separate watchlists.
  • Competitive intelligence: track which companies win contracts (winners) and at what price (awardedValue).
  • Data pipelines: export EU tenders to CSV, Excel, JSON, Google Sheets, Airtable, a CRM or your database.

CPV code tips

CPV (Common Procurement Vocabulary) codes classify what is being bought. Some popular ones:

CPVSector
72000000IT services: consulting, software development, Internet and support
48000000Software packages and information systems
30200000Computer equipment and supplies
79400000Business and management consultancy
79340000Advertising and marketing services
80500000Training services
71000000Architectural, construction, engineering and inspection services
45000000Construction work
33100000Medical equipment
90900000Cleaning and sanitation services
09310000Electricity
60100000Road transport services
  • A code matches all its sub-codes, so broad codes (72000000) give more results than specific ones (72212000).
  • Prefixes work: 72 = division 72, 7222 = all codes starting with 7222.
  • Check digits (72000000-5) are ignored.
  • Look up codes in the official CPV list on EU Vocabularies.

Input

FieldDescription
keywordsFull-text words or phrases; a notice matches if it contains any of them. Add translations for multilingual coverage.
cpvCodesCPV codes or prefixes, e.g. 72000000, 45. Sub-codes are included automatically.
countriesISO codes (DE, FR, PL, EL/GR, UK/GB, ...) or NUTS region codes (DE21, FR10).
countryFilterplaceOrBuyer (default), placeOfPerformance or buyer.
noticeTypescompetition (calls for tender), planning (prior information), result (contract awards), directAward (VEAT), modification. Empty = all.
publishedWithinDaysNotices published in the last N days (default 7, 0 = no limit).
publishedFrom, publishedToExact publication date range (YYYY-MM-DD). publishedFrom overrides publishedWithinDays.
onlyOpenForBiddingOnly notices whose submission deadline is in the future.
minValueEurMinimum total value in EUR (other currencies converted approximately). Notices without a value are excluded.
maxItemsMaximum notices to output, newest first (default 100). In monitor mode: max new notices per run.
expertQueryRaw TED expert query. Replaces all filters above.
monitorModeOutput only notices not delivered in previous runs.
monitorIdSeparate saved state per watchlist (default default).
baselineOnFirstRunFirst monitor run only remembers current notices (no output, no cost).

Example input: IT tenders in Germany and France (last 7 days)

{
"cpvCodes": ["72000000"],
"countries": ["DE", "FR"],
"noticeTypes": ["competition"],
"publishedWithinDays": 7,
"maxItems": 50
}

Example input: daily tender alert, open tenders over €500k

{
"keywords": ["cybersecurity", "cloud computing"],
"countries": ["DE", "AT", "NL", "BE"],
"noticeTypes": ["competition"],
"onlyOpenForBidding": true,
"minValueEur": 500000,
"publishedWithinDays": 3,
"maxItems": 200,
"monitorMode": true,
"monitorId": "security-dach-benelux"
}

Example input: expert query

{
"expertQuery": "classification-cpv IN (72000000) AND place-of-performance IN (DEU) AND publication-date>=20261001",
"maxItems": 500
}

Build and test expert queries at TED expert search. Country codes in expert queries are 3-letter (DEU, FRA), dates are YYYYMMDD.

Output

One record per notice. Real example from a test run (contract notice, Germany, CPV 72000000):

{
"noticeId": "705091-2026",
"publicationNumber": "705091-2026",
"title": "Beratungsleistungen für das Format Digi-Expert-kommunal für das Hessische Ministerium für Digitalisierung und Innovation in zwei Losen",
"titleLanguage": "deu",
"tedTitle": "Germany – IT services: consulting, software development, Internet and support – Beratungsleistungen für das Format Digi-Expert-kommunal für das Hessische Ministerium für Digitalisierung und Innovation in zwei Losen",
"buyerName": "Land Hessen, vertreten durch die Hessische Zentrale für Datenverarbeitung",
"buyerCountry": "DE",
"buyerCity": "Wiesbaden",
"buyerWebsite": "https://vergabe.hessen.de",
"placeOfPerformanceCountries": ["DE"],
"placeOfPerformanceNuts": ["DE714"],
"mainCpvCode": "72000000",
"mainCpvLabel": "IT services: consulting, software development, Internet and support",
"cpvDivision": "IT services: consulting, software development, Internet and support",
"cpvCodes": ["72000000"],
"contractNature": ["services"],
"formType": "competition",
"noticeType": "cn-standard",
"noticeTypeLabel": "Contract notice",
"procedureType": "open",
"procedureTypeLabel": "Open procedure",
"frameworkAgreement": true,
"publicationDate": "2026-10-13",
"dispatchDate": "2026-10-12",
"deadline": "2026-10-22T10:00:00+02:00",
"daysToDeadline": 7,
"isOpen": true,
"estimatedValue": 2258000,
"estimatedValueCurrency": "EUR",
"awardedValue": null,
"awardedValueCurrency": null,
"value": 2258000,
"currency": "EUR",
"valueEur": 2258000,
"lotsCount": 2,
"lotTitles": ["Grundlagen der digitalen Transformation", "Technische Umsetzung/konkrete Anwendungen"],
"winners": [],
"descriptionSummary": "Beratungsleistungen für das Format \"Digi-Expert-kommunal\" für das Hessische Ministerium für Digitalisierung und Innovation in zwei Losen",
"url": "https://ted.europa.eu/en/notice/-/detail/705091-2026",
"pdfUrl": "https://ted.europa.eu/en/notice/705091-2026/pdf",
"xmlUrl": "https://ted.europa.eu/en/notice/705091-2026/xml",
"documentsUrl": "https://vergabe.hessen.de/NetServer/TenderingProcedureDetails?function=_Details&TenderOID=54321-Tender-1a05b7e4ea4-db4b01198de1e31",
"submissionUrl": "https://vergabe.hessen.de",
"scrapedAt": "2026-10-14T09:54:13.135Z"
}

Field notes:

  • title is the procedure title in English if the buyer provided one, otherwise in the original language (titleLanguage). tedTitle is TED's English headline: country, CPV label and title.
  • deadline is the earliest tender submission deadline across lots, with the buyer's time zone offset.
  • value / currency is TED's total value of the notice (estimated value for calls for tender, awarded value for award notices). valueEur is an indicative conversion using fixed approximate rates.
  • Award notices (result) include winners and awardedValue.
  • null means the buyer did not publish that information (values are often omitted, especially in some countries).

The run's SUMMARY record (key-value store) contains the exact TED query used, the number of matching notices, notices read and output, monitor statistics and any warnings about ignored input values.

How monitoring works

  • Delivered notice IDs are saved in the named key-value store ted-monitor under seen-<monitorId>.
  • Each run outputs only matching notices that were not delivered before, newest first, up to maxItems. Notices cut off by maxItems or by the run's cost limit are delivered in the next run.
  • With baselineOnFirstRun, the first run only remembers the current matches, so you get alerts only for notices published later.
  • Keep publishedWithinDays at a few days (e.g. 3-7) for daily schedules: TED notices never change their publication date, so a short window is enough and keeps runs fast.

Pricing

Pay per notice: you pay a small fee for each notice in the dataset (event notice), nothing for the search itself. In monitor mode you pay only for new notices, so a daily alert for one sector typically costs cents per day. Set a maximum cost per run, and the Actor stops cleanly when it is reached.

FAQ

Do I need a TED account or API key? No. The TED Search API is public and free. The Actor uses it anonymously.

Which countries are covered? All notices published on TED: the 27 EU member states, EEA countries (Norway, Iceland, Liechtenstein), Switzerland, EU institutions and agencies, and tenders from other countries financed by EU programmes.

Why does a search in English miss some tenders? Notices are written in the buyer's language. Full-text keywords are matched as written, so add translations (e.g. software, logiciel, oprogramowanie) or, better, use CPV codes, which are language-independent.

Can I get older notices? Yes. Use publishedFrom / publishedTo (TED data goes back many years) and raise maxItems. One run reads up to 50,000 notices; split very large exports into several date ranges.

How do I get only tenders I can still bid on? Set noticeTypes to competition and enable onlyOpenForBidding.

How do I receive alerts by email or Slack? Enable monitorMode, create a Schedule (e.g. every weekday at 08:00) and add an integration (email, Slack, Google Sheets, Zapier, Make or a webhook) that runs when the Actor succeeds.

Why are some values missing? Publishing the estimated value is optional for buyers. minValueEur excludes notices without a value.

Limitations

  • Data is as published on TED; quality and completeness depend on the buyer. Some notices have no value, deadline or English title.
  • Only notices above EU thresholds (and voluntary publications) are on TED. National below-threshold tenders are published on national portals.
  • CPV labels come from TED's English notice headline (main CPV) plus a built-in table of CPV divisions; labels of all additional CPV codes are not included.
  • Currency conversion for minValueEur and valueEur uses fixed approximate exchange rates.

The Actor uses the official public TED Search API of the Publications Office of the European Union. TED notices are official open data; reuse is authorised under the EU open data policy (Commission Decision 2011/833/EU), with attribution of the source (© European Union, https://ted.europa.eu). The Actor does not log in or bypass any protection. Notices may contain names and contact details of contact persons; process such personal data in line with the GDPR.