EU TED Tenders Scraper avatar

EU TED Tenders Scraper

Pricing

from $3.52 / 1,000 result row emitteds

Go to Apify Store
EU TED Tenders Scraper

EU TED Tenders Scraper

EU TED Tenders Scraper: export EU TED (Tenders Electronic Daily) public procurement notices as flat, buyer-ready rows: buyer, title, CPV code, estimated value, deadline, and winner info. Keyless EU API — filter by CPV code, buyer country, notice type, and publication date.

Pricing

from $3.52 / 1,000 result row emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Features

Limited permissions

Share


🎯 What this scrapes

TED (Tenders Electronic Daily) is the EU-wide official journal for public procurement — every EU/EEA member state's contracting authorities publish notices there, from a Polish ministry's IT framework agreement to a German city's construction tender. TED's own v3 search API is keyless and public, but it returns deeply nested eForms-taxonomy JSON with 24-language multilingual fields ({"eng": [...], "pol": [...]}) that are painful to parse by hand. This Actor queries TED's public search API and flattens every notice into one buyer-ready row — buyer, title, CPV classification, estimated value, deadline, and award/winner info once a contract has been won. No API key, no login, no eForms-schema puzzle.

🔥 What we handle for you

  • 🔁 Retries with exponential backoff on 408/429/503/network errors — up to 5 attempts, Retry-After honoured.
  • 🧱 Per-notice fault isolation — one malformed notice is skipped and logged, never crashes the whole run.
  • 🌐 Multilingual-first field extraction — English preferred, falling back through 24 EU languages so a title/buyer name is never silently dropped.
  • 🧊 Clean, typed dataset rows — validated fields, ISO-8601 timestamps, never the raw eForms JSON blob.
  • 💰 Pay per output — no Actor start fee. You pay for the output events listed in Pricing.

💡 Use cases

  • Bid-team pipeline — pull new EU-wide tenders matching a CPV code or country every day.
  • Market intelligence — track which EU public bodies are buying what, and at what value, across all 27+ member states.
  • Award tracking — monitor closed notices for winner names and countries on contracts you bid on.
  • Lead generation — build a cross-border prospect list of buyers issuing contracts in your sector.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
querystringno'—'Raw TED expert-query string (e.g. classification-cpv=72000000 AND buyer-country=POL). When set, used…
cpvCodesarrayno['72000000']CPV classification codes, OR-combined (e.g. 72000000 for IT services). Default is a confirmed-live,…
buyerCountriesarrayno[]Buyer country codes, OR-combined (ISO3, e.g. POL, DEU). Leave empty to match all EU/EEA…
noticeTypesarrayno[]Notice types, OR-combined (e.g. cn-standard, can-standard). Leave empty to match all notice…
publishedFromstringno'—'Only include notices published on or after this date, e.g. 2026-01-01.
publishedTostringno'—'Only include notices published on or before this date, e.g. 2026-08-01. Must be on/after…
maxResultsintegerno20Hard cap on the number of notice rows returned by this run.
useProxybooleannoFalseRoute requests through Apify Proxy. TED is EU public infrastructure with no observed anti-bot, so this defaults off —…

Example input

{
"cpvCodes": [
"72000000"
],
"maxResults": 5,
"useProxy": true
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
publication_numberstringTED publication number, e.g. 13-2026. Always present.
notice_id['string', 'null']Stable per-notice UUID.
titlestringNotice title, multilingual-first (English preferred).
notice_urlstringPublic TED notice URL, built from the publication number.
notice_type['string', 'null']TED notice type enum, e.g. cn-standard (contract notice), can-standard (contract award notice).
form_type['string', 'null']TED form type enum, e.g. competition, result.
procedure_type['string', 'null']Procurement procedure type, e.g. open, neg-w-call, oth-single.
buyer_name['string', 'null']Contracting authority / buyer name, multilingual-first.
buyer_country['string', 'null']Buyer country, ISO3 code (e.g. POL).
buyer_city['string', 'null']Buyer city, multilingual-first.
place_of_performance_country['string', 'null']Place-of-performance country, ISO3 code.
cpv_codesarrayDeduplicated CPV classification codes; empty list when none present.
description['string', 'null']Lot description, multilingual-first.
estimated_value_amount['number', 'null']Estimated value of the first lot, parsed as a float.
estimated_value_currency['string', 'null']Currency of estimated_value_amount.
deadline_date['string', 'null']Submission deadline of the first lot; null on award notices (no open deadline).
publication_date['string', 'null']Notice publication date, as returned by TED.
winner_name['string', 'null']Winning supplier name, multilingual-first; populated on award notices only.
winner_country['string', 'null']Winner country, ISO3 code; populated on award notices only.
scraped_atstringISO 8601 UTC timestamp when this row was scraped.

Example output

{}

💰 Pricing

No Actor start fee. You pay for the output events below.

EventUSD per eventBilling unit
result-row$0.004Charged per notice row written to the dataset.

1,000 output events cost $4.00 at the standard rate, with no start charge.

Existing subscriber discounts remain available in the Apify Pricing tab.

🚧 Limitations

  • TED (EU-wide) only — national procurement portals are out of scope (see our UK Contracts Finder Actor for UK-specific coverage).
  • No eForms XML/PDF document downloads, only the structured notice metadata.
  • Real-time per-query only — no historical bulk export and no cross-run deduplication.

❓ FAQ

Do I need a TED account or API key?

No. TED's v3 search API is public and keyless — this Actor calls it directly.

Why does the default CPV code return so many results?

72000000 (IT services) alone matches 396k+ live notices — confirmed on TED. maxResults defaults to 20 to keep a first run fast and cheap; raise it once you've confirmed the filter shape you want.

What if a notice's title isn't in English?

TED's multilingual fields aren't guaranteed to carry an "eng" key. This Actor falls back to the generic "mul" key, then the first available language, so title/buyer_name/description/winner_name are never silently dropped.

Can I write my own TED expert query?

Yes — set query to any raw TED expert-query string (e.g. classification-cpv=72000000 AND buyer-country=POL) and it's sent verbatim, overriding every structured filter.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.