EU Tenders API - Normalized TED Public Procurement avatar

EU Tenders API - Normalized TED Public Procurement

Pricing

from $2.00 / 1,000 notice records

Go to Apify Store
EU Tenders API - Normalized TED Public Procurement

EU Tenders API - Normalized TED Public Procurement

[💵 $3.00 / 1K] One clean English schema for EU public tenders from TED. Buyer, CPV sector, value, deadline, country, award status - normalized from raw 24-language eForms, not a raw notice dump.

Pricing

from $2.00 / 1,000 notice records

Rating

0.0

(0)

Developer

WebData Labs

WebData Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

One clean English schema for EU public tenders. Search the official TED (Tenders Electronic Daily) feed by keyword, CPV sector, country, or stage, and get analysis-ready rows: English title and buyer, readable notice type, CPV sector label, contract value, submission deadline, country, and award status - sorted newest first.

TED publishes every EU public-procurement notice, but its API hands you raw eForms: the buyer name is a 24-language nested object, the notice type is a cryptic code (cn-standard, can-standard), the procedure is oth-single, CPV sectors are bare 8-digit numbers, country and region arrive as 3-letter ISO and NUTS codes mixed together in one duplicated array, and dates carry timezone suffixes. Most "TED scrapers" hand you that mess. This Actor does the hard part: it picks the English value out of every multilingual field, maps each eForms code to a readable label, resolves CPV to a human sector, splits and de-duplicates place codes into country names and NUTS regions, flags whether a notice is an open opportunity or an award, normalizes dates to ISO, and returns one consistent row every time.

✅ What you get / ❌ what this isn't

This Actor gives youThis Actor is not
One normalized row per notice, English-first, identical shape every timeNot a raw 24-language eForms dump
Readable noticeTypeLabel, procedureTypeLabel, cpvSector from cryptic codesNot affiliated with or endorsed by the EU, TED, or any buyer
isAward flag to separate open opportunities from awarded resultsNot a bid-writing or eligibility-assessment service
Contract totalValue as a number, deadline and dates normalized to ISONot a guarantee every notice exposes a value or deadline
Buyer name and country resolved to readable textNot real-time - reflects TED's publishing cadence
Reliable reads from the official TED API (no anti-bot, no proxy needed)Not a national-portal aggregator - this is the pan-EU TED feed

🔎 Why use this Actor

  • Build a live feed of EU tenders in your sector, filtered by CPV, country, and keyword.
  • Separate open opportunities you can still bid on from awards (who won what) with one flag.
  • Track high-value contracts by reading a numeric totalValue instead of parsing eForms.
  • Monitor competitor wins and buyer activity across all 27 member states in one schema.
  • Feed normalized, English procurement data into a CRM, dashboard, model, or LLM pipeline.
  • Skip the plumbing - multilingual resolution, CPV sector mapping, and code translation are done.

👥 Who it's for

  • Companies and consultants that sell to the EU public sector (bid / tender teams).
  • GovTech, GovCon, and public-procurement intelligence products needing clean source data.
  • Market researchers tracking public spend by sector, country, or buyer.
  • Sales teams building territory lists of active buyers and recent awards.
  • Data teams that want one tidy schema instead of an eForms parsing project.

🗂️ What data you get

One row per notice:

FieldTypeDescription
publicationNumberstringTED notice id (e.g. 445505-2026)
titlestringNotice title, English preferred (falls back to the original language)
buyerName, buyerCountry, buyerCountryCodestringBuyer resolved to English text + readable country + ISO3 code
noticeType, noticeTypeLabelstringRaw eForms code and its readable label (Contract notice, Contract award notice...)
isAwardbooleantrue for awards/results, false for open opportunities
formType, formTypeLabelstringHigh-level stage (Call for competition, Result...)
procedureType, procedureTypeLabelstringRaw code and label (Open procedure, Restricted procedure...)
contractNaturestringWorks / Supplies / Services / Combined
cpvMain, cpvCodesstring / arrayPrimary CPV code and the full de-duplicated CPV list
cpvDivision, cpvSectorstring2-digit CPV division and its human sector label
totalValuenumberContract value coerced to a number where published
publicationDate, deadlinestringPublication date and submission deadline, normalized to YYYY-MM-DD
placeCountries, placeNutsCodesarrayPlace(s) of performance split into country names and NUTS region codes
noticeUrl, pdfUrl, xmlUrlstringEnglish TED detail page, PDF, and machine-readable XML

Example tasks

