TED EU Tenders Scraper: Public Procurement Notices by CPV
Pricing
from $4.00 / 1,000 tender notices
TED EU Tenders Scraper: Public Procurement Notices by CPV
Search EU public procurement notices on TED by country, CPV code, keyword, stage and date. Official TED API, clean JSON with buyer, value, deadline, CPV and winners. No scraping, no proxies.
Pricing
from $4.00 / 1,000 tender notices
Rating
0.0
(0)
Developer
MB AISolution
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Share
TED EU Tenders Scraper: Public Procurement Notices by CPV, Country & Keyword
Search EU public procurement notices by country, CPV code, keyword, stage and date - and get clean, flat JSON. The Actor uses the official TED API (Tenders Electronic Daily, Publications Office of the European Union): no scraping, no proxies, no API key. Each result is one notice with title, buyer, CPV codes, estimated or awarded value, submission deadline, procedure type, winners (organisations only) and direct links to TED. Built for bid managers, consultants, B2B sales teams, market analysts and AI agents.
What you can do
- Find open tenders:
noticeStage = competition+onlyOpenForBids = truereturns calls for tender you can still bid on. - Track awards and competitors:
noticeStage = resultshows who won what, for which value. - Monitor a market: schedule a daily run for your CPV codes and countries and send new notices to Slack, email or your CRM.
- Feed AI agents / RAG: structured notices with stable field names and links to the XML/PDF.
Input
{"countries": ["LT", "LV", "EE"],"cpvCodes": ["72", "48"],"keywords": ["software"],"noticeStage": "competition","publishedFrom": "2026-09-01","onlyOpenForBids": true,"language": "eng","maxItems": 100}
| Field | Description |
|---|---|
countries | Buyer country, ISO-2 or ISO-3 (LT, LTU). Empty = all. |
cpvCodes | CPV codes or prefixes (2-8 digits). 72 = all IT services. Any match. |
keywords | Full-text search, any keyword matches. |
noticeStage | any, competition (contract notices), result (award notices), planning (prior information). |
publishedFrom / publishedTo | YYYY-MM-DD. Default start: 30 days ago. |
onlyOpenForBids | Only notices with a submission deadline today or later. |
language | Preferred 3-letter language for texts (eng, lit, lav, deu...). Falls back to English, then original language. |
maxItems | Max notices (newest first). Each is one billed result. |
At least one filter is required.
Output
{"recordType": "tender_notice","noticeId": "675226-2026","url": "https://ted.europa.eu/en/notice/675226-2026/html","pdfUrl": "https://ted.europa.eu/en/notice/675226-2026/pdf","xmlUrl": "https://ted.europa.eu/en/notice/675226-2026/xml","publicationDate": "2026-10-01","noticeType": "cn-standard","noticeStage": "competition","title": "Lithuania – Data transmission services – Duomenų perdavimo paslaugos","lotTitles": ["Duomenų perdavimo paslaugos"],"buyers": ["Valstybės įmonė Valstybinių miškų urėdija (PV)"],"buyerCities": ["Kaunas"],"buyerCountries": ["LTU"],"cpvCodes": ["72318000"],"contractNature": ["services"],"procedureType": "open","estimatedValue": { "amount": 354000, "currency": "EUR", "lotCount": 1 },"awardedValue": null,"submissionDeadline": "2026-10-22","openForBids": true,"winners": [],"winnersWithheld": 0,"placeOfPerformance": ["LTU"],"legalBasis": ["32014L0024"],"source": "TED - Tenders Electronic Daily (Publications Office of the EU), https://ted.europa.eu","scrapedAt": "2026-10-01T19:32:22.030Z"}
Use the dataset views Tenders, Awards and Errors in Apify Console. API-level problems (invalid input, TED outage) end the run with a clear message or a free error record.
How much does it cost?
Pay per event: 0.004 USD per notice (4.00 USD per 1,000) plus a start fee of 0.00005 USD per run. error records are free. Platform usage is included in the event price.
| Scenario | Notices | Approx. cost |
|---|---|---|
Test run (maxItems 5) | 5 | 0.02 USD |
| Daily alert; if your filters return 20 new notices a day | 20 per run | 0.08 USD/day, about 2.40 USD/month |
| Market snapshot: all IT-services (CPV 72) notices for 3 countries, 500 notices | 500 | 2.00 USD |
| Research export | 5,000 | 20.00 USD |
One run with default settings (maxItems 50) | max 50 | max 0.20 USD |
Cost control: maxItems is a hard cap on billed notices per run; the Actor also stops at your run's maximum cost per run setting. Narrow with countries, cpvCodes, publishedFrom and onlyOpenForBids to pay only for relevant notices.
Why this Actor (vs. alternatives)
Other Store Actors also read TED (for example foxlabs/ted-tenders, memo23/ted-tenders-scraper, dltik/ted-europa-scraper). This one focuses on: official TED API only (no scraping or proxies), a notice-stage filter (open calls vs awards vs planning), an onlyOpenForBids switch, preferred-language texts, and winner names limited to organisations (names that may belong to private individuals are withheld). Check the Store pages for each Actor's current price and fields. (Based on public Store listings, 2026-10-02.)
Use it from n8n, Make, code and AI agents
- n8n / Make: schedule "Run Actor" daily with
publishedFromset to yesterday (expression), then send each item to Slack / Google Sheets / your CRM. - API:
curl -X POST "https://api.apify.com/v2/acts/ai_solution~ted-eu-tenders-search/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"countries":["LT"],"cpvCodes":["72"],"noticeStage":"competition","onlyOpenForBids":true,"maxItems":20}'
- MCP / AI agents: available via the Apify MCP server (
https://mcp.apify.com, toolai_solution/ted-eu-tenders-search). Fully described input schema and stable output fields let an agent answer "which IT tenders are open in the Baltics?" in one call.
Scheduling and webhooks
- In Apify Console open Schedules, create e.g.
0 7 * * *(daily 07:00 UTC) and add this Actor with your filters (countries,cpvCodes,noticeStage,onlyOpenForBids). - Add a webhook for
ACTOR.RUN.SUCCEEDED(Actor Integrations tab) to your endpoint or an n8n/Make Webhook node; the payload containsresource.defaultDatasetId. - Read
GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?token=...and forward newnoticeIds to Slack, email or your CRM. A schedule uses a fixed input, so for "since yesterday" setpublishedFromdynamically (n8n expression or API) - otherwise the default window is the last 30 days.
Changelog
- 1.0.4 - Lower price: 0.004 USD per result (was 0.006 USD). No other changes.
- 1.0.3 - Clearer README (cost examples, comparison, scheduling), new Store title and description. No changes to input, output fields, behaviour or pricing.
- 1.0.2 - Output schema (dataset views in the Output tab).
- 1.0.0 - First release.
Support / Issues
Found a bug or need another field? Open a ticket in this Actor's Issues tab in Apify Console.
Data source, license and attribution
Data comes from TED, the official EU procurement journal, through its public search API. According to the TED legal notice, procurement notices can be freely reused, for commercial and non-commercial purposes; please keep the source reference (source field) when you republish. This Actor is not affiliated with or endorsed by the European Union.
Limitations and privacy
- Values are as published by buyers (
estimatedValueis the sum of lot estimates when all lots use one currency, otherwisenull). Many notices omit values. - Notices are returned one per notice, not one per lot; lot titles are listed in
lotTitles. - Winners: only names that look like organisations (company-form markers such as UAB, SIA, GmbH, S.A., Sp. z o.o.) are returned. Names that may belong to private individuals (sole traders) are withheld and only counted in
winnersWithheld. Contact persons, emails and phone numbers are never requested. - National procurement portals publish more tenders than TED; TED covers notices above EU thresholds and those published voluntarily.
- Data freshness is that of TED (new notices appear daily, with a short publication delay).