EU Tenders API - Normalized TED Public Procurement
Pricing
from $2.00 / 1,000 notice records
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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 you | This Actor is not |
|---|---|
| One normalized row per notice, English-first, identical shape every time | Not a raw 24-language eForms dump |
Readable noticeTypeLabel, procedureTypeLabel, cpvSector from cryptic codes | Not affiliated with or endorsed by the EU, TED, or any buyer |
isAward flag to separate open opportunities from awarded results | Not a bid-writing or eligibility-assessment service |
Contract totalValue as a number, deadline and dates normalized to ISO | Not a guarantee every notice exposes a value or deadline |
| Buyer name and country resolved to readable text | Not 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
totalValueinstead 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:
| Field | Type | Description |
|---|---|---|
publicationNumber | string | TED notice id (e.g. 445505-2026) |
title | string | Notice title, English preferred (falls back to the original language) |
buyerName, buyerCountry, buyerCountryCode | string | Buyer resolved to English text + readable country + ISO3 code |
noticeType, noticeTypeLabel | string | Raw eForms code and its readable label (Contract notice, Contract award notice...) |
isAward | boolean | true for awards/results, false for open opportunities |
formType, formTypeLabel | string | High-level stage (Call for competition, Result...) |
procedureType, procedureTypeLabel | string | Raw code and label (Open procedure, Restricted procedure...) |
contractNature | string | Works / Supplies / Services / Combined |
cpvMain, cpvCodes | string / array | Primary CPV code and the full de-duplicated CPV list |
cpvDivision, cpvSector | string | 2-digit CPV division and its human sector label |
totalValue | number | Contract value coerced to a number where published |
publicationDate, deadline | string | Publication date and submission deadline, normalized to YYYY-MM-DD |
placeCountries, placeNutsCodes | array | Place(s) of performance split into country names and NUTS region codes |
noticeUrl, pdfUrl, xmlUrl | string | English TED detail page, PDF, and machine-readable XML |
Example tasks
- Open EU IT and software tenders (CPV 72)
- Construction tenders in Germany and Poland
- Recent high-value contract awards across the EU
⚙️ How to get EU tender data
- Open the Actor on Apify.
- Enter a
searchTextkeyword, and/or acpvsector (use72*for all IT,45*for all construction), and/or acountry. - Choose a
noticeKind: all notices, open opportunities, or awards. - Optionally limit by
publishedAfter/publishedBefore. - Set how many notices to return (
maxItems); results come newest first. - Run the Actor and open the
Tendersdataset view. - 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
nullrather 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.
cpvSectoris the CPV division label for the notice's primary CPV; the fullcpvCodeslist is always preserved for precise filtering.- Results are ordered newest first by publication date and reflect TED's publishing cadence.
🧩 Related Actors
- 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.