TED EU Procurement Scraper - Tenders & Award Notices avatar

TED EU Procurement Scraper - Tenders & Award Notices

Pricing

Pay per event

Go to Apify Store
TED EU Procurement Scraper - Tenders & Award Notices

TED EU Procurement Scraper - Tenders & Award Notices

Scrape EU public procurement from TED: buyer, CPV codes, estimated and awarded value, winner, subcontractors, NUTS region, SME flag. Filter by country, CPV, value band, date.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape EU public procurement notices from TED (Tenders Electronic Daily), the official OJEU portal. Returns tender opportunities, award notices, prior-information notices, and corrigenda with buyer, CPV codes, estimated and awarded value, winner, subcontractors, NUTS region, and SME flag — roughly 1M+ notices published per year across 27 EU member states plus EEA.

No API key. No proxy. No browser. Pure JSON over the TED Public Expert Search API v3.


TED EU Procurement Scraper Features

  • Extracts 30+ fields per notice — buyer, CPV, estimated value, awarded value, winner, SME flag, NUTS region, deadlines, subcontractors, document URLs
  • Filters by country, CPV code, NUTS region, publication-date range, minimum estimated value, and SME-winner-only
  • Covers four notice kinds in one actor — tender opportunities, award notices, prior information, and modifications
  • Normalises multi-language free-text fields to a preferred language (default English) with graceful fallback
  • Streams through the full TED Expert Search API with 1-based pagination and total-count termination
  • Runs in 512MB memory with no proxy requirement
  • Two-view output: one view for bidders (open tenders), one for competitor intelligence (award notices)

What Can You Do With TED EU Procurement Data?

  • B2G sales teams — Track new tender opportunities in your CPV codes and countries, and feed them into a CRM
  • Competitive intelligence — Pull award notices with winner name and awarded value to map who is winning which contracts
  • Lobbying and policy research — Aggregate public spending patterns across ministries, agencies, and NUTS regions
  • SME market entry — Filter to SME-winner-only results and see which small firms are landing government contracts
  • Due diligence — Cross-reference vendors and subcontractors against their EU public-sector revenue

How TED EU Procurement Scraper Works

  1. Pick your filters — notice types, countries, CPV codes, NUTS regions, date range, minimum value, SME-only
  2. The scraper composes a TED Expert Search query and paginates the API 100 records per page
  3. Each notice is flattened into a row-per-notice record with consistent field names across all four notice kinds
  4. Results stream into the Apify dataset — you can export to JSON, CSV, or Excel, or feed directly into another actor

Input

{
"noticeTypes": ["award"],
"countries": ["DEU", "FRA"],
"cpvCodes": ["71220000"],
"publishedAfter": "2024-01-01",
"publishedBefore": "2024-12-31",
"minEstimatedValueEur": 100000,
"onlySmeWinners": false,
"preferredLanguage": "eng",
"maxItems": 500
}
FieldTypeDefaultDescription
noticeTypesarray[] (all)Notice kinds: prior_info, contract, award, modification
countriesarray[] (all)Buyer countries as ISO 3-letter codes (e.g. POL, DEU, FRA)
cpvCodesarray[]EU Common Procurement Vocabulary codes, 8 digits
nutsCodesarray[]EU NUTS region codes (e.g. PL418, DE268)
minEstimatedValueEurinteger0Lower bound on estimated-value-glo, in the notice's currency unit
publishedAfterstring30 days agoEarliest publication date (YYYY-MM-DD)
publishedBeforestringtodayLatest publication date (YYYY-MM-DD)
onlySmeWinnersbooleanfalseOn award notices, keep only winners flagged as SMEs
preferredLanguagestringengPreferred language for titles, buyer names, descriptions
maxItemsinteger100Maximum notices to return across the whole run
proxyConfigurationobject{}Optional — TED is a public API and does not need proxies

Example: German contracts over €100K from the last year

{
"noticeTypes": ["contract"],
"countries": ["DEU"],
"minEstimatedValueEur": 100000,
"publishedAfter": "2024-01-01",
"maxItems": 1000
}

Example: Award notices to SME winners in architectural services

{
"noticeTypes": ["award"],
"cpvCodes": ["71220000", "71200000"],
"onlySmeWinners": true,
"preferredLanguage": "eng",
"maxItems": 500
}

TED EU Procurement Scraper Output Fields

Every record is flat, CSV-friendly, and uses the same schema across all four notice kinds. Empty fields are returned as "" or null, not omitted.

