EU Public Procurement Notices — TED tenders as clean JSON avatar

EU Public Procurement Notices — TED tenders as clean JSON

Pricing

from $2.00 / 1,000 notice returneds

Go to Apify Store
EU Public Procurement Notices — TED tenders as clean JSON

EU Public Procurement Notices — TED tenders as clean JSON

Open EU public tenders from TED (Tenders Electronic Daily): one flat JSON row per procurement notice, filtered by CPV code, buyer country, value and date. Contact persons removed. Pay per notice returned.

Pricing

from $2.00 / 1,000 notice returneds

Rating

0.0

(0)

Developer

EU Data Feeds

EU Data Feeds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Every public tender above the EU thresholds is published on TED (Tenders Electronic Daily), the official EU public procurement journal. The official API is an eForms tree: multilingual arrays, three different date formats, and personal data mixed into the contact blocks. This Actor turns TED into one flat row per procurement notice that you can drop straight into a spreadsheet, a database or an LLM pipeline.

Its sibling Actor, EU Public Procurement Contract Awards (TED), answers the other half of the question: what was actually bought, from where, and for how much against the estimate.

Who buys this

  • Bid teams running a daily tender watch on their CPV codes and countries.
  • Procurement and GovTech products that need an EU tender feed without maintaining an eForms parser.
  • Consultancies and analysts sizing public-sector demand by CPV division or member state.
  • Sales teams building a public-sector pipeline from open contract notices.

Coverage (measured, not claimed)

A 1,000-notice sample of the last 7 days, taken 2026-09-05, carried buyers from all 27 EU member states plus Norway, Iceland, Switzerland and Albania — 31 countries in one week's window. Coverage is exactly TED's coverage: if a notice is not in TED, it is not here.

What the default run returns, and how to narrow it. TED's daily flow is roughly half open calls and half already-decided contracts. In an EU-wide 250-notice sample of the last 7 days (2026-09-08): cn-standard 112, can-standard 107, can-modif 15, cn-social 5, pin-only 4, can-social 3, pin-rtl 2, cn-desg 1, veat 1 — so about 47 % are open calls, 50 % are award notices and the rest are prior-information notices. noticeTypes is left empty by default so nothing is hidden from you. For open calls you can still bid on, set it explicitly:

{ "noticeTypes": ["cn-standard", "cn-social", "cn-desg"] }

If you want the award side instead, the sibling Actor eu-contract-awards-ted is built for it and adds the awarded value, the pre-tender estimate and the ratio between them.

tenderDeadline fill rate: 100 % of open calls (49 of 49 cn-* rows in the CZ/SK CPV-72 window, measured 2026-09-08). Award and prior-information notices have no submission deadline by nature and carry null. Where a notice sets a different deadline per lot, the row reports the earliest one.

tenderDeadline comes in two ISO-8601 shapes and both are deliberate: a bare calendar date (2026-10-15) where TED publishes only a day, and a full instant (2026-10-16T23:59:59+02:00) where TED publishes a cut-off time. Measured 2026-09-08 across 135 filled deadlines: 98 bare dates (73 %) and 37 timestamps (27 %). The offset is not trimmed off the second shape, because a submission cut-off at 23:59:59+02:00 is not the same instant as one at 23:59:59 UTC and dropping the offset would silently move it. Parse with any ISO-8601 reader and both shapes work; parse with a date-only reader and 27 % of rows will fail on you.

estimatedValue fill rate: 86 % of open calls (42 of 49 cn-* rows in the same window, measured 2026-09-08). Where a notice publishes only per-lot budgets and no procurement total, the row reports the sum across lots — verified against TED's own procedure-level total, which equalled that sum on every multi-lot notice carrying both. Lots in different currencies are never added: that row reports null rather than a number that is true of nothing. The remaining 7 of 49 publish no value at any level in TED, so the column is empty because the source is, and it is left empty rather than estimated.

What you get

One row per notice:

