EU TED Award Integrity Feed — Winners & Normalized Values
Pricing
$4.00 / 1,000 award rows
EU TED Award Integrity Feed — Winners & Normalized Values
Convert official EU TED notices into stable contract-award winner rows with original values, optional provenance-backed EUR amounts, direct notice links, and missing-data integrity flags.
Pricing
$4.00 / 1,000 award rows
Rating
0.0
(0)
Developer
Travis Berman
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
EU TED Award Integrity Feed
Turn official EU procurement notices into deterministic award/winner rows that are easier to validate and join.
This Actor queries the public, unauthenticated TED Search API, emits one row per winner, preserves notice provenance, and flags missing or suspect winner/amount/currency data. It does not guess values or claim legal completeness.
Why use it?
Generic tender exports can be awkward for supplier analytics: winners may be absent, currencies are not directly comparable, and one notice may contain multiple winners. This feed provides:
- stable
rowIdvalues for repeatable joins and deduplication; - one normalized row per notice/lot/winner;
- original award amount and currency without destructive conversion;
- optional EUR conversion only from a rate, date, and source URL you supply;
integrityStatusand machine-readableintegrityFlags;- direct TED notice and API provenance;
- bounded official-source access: no login, cookies, browser scraping, or proxy.
Input
For a live run, provide an inclusive publication range of at most 31 days:
{"dataSource": "live","dateFrom": "2026-07-01","dateTo": "2026-07-07","countries": ["DE", "FR"],"cpvCodes": ["72"],"maxNotices": 50,"maxRows": 100,"exchangeRatesToEur": []}
Optional filters are country, CPV prefix, and buyer text. Hard caps are 500 notices and 2,000 rows. Set dataSource to sample to run the bundled synthetic demonstration without network access.
Currency rates
exchangeRatesToEur is a list of source-currency rates, each expressing the EUR value of one currency unit:
[{"currency": "PLN","rate": 0.232,"rateDate": "2026-07-09","sourceUrl": "https://data-api.ecb.europa.eu/"}]
The Actor does not fetch or infer rates. EUR uses an identity rate of 1. A non-EUR amount without complete supplied provenance remains amountEur: null and is flagged FX_RATE_MISSING.
Output
{"rowId": "90c8bba603de49b529f90046","noticeId": "123457-2026","lotId": "LOT-0002","publicationDate": "2026-07-09","awardDate": "2026-07-07","title": "Municipal fleet maintenance","buyerName": "Example City","winnerName": "Warsaw Fleet Sp. z o.o.","winnerCountry": "PL","cpvCodes": ["50110000"],"amountOriginal": 2500000,"currencyOriginal": "PLN","amountAllocation": "sole-winner","amountEur": 580000,"fxProvenance": {"rate": 0.232,"rateDate": "2026-07-09","sourceUrl": "https://data-api.ecb.europa.eu/","method": "user-supplied"},"integrityFlags": [],"integrityStatus": "OK","noticeUrl": "https://ted.europa.eu/en/notice/-/detail/123457-2026","source": {"name": "TED Search API","url": "https://api.ted.europa.eu/v3/notices/search"}}
The repository fixture and examples are synthetic and are not represented as real procurement awards.
Integrity flags
MISSING_NOTICE_IDMISSING_WINNERMISSING_AMOUNTINVALID_AMOUNTMISSING_CURRENCYFX_RATE_MISSINGAMOUNT_SHARED_ACROSS_MULTIPLE_WINNERS— the notice/lot amount is repeated only for provenance and must not be summed across winner rows; inspectamountAllocation.LOT_WINNER_ALIGNMENT_UNRESOLVED— TED returned multiple lot identifiers but its flattened search fields did not provide a safe one-to-one mapping to winners;lotIdisMULTIPLE_OR_UNRESOLVEDrather than a guessed lot.
REVIEW means at least one flag exists; it does not mean the underlying legal notice is wrong.
Local development
npm installnpm testnpm run validate
For deterministic Actor storage, pre-seed storage/key_value_stores/default/INPUT.json with examples/input.sample.json, unset APIFY_TOKEN and APIFY_IS_AT_HOME, set CRAWLEE_PURGE_ON_START=0, then run npm start or apify run.
Pricing and support
The proposed model is $0.004 per emitted award-row, with no start event. Pricing is not active until deployment/Store configuration. See docs/PRICING.md and docs/SUPPORT.md.
Important limitations
This is an analytics aid, not legal advice or a legally authoritative archive. TED source fields can be absent, multilingual, or revised. Always inspect noticeUrl before acting. Live compatibility must be sampled against the current TED response before release; local build completion alone is not a publication claim.