⚙️ How to get EU tender data

  1. Open the Actor on Apify.
  2. Enter a searchText keyword, and/or a cpv sector (use 72* for all IT, 45* for all construction), and/or a country.
  3. Choose a noticeKind: all notices, open opportunities, or awards.
  4. Optionally limit by publishedAfter / publishedBefore.
  5. Set how many notices to return (maxItems); results come newest first.
  6. Run the Actor and open the Tenders dataset view.
  7. Export JSON, CSV, Excel, HTML, or XML, or call the Actor through the Apify API.

Power users can pass a raw TED expert query to override the simple filters.

📥 Input

{
"searchText": "artificial intelligence",
"cpv": "72*",
"country": "DE, FR",
"noticeKind": "opportunities",
"publishedAfter": "2026-06-01",
"maxItems": 200
}

📤 Output

{
"recordType": "tender",
"publicationNumber": "445505-2026",
"title": "Luxembourg - Computer-related services - Business Continuity Plan for EU Publications Office Managed Services",
"buyerName": "European Commission, Publications Office",
"buyerCountry": "Luxembourg",
"noticeTypeLabel": "Contract notice",
"isAward": false,
"procedureTypeLabel": "Open procedure",
"contractNature": "Services",
"cpvMain": "72000000",
"cpvSector": "IT services: consulting, software, internet & support",
"totalValue": 4570000,
"publicationDate": "2026-06-29",
"deadline": "2026-07-29",
"placeCountries": ["Luxembourg"],
"noticeUrl": "https://ted.europa.eu/en/notice/-/detail/445505-2026"
}

💵 How much does it cost?

The launch price is about $3.00 / 1,000 notices, tier-discounted for higher Apify plans. One notice row is one charged result. A run returning 200 notices is 200 results. Error rows are not charged.

🔁 Run it on the Apify platform

Schedule a daily or weekly run per sector/country to keep a fresh tender feed, call it from the Apify API, export to CSV/JSON/Excel, or connect the dataset to Make, Zapier, webhooks, a warehouse, a CRM, or an LLM pipeline.

⚠️ Limits and caveats

  • This Actor reads the official public TED API. It is not affiliated with the EU, the Publications Office, or any contracting authority.
  • Field coverage varies by notice. Not every notice publishes a contract value or a deadline (awards often have no deadline; prior-information notices often have no value). Missing fields are returned as null rather than guessed.
  • English-first, not English-only. TED notices are multilingual; where no English value exists, the original-language value is returned so the row is never empty.
  • cpvSector is the CPV division label for the notice's primary CPV; the full cpvCodes list is always preserved for precise filtering.
  • Results are ordered newest first by publication date and reflect TED's publishing cadence.
  • SEC Financials API - normalized income, balance sheet, and cash flow from EDGAR.
  • Clinical Trials API - normalized ClinicalTrials.gov records.
  • US Building Permits API - normalized construction permits and contractor leads.
  • ATS Jobs Scraper - normalized Greenhouse / Lever / Ashby job postings.

❓ FAQ

What is TED?

TED (Tenders Electronic Daily) is the EU's official journal supplement for public procurement. Every tender above the EU thresholds is published there. This Actor reads TED's official v3 search API and normalizes it.

Can I get only tenders I can still bid on?

Yes. Set noticeKind to opportunities to get open contract notices, or awards to get results. Every row also carries an isAward boolean.

How do I target my sector?

Use cpv with a wildcard: 72* for IT services, 48* for software, 45* for construction work, 85* for health, 79* for business/legal/consulting services. Combine several comma-separated. The output cpvSector shows the human label.

Which countries are covered?

All EU member states plus EEA and candidate countries that publish to TED. Filter with country using 2-letter (DE, FR, PL) or TED 3-letter (DEU, FRA, POL) codes.

Why are some fields null?

Because that notice does not publish that field. Awards frequently have no deadline; planning notices frequently have no value. Nothing is guessed.

Does it need a proxy?

No. The TED API is a public official endpoint served reliably to datacenter IPs. Enable Apify Proxy only for very large batches.

🛠️ Support

For bugs, missing fields, or a feature request, open an Actor issue with the run URL, the filters used, and the field or behavior you expected.

⭐ Rate this Actor

If this Actor saved you time, please take 30 seconds to leave a review on the Reviews tab of EU Tenders API - Normalized TED Public Procurement - reviews are the main trust signal other users see, and they directly decide which features get built next. If something is broken or a field is missing, please open an issue first - we typically respond within a day and would love the chance to fix it before you rate.