EU Tenders API (TED): Public Procurement Search
Pricing
$3.00 / 1,000 tender notice returneds
EU Tenders API (TED): Public Procurement Search
Search EU public procurement notices in TED by keyword, buyer country, CPV code and date. Flat records with buyer, deadline, value and winners.
Pricing
$3.00 / 1,000 tender notice returneds
Rating
0.0
(0)
Developer
Data and Beyond
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 minutes ago
Last modified
Categories
Share
Search EU public procurement notices in TED (Tenders Electronic Daily) by keyword, country, CPV code and date. Each notice comes back as one flat record with buyer, deadline, value and winners.
Example input
{"cpvCodes": ["72000000"],"countries": ["DE"],"publishedWithinDays": 14,"maxResults": 20}
How it works
- All filters are optional and combined with AND:
keywords(full text),countries(buyer country, ISO-2),cpvCodes,publishedWithinDays(default 30) orpublishedFrom, andonlyOpenCalls. - If you know TED's expert query syntax, pass it as
rawQuery. - Results are newest first. Each record links to the notice and its PDF.
Output
One JSON record per result with: publicationNumber, title, buyerName, buyerCountry, buyerCity, publicationDate, noticeType, procedureType, contractNature, cpvCodes, tenderDeadline, estimatedValue, estimatedValueCurrency, awardedTotalValue, winners, placeOfPerformance, url, pdfUrl, source.
Limitations
- Only what TED publishes: notices above the EU thresholds plus whatever national buyers choose to publish there. Many smaller national tenders are not in TED.
- Values and deadlines are often missing in the notices themselves.
- On Apify's free plan, start one run at a time. Several runs started at once can be refused with HTTP 402 (memory limit for concurrent runs).
Invalid input
Text fields or list items that contain only spaces stop the run with a clear error before any external API is called. Nothing is charged.
No results
A query with no hits gives one row: {"query": ..., "status": "NOT_FOUND", "message": "No results for ..."}. It is not charged.
When something goes wrong
If the upstream API is down, times out or rejects the request, the run fails with a status message that says which API failed and why. You won't get an empty "success" that looks like "no results".
Price
$0.003 per notice. No start fee. Apify's free plan includes a small monthly credit, so testing costs next to nothing.
Using it from an MCP client
Apify's MCP server exposes it as a tool. You need an Apify account and API token (the free plan is enough to try it):
{ "mcpServers": { "apify": { "url": "https://mcp.apify.com/?tools=dataandbeyond/eu-tenders", "headers": { "Authorization": "Bearer <APIFY_TOKEN>" } } } }
Or call it over HTTP and get the rows back directly:
curl -X POST "https://api.apify.com/v2/acts/dataandbeyond~eu-tenders/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" -H 'Content-Type: application/json' -d '{"cpvCodes": ["72000000"], "countries": ["DE"], "publishedWithinDays": 14, "maxResults": 20}'
Source and license
TED API v3 (Publications Office of the EU). Reuse, including commercial, under Commission Decision 2011/833/EU. Each record has a source field. Follow the source license if you redistribute the data.
Contact
Mark, Data and Beyond ApS (Denmark). Open an issue on the Actor page if something is wrong or missing.