{
"noticeId": "192938-2026",
"noticeType": "contract",
"noticeSubtype": "cn-standard",
"publicationDate": "2026-03-20",
"deadlineDate": "2026-04-24",
"awardDate": "",
"country": "DEU",
"nutsCode": "DE268",
"title": "Germany – Telephone and data transmission services – Auswahlverfahren Großlangheim - Gigabit-RL 2.0",
"titleLanguage": "eng",
"description": "Der Netzbetreiber, dem nach Abschluss dieses Auswahlverfahrens der Zuschlag erteilt wird, erhält eine Dienstleistungskonzession zum Aufbau und Betrieb eines gigabitfähigen Netzes für das Erschließungsgebiet...",
"buyerName": "Markt Großlangheim",
"buyerCity": "Großlangheim",
"buyerCountryCode": "DEU",
"buyerLegalType": "la",
"procedureType": "",
"cpvMain": "64210000",
"cpvCodes": ["64210000", "32412000", "32561000", "32562000", "32562100", "32562300", "64215000"],
"estimatedValueEur": null,
"estimatedValueCurrency": "",
"awardedValueEur": 550000,
"awardedValueCurrency": "EUR",
"placeOfPerformance": "DE268, DEU",
"frameworkAgreement": false,
"winnerName": "",
"winnerCountry": "",
"winnerIsSme": false,
"subcontractors": "",
"documentUrls": [
"https://ted.europa.eu/en/notice/-/detail/192938-2026",
"https://ted.europa.eu/en/notice/192938-2026/xml",
"https://ted.europa.eu/en/notice/192938-2026/pdf"
],
"url": "https://ted.europa.eu/en/notice/-/detail/192938-2026"
}
FieldTypeDescription
noticeIdstringPublication number, e.g. 192938-2026
noticeTypestringCategory: prior_info, contract, award, or modification
noticeSubtypestringRaw TED notice-type code (e.g. cn-standard, can-standard, pin-only, corr)
publicationDatestringISO 8601 publication date
deadlineDatestringSubmission deadline (ISO 8601), when present
awardDatestringWinner-decision date on award notices (ISO 8601), when present
countrystringBuyer country ISO 3-letter code
nutsCodestringPrimary NUTS region code for place of performance
titlestringNotice title in the preferred language
titleLanguagestringActual language returned for the title
descriptionstringNotice description in the preferred language, truncated at 2000 characters
buyerNamestringBuyer organisation name
buyerCitystringBuyer city
buyerCountryCodestringBuyer country ISO code
buyerLegalTypestringBuyer legal-type code (la = local authority, cga = central government, 8 = regional, etc.)
procedureTypestringProcedure-type code (open, restricted, neg-wo-call, comp-dial, etc.)
cpvMainstringPrimary CPV code
cpvCodesarrayAll CPV codes on the notice
estimatedValueEurnumberEstimated total contract value (see currency field for unit)
estimatedValueCurrencystringCurrency code for estimated value
awardedValueEurnumberFinal awarded value on result notices
awardedValueCurrencystringCurrency code for awarded value
placeOfPerformancestringNUTS codes joined comma-separated
frameworkAgreementbooleanWhether this notice is part of a framework agreement
winnerNamestringAwarded winner organisation name
winnerCountrystringWinner country ISO code
winnerIsSmebooleanWhether the winner is flagged as an SME
subcontractorsstringSubcontractor names, comma-separated
documentUrlsarrayDeep-link URLs — HTML detail, XML, PDF
urlstringCanonical TED detail page URL

FAQ

How do I scrape TED EU procurement data?

TED EU Procurement Scraper uses the public TED Expert Search API v3 — no API key, no account, no proxy. Pick your filters, set maxItems, and run. The actor paginates the API 100 records per page until it hits your cap or exhausts the query.

How much does TED EU Procurement Scraper cost to run?

Pricing is pay-per-event: a small fee per actor start plus a fraction of a cent per record saved. A full year of German contracts (≈50K records) runs roughly a few dollars. Pulling 100 records costs basically nothing.

Can I filter by CPV code or NUTS region?

Yes. Pass cpvCodes as an array of 8-digit codes and nutsCodes as an array of NUTS identifiers. The filters are applied server-side as OR groups, so cpvCodes: ["71220000", "71200000"] returns any notice matching either code.

Does this return award notices with the winner?

Yes — that's the point of the actor. Set noticeTypes: ["award"] and the output includes winnerName, winnerCountry, winnerIsSme, awardedValueEur, awardedValueCurrency, and subcontractors on every record where TED has that data. Coverage varies by publishing authority; large EU central buyers are most consistent.

What languages are the titles and descriptions in?

TED publishes notices in the buyer's language and also provides a translation in each of the 24 EU languages for machine-readable fields. Set preferredLanguage to your desired code (eng, fra, deu, ita, spa, pol, nld, por, ces, swe). The scraper returns the requested language if available and falls back to English or any other available language. The chosen language is reported in titleLanguage.

Does TED EU Procurement Scraper need a proxy?

No. TED is a public EU portal with a rate-friendly API. The actor makes one request every 200ms and handles pagination cleanly up to the API's total-count limit.


Need More Features?

Need row-per-lot output, XML schema parsing, or a different set of fields? File an issue or get in touch.

Why Use TED EU Procurement Scraper?

  • Full coverage — All four TED notice kinds in one schema: tenders, awards, prior info, modifications
  • Award-notice parsing — Winner name, awarded value, SME flag, and subcontractor list on every award record — the fields most actors stop before reaching
  • Clean flat output — One row per notice with consistent field names, ready for CSV, BI tools, or a CRM, instead of the nested XML most TED consumers end up writing their own parser for