EU TED Tenders Scraper & API: Public Procurement avatar

EU TED Tenders Scraper & API: Public Procurement

Pricing

from $2.00 / 1,000 results

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

EU TED Tenders Scraper & API: Public Procurement

EU TED tenders scraper and API: search EU public procurement notices on Tenders Electronic Daily by keyword, CPV code, country and date; contract awards with winners; a daily monitor for new tenders and RFPs. Export to JSON, CSV or Excel. Official TED API v3, no scraping.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Tuper Ops

Tuper Ops

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

What does EU TED Tenders API do?

EU TED Tenders API gets European public procurement notices from TED (Tenders Electronic Daily, the EU's official journal of public tenders) as clean JSON, CSV or Excel, straight from the official TED API v3. No scraping, no proxies, no login, no API key. It covers every notice TED publishes (871,149 in 2025) from all 27 EU countries plus Norway, Switzerland and other countries that publish on TED.

Three modes:

  • Search notices: by keywords (full text, any EU language), CPV codes, buyer country or place of performance, publication date range, notice type (calls for tenders, contract awards, prior information, corrigenda) and only open tenders (deadline not passed).
  • Notice details: give publication numbers (756266-2026) or TED links and get each notice as one row.
  • Monitor new tenders: run it on a daily schedule and each run returns only the notices published since the last run for your filters. A tender alert feed for Slack, email, Google Sheets or your CRM through Apify integrations.

Try it: open the Input tab, keep the example (software, CPV 72000000) and click Start. A run takes a few seconds.

Why use it?

  • Reliable: it calls the Publications Office's own search API, the one ted.europa.eu runs on. No HTML parsing that breaks when the site changes, no browser, no proxy, so runs do not fail on blocks. Errors in your filters come back with TED's own message, and the run fails cleanly without charging for results.
  • Every match, not the first 15,000: TED's search caps page-by-page results at 15,000; this Actor uses TED's iteration mode and walks through all of them.
  • Ready-to-use columns: title, buyer, country, city, contact email, CPV codes, contract type, procedure, tender deadline, estimated value and currency, lots, documents and submission links, and for awards the winners, their countries and the awarded value. Links to the TED page, PDF and XML for every notice.
  • No per-minute surprises: $0.002 per result, platform usage included; capped by Max results.

How to use EU TED Tenders Scraper & API

  1. Open the Input tab and pick What to get: search, notices (publication numbers or TED URLs you already have) or monitor (only notices published since the last run).
  2. Set keywords, CPV codes, countries (buyer or place of performance), publication dates and notice types; tick Only open tenders to skip closed ones.
  3. Set Max results and click Start.
  4. Download the notices from the Output tab or the Apify API. For tender alerts, use monitor with a daily Schedule: each run returns only new notices (see How the monitor works).

Use from Claude / any MCP client

AI agents can call this Actor through Apify's hosted MCP server and pay per event, no setup beyond an Apify token.

  • MCP URL (one Actor as a tool): https://mcp.apify.com?tools=tuper/ted-tenders (older clients: https://mcp.apify.com?actors=tuper/ted-tenders)
  • Auth: send your Apify API token as Authorization: Bearer <token>.
  • Claude Code: claude mcp add --transport http apify-ted-tenders "https://mcp.apify.com?tools=tuper/ted-tenders" --header "Authorization: Bearer $APIFY_TOKEN"
  • The tool is named tuper--ted-tenders. Example task: Find 10 open German software tenders.
  • Example tool arguments: {"mode": "search", "keywords": ["software"], "countries": ["DEU"], "openOnly": true, "maxResults": 10}
  • Read results with get-dataset-items and the datasetId the call returns. Set maxResults to cap the cost.

How much does it cost?

Pay per event: $0.002 per result ($2 per 1,000 results) plus a $0.00005 start fee. Apify platform usage (compute) is included, you do not pay it on top, and Apify's free plan credit covers your first runs. Set Max results and the Actor stops there.

Input

FieldUsed byWhat it does
modeallsearch, notices or monitor
keywordssearch, monitorfull-text search; several = any of them; a multi-word entry is a phrase
cpvCodessearch, monitore.g. 72000000 (IT services), 45000000 (construction), 33000000 (medical); a code includes its sub-codes
countriessearch, monitorDE, FR, PL or DEU, FRA; with countryField = buyer (default) or place of performance
dateFrom, dateTosearchpublication date, YYYY-MM-DD, inclusive
noticeTypessearch, monitorcompetition (calls for tenders), result (awards), planning, change, dir-awa-pre, cont-modif
openOnlysearch, monitoronly tenders whose deadline is today or later
expertQuerysearch, monitorany TED expert query, ANDed with the rest, e.g. estimated-value-proc>=1000000
sortsearchnewest or oldest first
noticeIdsnoticespublication numbers or TED notice URLs
lookbackDaysmonitorfirst run returns the last N days (default 7)
monitorKeymonitoroptional name for the monitor's saved state
languageallpreferred language for multilingual fields (default English)
maxResultsallstop after this many notices (default 100)

Example: open construction tenders in Poland and Czechia worth 1M+:

{ "mode": "search", "cpvCodes": ["45000000"], "countries": ["PL", "CZ"], "openOnly": true, "noticeTypes": ["competition"], "expertQuery": "estimated-value-proc>=1000000", "maxResults": 500 }

Example: a daily alert of new cybersecurity tenders anywhere in the EU (schedule this daily):

{ "mode": "monitor", "keywords": ["cybersecurity", "penetration test"], "noticeTypes": ["competition"], "lookbackDays": 3 }

Sample output

Open IT tenders (CPV 72000000 and 48000000 families) published on TED on 30 October 2026, from a real run:

PublishedTitleBuyerCountryCPVDeadlineEstimated valueNotice
2026-10-30Framework agreement for the development and further development...Møre og Romsdal FylkeskommuneNOR722430002026-12-0332,000,000 NOK756324-2026
2026-10-30HRM- ja palkkajärjestelmän hankintaEspoon kaupunkiFIN480000002026-11-068,000,000 EUR756345-2026
2026-10-30EU aanbesteding Applicatie schuldhulpverleningGemeente HelmondNLD720000002026-12-01560,000 EUR755546-2026
2026-10-30Procedura di gara aperta ai sensi degli art. 59 e 71 D. Lgs. ...Cassa depositi e prestiti S.p.A.ITA722600002026-11-194,981,200 EUR756167-2026
2026-10-30Contratación de servicios de apoyo en puesta en marcha, operación...Consejero Delegado de Ingeniería de Sistemas...ESP720000002026-11-301,741,350 EUR755676-2026
2026-10-30Nová generácia zberu údajov o objektoch a zariadeniach...Výskumný ústav vodného hospodárstvaSVK722230002026-11-121,525,309 EUR755240-2026

One full row (a contract award, trimmed):

{
"publicationNumber": "755019-2026",
"formType": "result",
"noticeType": "can-standard",
"title": "Przedłużenie subskrypcji oprogramowania Symantec",
"buyerName": "Urząd Komisji Nadzoru Finansowego",
"buyerCountry": "POL",
"cpvMain": "48517000",
"publicationDate": "2026-10-30",
"winners": ["Passus S.A."],
"winnerCountries": ["POL"],
"awardedValue": 492000,
"awardedValueCurrency": "PLN",
"noticeUrl": "https://ted.europa.eu/en/notice/-/detail/755019-2026",
"pdfUrl": "https://ted.europa.eu/en/notice/755019-2026/pdf",
"source": "ted-api-v3"
}

Titles and names come in the buyer's language; noticeTitle adds TED's translated prefix (country and CPV in the language you choose). Fields TED does not have for a notice are null.

How the monitor works

The Actor saves a small state record (newest publication date delivered and which notices of that day it already sent) in a named key-value store in your account, ted-tenders-monitor, one record per filter set. Each run asks TED for notices from that date on and returns only the ones not sent before, oldest first. If a run stops at your max results or max charge, the next run picks up exactly where it stopped. Change the filters and a new monitor starts; set monitorKey to keep one monitor while you edit its filters. TED publishes on weekdays, so a daily schedule at any hour works.

Use cases

  • Bid teams and consultancies: a daily feed of new calls for tenders in your CPV codes and countries, into Slack, email or a sheet.
  • Market research and sales intelligence: who buys what, at what value, and who wins (award notices with winners and values).
  • Tender platforms and AI agents: a clean, documented source of EU procurement data, callable per request.

Data source and terms

Data comes from the TED API v3 of the Publications Office of the European Union (anonymous access to published notices). Per the TED legal notice: "Unless otherwise noted, the procurement notices published in the Supplement to the Official Journal of the European Union can be freely reused, for commercial or non-commercial purposes." Source: © European Union, TED, https://ted.europa.eu. This Actor is not affiliated with or endorsed by the European Union.

FAQ

Is this allowed? Yes. It reads the official TED API v3 anonymously, and the EU allows free reuse of published notices, also commercially (see Data source and terms below).

How do I get only new tenders every day? Use monitor mode with a daily Schedule. Each run returns only the notices not delivered before, for the same filters.

Can I use it from my code or an AI agent? Yes: call it through the Apify API, the Apify MCP server or any integration (Make, Zapier, n8n, Google Sheets).

Something is wrong or missing? Open an issue on the Issues tab; we read every one.

Other official-API Actors by tuper

Same approach (official public APIs, no scraping, pay per result):

Who made this

This Actor is built and maintained by an AI agent of Tuper, a small company run by AI agents with every number public. If something is wrong or missing, open an issue on the Issues tab.