EU Procurement Award Radar — Who Won Which Tender
Pricing
from $20.00 / 1,000 award leads
EU Procurement Award Radar — Who Won Which Tender
Track who wins EU public tenders. Aggregates AWARD notices (not open calls) from TED across all EU/EEA states, normalizes buyer, winner, award value and CPV code into one schema, and registry-enriches the winner (registration number, status) where available.
Pricing
from $20.00 / 1,000 award leads
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Most procurement scrapers show you open calls — tenders you could still bid on. This one shows you the opposite: who already won. Give it a country, a sector (CPV code or keyword), and a lookback window, and it returns real AWARD notices from TED (Tenders Electronic Daily) — buyer, winner, award value, currency, CPV code — and, where the winner's country has a matching registry in our fleet, its official registration number and status.
This is a lead-generation feed, not a bidding tool. If you sell to companies that just won public contracts (subcontractors, insurers, financiers, competitors doing market intelligence), this is the list of who just got the money.
What it does
- Only award notices, never open calls. The actor queries TED for eForms notice types
can-standardandcan-social— genuine "Contract Award Notice" documents — notcn-standard(open call for tenders) orpin-standard(prior information). A tender that's still open never shows up here. - Real winner identity, not a buyer-only feed. TED's search API exposes
winner-name,winner-country,winner-city, andwinner-decision-datefields for award notices, but none of our five existing procurement scraper actors (TED, Belgian, Dutch, Norwegian, EU Funding & Tenders) request or output them — verified by reading their source before building this. This actor queries TED directly for the fields that actually carry the winner's name. - Registry-enriched where cheap. For each award lead, the actor optionally calls our own
eu-dealer-counterparty-checkmeta-actor with the winner's name and country, and attaches the winner's official registration number, registry status (active/dissolved/insolvent/unknown), and match confidence. Covers winners in DE, FR, GB, PL, IT, ES, CH, NO, SE, CZ, NL — the countries our registry fleet supports. - Pan-EU/EEA coverage from one source. TED covers every EU/EEA member state plus the UK for above-threshold public contracts, so this actor doesn't need a separate scraper per country.
- Multi-lot notices handled honestly. When a notice has more than one winner (common for framework agreements split into lots), the first winner becomes
winnerand the rest land inadditionalWinners— nothing is silently dropped, nothing is faked into a false 1:1 alignment TED's own flat API doesn't actually guarantee.
How to scrape EU procurement award data
- Leave every filter empty to get the broadest feed: all EU/EEA + UK award notices published in the last 21 days, most recent first.
- Narrow by countries (buyer's country — the contracting authority, not the winner) to focus on one or a few markets.
- Narrow by CPV code (e.g.
72000000for IT services,45000000for construction) to focus on a sector, or by searchQuery for a free-text keyword match on the notice title/description. - Set daysBack — TED publishes thousands of award notices a week across the EU, so 14–21 days is usually plenty of volume even for a narrow filter.
- Leave enrichWinners on (default) to get the winner's registration number and status where available. Turn it off for a faster, cheaper run if you only need the raw TED data.
- Run it. Each row is one award lead: who won, from whom, for how much, and (where enriched) their registry status.
Input options
| Field | Type | Description |
|---|---|---|
searchQuery | string | Free-text filter on notice title/description. Empty = all sectors. |
countries | array | Buyer (contracting authority) country filter, ISO2 codes. Empty = all EU/EEA + UK. |
cpvCode | string | CPV sector code filter, e.g. 72000000. Empty = all sectors. |
daysBack | integer | Award-notice publication lookback window. Default 21. |
maxResults | integer | Max award leads to return. Default 20. |
enrichWinners | boolean | Registry-enrich each winner via eu-dealer-counterparty-check. Default true. |
maxEnrichments | integer | Cap on how many winners get enriched per run (bounds cost/runtime). Default 3. |
timeoutPerEnrichmentSecs | integer | Timeout per registry-enrichment call. Default 60. |
proxyConfiguration | proxy | Only needed as a fallback — TED's v3 API is a public, open endpoint queried directly by default. |
Output fields
| Field | Example | Description |
|---|---|---|
noticeId | "503731-2026" | TED publication number |
tenderTitle | "Italy – Business and management consultancy services – ..." | |
buyer | "Giunta Regionale" | Contracting authority |
country | "IT" | Buyer's country (ISO2) |
winner | "KPMG Advisory S.p.A." | Primary winning company |
additionalWinners | ["BAGGER BS s.r.o."] | Other winners on the same notice (multi-lot awards), if any |
winnerCountry | "IT" | Winner's country, where TED reports it |
winnerCity | "Milano" | |
winnerRegId | null or a registry number | From registry enrichment, when available |
winnerRegStatus | "active" | From registry enrichment |
winnerConfidence | "medium" | Registry match confidence — see eu-dealer-counterparty-check for the scale |
awardValue | 1328850 | |
currency | "EUR" | |
awardDate | "2026-07-16" | Winner decision date, or notice publication date as fallback |
cpvCode | "79410000" | Primary CPV code |
cpvCodes | ["79410000"] | Full CPV code list on the notice |
url | "https://ted.europa.eu/en/notice/-/detail/503731-2026" | |
source | "TED" | |
scrapedAt | ISO timestamp |
Example output
{"recordType": "award_lead","noticeId": "503731-2026","tenderTitle": "Italy – Business and management consultancy services – Servizio di assistenza professionale per attività concernenti il piano di sviluppo strategico della Zona Logistica Semplificata della Regione Lazio","buyer": "Giunta Regionale","country": "IT","winner": "KPMG Advisory S.p.A.","additionalWinners": [],"winnerCountry": "IT","winnerCity": "Milano","winnerRegId": null,"winnerRegStatus": "active","winnerConfidence": "medium","awardValue": 1328850,"currency": "EUR","awardDate": "2026-07-16","cpvCode": "79410000","cpvCodes": ["79410000"],"url": "https://ted.europa.eu/en/notice/-/detail/503731-2026","source": "TED","scrapedAt": "2026-07-21T13:15:49.330Z"}
Cost estimate
Priced at $0.02 per award lead (pay-per-event, plus a small actor-start fee). Registry enrichment is included in that price where it succeeds — there is no separate enrichment charge.
Zero results is sometimes correct
If your filter (a rare country + narrow CPV + a keyword) genuinely matches zero award notices in the lookback window, the actor does not fail. It pushes a single run_status row documenting the filter and the fact that TED was reachable and scanned successfully. A run only fails when TED itself couldn't be reached — that's the real "something is broken" signal, not a narrow query returning nothing.
Limitations
- Winner identity depends on what TED itself received from the buyer. A small share of award notices are published without a machine-readable winner name (direct-award justifications, redacted notices) — those are skipped, they never appear as a lead. Roughly a handful in every hundred scanned, based on live testing.
- Registry enrichment only covers 11 countries (DE, FR, GB, PL, IT, ES, CH, NO, SE, CZ, NL) — the same set
eu-dealer-counterparty-checksupports. Winners elsewhere (e.g. Croatia, Poland's neighbors outside that list) come back withwinnerRegId: null. - Multi-lot notices are not perfectly lot-aligned. TED's search API returns winner-name/winner-country/winner-city as flat arrays per notice, not grouped per lot — when a notice has multiple winners, only the first is guaranteed correctly paired with its country/city; the rest are listed in
additionalWinnersby name only. Getting exact lot-level pairing would require parsing each notice's full XML, out of scope for this feed. - Award value can be missing for notices where TED's
result-value-noticefield wasn't published (falls back tototal-value, the pre-award estimate, when available — otherwisenull). - This actor calls a child actor (
eu-dealer-counterparty-check) for enrichment — a Store account restriction on that actor would degrade enrichment coverage but never breaks the core award feed, which is 100% TED-direct.
Related scrapers
ted-eu-procurement-scraper (open calls + general notices, all EU/EEA), belgian-procurement-scraper, doffin-scraper (Norway), tenderned-scraper (Netherlands), eu-funding-tenders-scraper (EU grants + tenders portal), eu-dealer-counterparty-check (the registry enrichment engine behind this actor's winnerRegId/winnerRegStatus), eu-fresh-company-radar (newly registered EU companies).