EU Tenders API: TED Public Procurement Notices
Pricing
from $1.75 / 1,000 tender notices
EU Tenders API: TED Public Procurement Notices
European public tenders (EU tenders), calls for competition and contract award notices from TED (Tenders Electronic Daily), the official EU procurement journal, for all EU and EEA countries. Filter by keyword, country, CPV code and deadline. Optional tender alerts: only new notices.
Pricing
from $1.75 / 1,000 tender notices
Rating
0.0
(0)
Developer
Tabulary
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Features
Share
What does EU Tenders API do?
European public tenders (EU tenders), calls for competition, prior information notices and contract awards from TED (Tenders Electronic Daily), the official EU journal for public procurement, for all EU and EEA countries. Filter by keyword, buyer country, CPV code and deadline, and get one clean record per notice. Turn on only new since the last run and schedule it, and you have a European tender alert feed that costs cents. Bid teams, consultants, market researchers and AI agents use it to track public contracts across Europe without searching TED by hand. No API key needed.
What you get
- Title in your language (TED translates titles into all 24 EU languages), description, buyer name, city and country, and links to the notice page and PDF.
- Notice type grouped the way buyers think about it: open calls, planning (prior information) and results (awards).
- Publication date, tender deadline and days left until the deadline.
- Procedure type, contract nature (works, supplies, services), CPV codes and place of performance (NUTS codes).
- Estimated value and currency, total value, and for awards the winning suppliers.
- Only-new delivery for scheduled runs: you never pay twice for the same notice.
- Export as JSON, CSV or Excel, send to Google Sheets, Slack or a webhook, or call it as a tool from AI agents through the Apify MCP server.
How much does it cost?
You pay per tender notice saved, with no monthly fee: $2.50 per 1,000 tender notices on Apify's free plan, and 10–40% less on paid Apify plans. Each run also costs $0.001 to start. Apify's free plan includes $5 of credit every month, enough for about 2,000 tender notices. Prices as of October 2026; the price shown on this page is the one that applies.
| Use | Tender notices | Cost on the free plan |
|---|---|---|
| One search | 100 | about $0.25 |
| Daily alert for one sector, about 50 new notices a day | about 1,500 a month | about $3.75 a month |
| 90 days of awards in your sector | 2,000 | about $5.00 |
Set Maximum cost per run to cap any run; the Actor stops cleanly at the cap and keeps everything it saved.
Ready-made searches
Paste one of these into the JSON input tab, or set the same fields in the form.
Open IT security calls from German and French buyers, last 30 days · open this example
{ "keywords": "cyber security, penetration testing", "countries": ["DEU", "FRA"], "publishedWithinDays": 30, "maxItems": 100 }
Daily alert: new IT services tenders across the EU (schedule it every morning) · open this example
{ "cpvCodes": ["72"], "publishedWithinDays": 2, "onlyNewSinceLastRun": true, "maxItems": 1000 }
Construction works in the Nordics · open this example
{ "cpvCodes": ["45"], "countries": ["SWE", "DNK", "FIN", "NOR"], "publishedWithinDays": 14, "maxItems": 500 }
Who won: contract awards for medical equipment, last 90 days · open this example
{ "noticeCategory": "result", "cpvCodes": ["33"], "publishedWithinDays": 90, "maxItems": 2000 }
Tender alerts: only new since the last run
- Set your filters and turn on Only new since the last run (tender alerts).
- Save it as a task and add an Apify Schedule (for example every weekday at 07:00).
- Connect the output: Apify's built-in Slack and email notifications, a webhook, or Make, Zapier and n8n to push each new tender into Google Sheets, a CRM or a Teams channel.
Each run returns only notices that earlier runs with the same filters have not delivered, newest first, so you pay only for what is new. TED never edits a published notice (a correction is a new notice), so nothing is missed. The first run returns everything that matches. If a run stops at your maximum results or spending limit, the rest is delivered next time. The memory is kept per set of filters, so separate tasks never interfere.
Input
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string | "" (all) | Comma-separated words or phrases searched in the full notice text. Any one is enough. |
noticeCategory | string | competition | competition (open calls), planning (prior information), result (awards) or any. |
countries | array | [] (all) | Buyer countries, e.g. ["DEU", "FR"]. Two- or three-letter ISO codes. |
cpvCodes | array | [] | CPV codes; each also matches everything below it (72 means 72000000, all IT services). |
onlyOpen | boolean | true | For open calls, keep only notices with a tender deadline today or later. |
onlyNewSinceLastRun | boolean | false | Return only notices that earlier runs with the same filters have not delivered (see Tender alerts). |
publishedWithinDays | integer | 7 | Notices published in the last 1 to 365 days. |
language | string | eng | Language for titles and links: any of the 24 EU languages. |
maxItems | integer | 10 | Stop after this many notices. |
Output
One dataset item per notice. A real item from a test run on 13 October 2026 (daysToDeadline
added for illustration):
{"publicationNumber": "706518-2026","noticeType": "cn-standard","noticeCategory": "competition","title": "Ireland – Design consultancy services – CFT 4012 – MPFA for Signage Design, and Procurement of signage manufacture and installation with an initial contract at County Hall and South Dublin County Council Libraries","titleLanguage": "eng","buyerName": "South Dublin County Council","buyerCountry": "IRL","buyerCity": "Dublin","publishedAt": "2026-10-13","tenderDeadline": "2026-11-09","daysToDeadline": 27,"procedureType": "open","contractNature": ["services"],"cpvCodes": ["79415200", "34992300"],"placeOfPerformance": ["IE061", "IRL"],"estimatedValue": 550000,"estimatedValueCurrency": "EUR","totalValue": 550000,"totalValueCurrency": "EUR","winnerNames": [],"description": "Multiparty Framework for Signage Design, and Procurement of signage manufacture and installation with an initial contract for signage design, and procurement of signage manufacture and installation at County Hall and South Dublin County Council Libraries. The initial contract would be for 15 signs across County Building and South Dublin County Council Libraries.","url": "https://ted.europa.eu/en/notice/-/detail/706518-2026","pdfUrl": "https://ted.europa.eu/en/notice/706518-2026/pdf"}
Missing values are null (or an empty list). Dates are ISO 8601 (YYYY-MM-DD).
estimatedValue is the value for the whole procedure, or for the single lot when only one lot
value is given; it is never summed or guessed. daysToDeadline counts whole days from the run to
the end of the first lot's deadline day (UTC).
Use it from AI agents
Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server
(https://mcp.apify.com?tools=tabulary/eu-ted-tenders). Ask in plain language, for example:
"List open EU tenders for cloud hosting from Dutch and Belgian buyers that close in the next 30
days." The agent fills in the input and gets structured records back.
Use it from code
curl -X POST "https://api.apify.com/v2/acts/tabulary~eu-ted-tenders/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": "software", "countries": ["DEU"], "publishedWithinDays": 7, "maxItems": 50}'
The same works with the Apify Python and JavaScript clients. See the API tab for details.
Data source and limits
- Source: the official TED Search API, which allows anonymous search of published notices for analysis and reuse. Reuse is subject to the TED legal notice; the source is the Publications Office of the European Union.
- Coverage: notices that EU and EEA public buyers must publish in TED, mostly contracts above the EU thresholds. Smaller national contracts often appear only on national portals.
- Keyword search uses TED's full-text index, so a phrase can match text in any part of the notice, in any language.
- One run returns at most 10,000 notices (
maxItems). For bigger pulls, split by country, CPV code or period. - The Actor sends at most about one request per second, identifies itself, and backs off when TED asks it to.
- No personal contact data: contact-person, email and phone fields are never requested, and
email addresses or phone numbers that buyers type into a title or description are replaced
with
[email removed]or[phone removed]. Otherwise text is copied as published. - Not affiliated with or endorsed by the European Union or the Publications Office.
Other Tabulary tools
Clean data from official and public sources, priced per result:
- Airport METAR & TAF Weather
- Company Job Postings: Greenhouse, Lever, Ashby & Workable
- Remote Jobs API: RemoteOK & Jobicy Postings
- SAM.gov Federal Contract Opportunities
- UK Gender Pay Gap Reports API: Employer Filings
- UK House Price Index API: Average Prices by Area
- UK Modern Slavery Statement Registry API
- UK Tenders API: Contracts Finder & Find a Tender
FAQ
Is this data official? Yes. It comes from TED's own API. Only field names and formatting change, and contact details in free text are masked.
How fresh is it? Every run fetches live data, so notices appear as soon as TED publishes them (TED publishes on working days).
How do I get new tenders every morning? Turn on only-new delivery, save the input as a task and schedule it (see Tender alerts).
Does it include the UK? UK buyers stopped publishing in TED after Brexit. For UK tenders, use UK Tenders API.
Why is the description in another language? TED translates titles automatically but keeps
descriptions in the language the buyer used. Pick your language for titles with language.
Can I get buyer contact details? No. The Actor deliberately leaves out personal contact data. Each record links to the official notice, which shows how to respond.
Something broke? Open an issue on the Issues tab. The Actor is tested daily.
Changelog
- 2026-10-21: only-new delivery for scheduled tender alerts,
daysToDeadline, ready-made searches. - 2026-10-13: first version: TED Search API v3 with keyword, country, CPV, notice type and open-deadline filters.
About Tabulary
This tool is part of Tabulary: clean tables from official public sources. Every Tabulary tool uses the source's official API or open data where one exists, collects no personal data, and is tested on Apify every day. Questions or ideas? Open an issue on the Issues tab.