EU Tenders (TED) for Central & Eastern Europe → JSON
Pricing
from $1.40 / 1,000 tender notices
EU Tenders (TED) for Central & Eastern Europe → JSON
Public procurement notices from TED (Tenders Electronic Daily) for PL, CZ, SK, HU, SI, HR, RO, BG, AT, LT, LV, EE as clean JSON: buyer, CPV, values, deadlines, winners. Official TED API v3, personal contact data removed by default, incremental mode.
Pricing
from $1.40 / 1,000 tender notices
Rating
0.0
(0)
Developer
Matus Holec
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
EU tender notices from TED for Central & Eastern Europe as clean JSON
Get public-procurement notices published on TED – Tenders Electronic Daily (the Supplement to the Official Journal of the EU) for buyers in twelve Central and Eastern European countries as flat, validated JSON: buyer, title, CPV codes, place of performance, estimated value, deadline, winners and award value, with deep links to the HTML, XML and PDF notice. The actor uses the official TED Search API v3 (no scraping, no API key), maps eForms fields to one stable schema, requests no personal contact data unless you opt in, and in incremental mode returns only notices published since the previous run.
Default countries: Poland, Czechia, Slovakia, Hungary, Slovenia, Croatia, Romania, Bulgaria, Austria, Lithuania, Latvia, Estonia (POL CZE SVK HUN SVN HRV ROU BGR AUT LTU LVA EST). Any other ISO country code works too.
Who uses it
- Bid managers and sales teams — a daily feed of new contract notices by CPV and country, pushed to Slack, a CRM or a sheet via Make, Zapier or n8n.
- Procurement analysts and compliance teams — award notices with winners and values for market-share, pricing and vendor-risk analysis.
- Data journalists and researchers — who buys what from whom across CEE, with publication numbers to cite.
Use cases
1. New construction tenders in Czechia and Slovakia, last 7 days (default range):
{ "countries": ["CZ", "SK"], "cpv": ["45"], "noticeTypes": ["cn-standard"] }
Contract notices whose CPV starts with 45, with estimated value and submission deadline.
2. Who won IT contracts in Poland in September 2026:
{ "countries": ["POL"], "cpv": ["72"], "noticeTypes": ["can-standard"], "dateFrom": "2026-09-01", "dateTo": "2026-09-30", "maxRecords": 5000 }
Award notices with winners[] (name, country, national ID) and awardValue.
3. Daily delta for a buyer (schedule as a task):
{ "countries": ["CZE"], "name": "Praha", "mode": "incremental" }
Only notices published since the previous run whose buyer name contains "Praha".
Input
| Field | Type | Default | Meaning |
|---|---|---|---|
countries | string[] | 12 CEE countries | Buyer country, ISO alpha-2 or alpha-3 (buyer-country IN (…)). |
cpv | string[] | [] | CPV codes; 8 digits = exact, shorter = prefix (45 → 45*). |
noticeTypes | string[] | [] = all | eForms notice types: cn-standard, can-standard, pin-only, can-modif, cn-social, veat, … |
placeOfPerformance | string[] | [] | Country or NUTS codes (CZ06, PL9), also anyw, anyw-eea. |
name | string | – | Words that must appear in the buyer name (buyer-name ~ ("…"), stemmed, all words). |
dateFrom, dateTo | date | last daysBack days / none | Publication-date range. |
daysBack | integer | 7 | Default lower bound when dateFrom is empty. TED publishes Mon–Fri. |
scope | ALL / ACTIVE / LATEST | ALL | ACTIVE = deadline not passed; LATEST = today's OJ S edition only. |
includeContactPersons | boolean | false | Opt-in contacts[] with the buyer's contact-point name, e-mail and phone (see Data protection). |
mode | full / incremental | full | See Incremental mode. |
maxRecords | integer | 1000 | Stop after this many notices. |
icos, region | – | ignored | TED has no IČO lookup (use name) and no region filter (use placeOfPerformance). |
Output
One TenderNotice per notice. Real award notice from the default input (local run on 2026-10-18; description shortened):
{"publicationNumber": "715145-2026","publicationDate": "2026-10-16","ojsNumber": "201/2026","noticeType": "can-standard", "formType": "result", "procedureType": "open","title": "Czechia – Software support services – Poskytování provozní podpory a dalších služeb pro systém Manuscriptorium","description": "Předmětem plnění veřejné zakázky je poskytování provozní podpory a dalších služeb pro systém Manuscriptorium, …","buyer": { "name": "Národní knihovna České republiky", "country": "CZ", "id": "00023221", "city": "Praha", "url": "https://www.nkp.cz/" },"cpv": ["72261000"],"placeOfPerformance": ["CZ010", "CZE"],"contractNature": "services","estimatedValue": { "amount": 4350000, "currency": "CZK" },"winners": [ { "name": "aSolution s.r.o.", "country": "CZ", "id": "26398591" } ],"awardValue": { "amount": 1042678, "currency": "CZK" },"links": {"html": "https://ted.europa.eu/en/notice/-/detail/715145-2026","xml": "https://ted.europa.eu/en/notice/715145-2026/xml","pdf": "https://ted.europa.eu/en/notice/715145-2026/pdf"},"provenance": {"source": "ted","sourceName": "TED – Tenders Electronic Daily, Publications Office of the European Union","sourceUrl": "https://ted.europa.eu/en/notice/-/detail/715145-2026","licence": "Source: TED, Publications Office of the European Union (https://ted.europa.eu), reused under Commission Decision 2011/833/EU. …","retrievedAt": "2026-10-18T01:57:45.860Z", "sourceUpdatedAt": "2026-10-16"}}
Contract notices (formType: "competition") carry deadline (earliest lot deadline) and an empty winners. title and description are English when TED has it, otherwise the buyer country's language. buyer.id is the national registration number (IČO, NIP, CUI…). estimatedValue is omitted when only several lot values exist (no silent summing). Run statistics, including the exact TED query, are in the key-value store record STATS.
Pricing in plain words
You pay $2 per 1,000 notices returned, plus $0.00005 per run start. Empty results are free — a weekend run that finds no new notices costs nothing. On the free plan ($5 monthly credit) that is about 2,400 notices a month. Bronze, Silver and Gold volume discounts are configured on the store page. The run stops gracefully at maxRecords or your maximum total charge; in incremental mode the remainder is picked up by the next run.
Limits & fair use
- TED's fair-usage policy allows 700 requests per minute per IP and 600 visualisations or downloads in 6 minutes. This actor sends 2 requests per second, 1 at a time, 250 notices per request, and never downloads notice XML or PDF — a run of 10,000 notices needs about 41 requests. Persistent 429, 403, 5xx or a maintenance page fail the run with a clear message; nothing is charged in that case.
- Query syntax is validated first (
checkQuerySyntax); a bad field or value fails the run with TED's own message. ITERATIONpaging (Elasticsearch point-in-time) has no cap on total results; tens of thousands of notices are possible but take time (about 500 notices per second).nameis a buyer-name search with TED's~operator (stemming, all words must match), not a full-text search.
Incremental mode
The cursor is kept in the run's default key-value store under CURSOR and mirrored to the named key-value store ted-cee-notices-cursor (override with the cursorStore input, one per watch-list), so it survives across runs and tasks. Format: { "value": { "lastPublicationDate": "2026-10-16", "seenNumbersOnThatDate": ["715119-2026", "…"] }, "updatedAt": "…" }. The next run queries publication-date >= lastPublicationDate sorted ascending and skips the publication numbers already returned on that date. The cursor advances only over records actually pushed, so hitting maxRecords or the budget never loses notices. A first incremental run behaves like full with your date range. Changing filters between runs does not reset the cursor; delete CURSOR to start over. TED notices are immutable — corrections arrive as new notices (can-modif, corr) with new publication numbers.
Data protection
TED publishes data about economic entities (contracting authorities and tenderers) under Commission Decision 2011/833/EU, but notices also contain contact persons, e-mails, phone numbers and sometimes beneficial-owner and jury-member names. This actor:
- requests none of those fields from TED by default — only 33 organisation-level fields; a key deny-list scrub is applied to every record as a last line of defence;
- reduces a winner name that looks like a natural person (two or three capitalised words, no digits, legal-form or organisation words) to initials, keeping the identifier and country — a conservative heuristic for sole traders, not a guarantee;
- with
includeContactPersons: trueadds the buyer's published contact point (name, e-mail, phone) tocontacts[]; you become the controller of that personal data, so enable it only with a lawful basis such as contacting the authority about the tender; - stores no personal data on the developer's side — datasets live in your Apify storage; only the cursor and counters are kept.
Lawful basis for the processing inside a run is Art. 6(1)(f) GDPR — legitimate interest in machine-readable procurement data for due diligence, market intelligence and journalism. You are the controller of what you download. Requests concerning notice content go to the Publications Office (op-copyright@publications.europa.eu) or the buyer named in the notice; links.html opens the notice. This section describes the actor's behaviour and is not legal advice.
FAQ
Why did my run return nothing? TED publishes Monday to Friday; with daysBack under 3 or scope: LATEST a weekend run can be legitimately empty — and free. Check STATS.totalMatching and the exact query.
Can I search by winner or by IČO/NIP? Not in this version. Filter award notices by country, CPV and date, then match winners[].id in your own pipeline; icos is ignored.
Where is the full tender text and the documents? Use links.html, links.xml or links.pdf. The actor does not download them (they count against TED's 600 downloads per 6 minutes).
Why do some notices lack buyer.id, estimatedValue or winners? Only eForms-era fields are used; legacy pre-2024 notices and notices with several lot values leave those fields empty rather than guessing.
A winner appears as initials, e.g. "J. N.". The name matched the natural-person heuristic (sole trader). The identifier and country are kept so you can still match the company.
Who invoices me? Apify. Usage is billed to your Apify account; the developer never sees your data or payment details.
Source & licence
Source: TED, Publications Office of the European Union (https://ted.europa.eu), reused under Commission Decision 2011/833/EU. Modified: normalised to JSON, personal contact data removed. Not endorsed by the Publications Office; TED logo not used.
Legal notice: https://ted.europa.eu/en/legal-notice. Fair-usage policy: https://ted.europa.eu/en/news/fair-usage-policy-on-ted. Each record carries the attribution in provenance.licence. Not affiliated with the Publications Office of the European Union.
Changelog / support
- 0.1 — first public release: TED API v3 search for 12 CEE countries, CPV/notice-type/place filters, award data, incremental mode.
Questions, bugs and feature requests: use the Issues tab of this actor.
Documentation drafted with AI assistance and reviewed by the publisher before publication.