EU Public Tenders (TED): One Row per Tender, Not per Notice
Pricing
Pay per event
EU Public Tenders (TED): One Row per Tender, Not per Notice
Open procurement notices from TED, the EU's official journal. Groups every notice about the same procurement into one row and takes the deadline from the newest one, so a corrected tender is not three rows with three closing dates. No key and no login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Gregory Bolshakov
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
EU Public Tenders
Open procurement notices from TED, the EU's official journal. One row per tender, with the deadline that is current.
TED publishes notices, not tenders
Every correction to a procurement is a new notice with a new publication number, because the publication is the legal act. Measured on 2026-08-30: 34% of the contract notices published in the two days before carried a correction code, the families run from two to nine notices, and 85% of those families hold more than one deadline.
So a feed of notices gives you the same tender several times, with several closing dates, and nothing on the row telling you which one still applies. Here is one real family:
536789-2026 published 3 Aug deadline 31 Aug573864-2026 published 19 Aug deadline 31 Aug595004-2026 published 28 Aug deadline 7 Sep
This Actor groups them by TED's own procedure identifier and returns one row, with the
7 September deadline, deadlineChanged true, previousDeadline set to 31 August, and the
two earlier publication numbers listed in case you already have them on file.
On a run of 200 open German tenders, 55 had more than one notice and 40 carried a deadline that a later notice had already replaced. That is one row in five.
Where each field comes from
The newest notice names the row. Every other field is answered by the newest notice that
carries one. That matters because an award notice has no deadline at all, so taking the
newest notice wholesale would empty the closing date on exactly the tenders that have
finished. deadlineFromPublicationNumber says which notice the date came from, and stage
says whether the procurement is planning, tendering or already awarded.
Reading the numbers
estimatedValue is the procedure value as published. lotValues are the per lot values.
Neither is derived from the other, because they disagree in both directions: on one Dutch
notice the procedure value was 4,600,000 against a single lot of 5,400,000, and on a
Croatian one it was the exact sum of three lots.
TED does not convert currencies, so every value carries its own. A minimum value filter compares the number as published, which means a Polish notice is compared in PLN.
Language
Titles exist in all 24 official languages and buyer names do not. Of 250 open notices
sampled, every one had an English title and none had an English buyer name. Pick the
language you want and the title follows it. The buyer name comes back in the national
language, and titleLanguage tells you what you actually got.
Watching for new tenders
Turn on Only new since the last run and each run returns only what was not there
before. The first run records a baseline and returns everything with isNew empty, because
nothing is new the first time you look.
Nothing is ever reported as closed. A tender leaving your result set has usually just passed its deadline, and a false disappearance in your history cannot be told apart later from a real one.
What is in TED
Every procurement above the EU thresholds, from all 27 member states. It also carries notices from countries outside the EU that publish there, so a run can return Norway or Switzerland alongside the rest. The country code on the row says which.
Access
Free, no key, no login. The API is capped at 250 rows per request and at 15,000 rows per paged window, while the open set alone is 48,731 notices, so this Actor uses TED's iteration mode to read past the window. It paces its requests, because sixteen unpaced ones earned a 429.