FieldExample
publicationNumber00512345-2026
publicationDate2026-09-01
noticeTypecn-standard
titleSupply of laboratory equipment
buyerNameUniverzita Karlova
buyerCountryCZE
cpvCodes["38000000", "38900000"]
estimatedValue / currency1250000 / CZK (procurement total, or the sum across lots)
tenderDeadline2026-10-15 or 2026-10-16T23:59:59+02:00 (earliest across lots; null on award notices)
placeOfPerformance["CZ010"]
noticeUrl / pdfUrllinks to the official notice

Dates are normalized to plain ISO dates, CPV code lists are deduplicated, and titles are taken from the English language version where TED publishes one.

Input

OptionMeaning
daysLookback window, 1–365. Default 7.
cpvCPV codes or prefixes — 72000000 for IT services, or just 45 for all construction.
countriesBuyer country codes: CZ, DE, PL, …
noticeTypese.g. cn-standard (contract notice), can-standard (contract award).
minValueEurOnly notices at or above this estimated value.
maxResultsHard cap on rows returned — and therefore on what you pay.

Leave everything empty and you get the last 7 days of EU procurement notices across the whole EU.

Running it on a schedule

Set days to match your interval (a daily tender watch wants days: 1), add your CPV codes and countries, and put the Actor on an Apify schedule. Each run writes a dataset you can pull from the Apify API, export as JSON/CSV/Excel, or push onward with an integration.

Pricing

Pay per event, and both numbers are here so you never have to open the Pricing tab to budget a run:

EventPriceWhen it fires
Actor start$0.005Once per run, never more.
Notice returned$0.002Once per procurement notice actually pushed to the dataset.

A default run (maxResults: 100) therefore costs $0.005 + 100 x $0.002 = $0.205 at most. maxResults is a hard cap on rows and so is your hard cap on spend: 500 notices is $1.005, 5,000 is $10.005.

A run that finds nothing costs $0.005 — the start event only. Charging happens after each row is pushed, so a run that fails halfway never bills you for data you did not receive, and the RUN_SUMMARY record written at the end tells you exactly how many rows you were charged for.

Personal data

TED notices contain named contact persons at the contracting authority. This Actor removes them. Contact names, e-mail addresses and phone numbers are dropped in code before anything is written to the dataset, and free-text fields are scrubbed for inlined addresses. You get organisations, not people. The open-data licence permits reuse; it does not waive the GDPR, so the personal data simply never leaves the pipeline.

Source and attribution

Source: Tenders Electronic Daily (TED), ted.europa.eu, © European Union. Editorial content reused under CC BY 4.0, metadata under CC0 1.0. Data normalized and filtered by this Actor; personal data removed. This is not an official EU publication — for anything legally binding, use the linked original notice.

Support and refunds

E-mail support, first reply within 1 business day. Not happy? Email us within 14 days for a full refund.

Limits

  • Coverage and freshness are whatever TED publishes; if a notice is not in TED, it is not here.
  • Below-threshold contracts that never reach TED are out of scope — national portals are not read.
  • The Actor reads the public TED Search API. Very large windows across all of the EU take longer and cost more — narrow by CPV or country first.
  • No human consulting, no custom fields on request, no SLA beyond the reply time above.

FAQ

Does this cover all 27 EU member states? Yes — see the measured coverage above. TED is the single EU-wide publication point for above-threshold public procurement.

How is this different from scraping ted.europa.eu myself? You would be parsing eForms: multilingual arrays, per-lot repetition, two date shapes and contact blocks you have to strip for GDPR. This Actor is that parser, already written and tested, with the personal data removed before it reaches you.

Can I get contract awards as well? Yes — the sibling Actor EU Public Procurement Contract Awards (TED) returns award notices with the awarded value, the pre-tender estimate and their ratio.

Do I get the winner's name? Not from this Actor. Award notices are handled by the sibling Actor, which also omits winner names for GDPR reasons; the official notice at noticeUrl carries them.