TenderFeed: EU Public Tenders Scraper (TED API)
Pricing
from $2.00 / 1,000 results
TenderFeed: EU Public Tenders Scraper (TED API)
Search EU public procurement tenders from TED (Tenders Electronic Daily) by keyword, CPV, country, date and value. Normalized JSON/CSV with buyers, deadlines, values. GDPR-safe defaults. MCP-ready.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
TenderFeed
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
EU Public Tenders Scraper (TED API) by TenderFeed
Search EU public procurement tenders from TED (Tenders Electronic Daily), the official journal of every public contract above EU thresholds across the 27 EU member states plus EEA countries. Filter by keyword, CPV code, buyer country, notice type, publication date, deadline and estimated value, and get clean, normalized JSON, CSV or Excel with buyer organisation, deadlines, values and document links (contact person details optional, off by default for GDPR).
Built by TenderFeed (tenderfeedhq.com) on the official TED Search API v3. No API key, no login, no HTML scraping, no CAPTCHAs.
What can you do with it?
- Find new EU tenders daily for your industry (IT, construction, medical, consulting, energy...) and send them to Slack, email, Google Sheets or your CRM.
- Lead generation for B2G sales teams: buyer organisation and city in every row; contact name, email and phone on request (
includeBuyerContacts). - Competitive intelligence: pull contract award notices (
result) to see who wins which contracts, and for how much. - Market research: count tenders by CPV code, country and value to size public-sector demand.
- AI agents and RAG: call this Actor as an MCP tool (via the Apify MCP server) so Claude, ChatGPT or your own agent can search live EU tenders.
Why TenderFeed?
- Official data only: the free TED Search API v3 from the EU Publications Office.
- One schema across countries: the same fields as our ../sam-gov-opportunities and ../uk-tenders Actors, so you can merge US, UK and EU tenders in one sheet.
- English-first: picks titles and descriptions in your preferred languages and falls back to the original.
- Value normalisation: a numeric
estimatedValue+currency(procedure estimate, total value, or the sum of lot estimates). - Robust: cursor pagination (beyond the 15,000-result page limit), retries with backoff, and rate-limit handling.
Input
| Field | Example | Notes |
|---|---|---|
keywords | ["software", "cloud"] | Full-text search in any language |
keywordMode | any | any or all |
cpvCodes | ["72000000"] | Parent codes include children (72000000 = all IT services) |
countries | ["DE", "FR", "NL"] | ISO alpha-2 buyer countries |
noticeTypes | ["competition"] | competition (calls for tender), result (awards), planning, change... |
publishedFrom / publishedTo | "14 days", 2026-10-01 | Default: last 30 days |
onlyOpen | true | Only tenders with a deadline today or later |
minValue / maxValue | 1000000 | In the notice currency (mostly EUR) |
maxResults | 250 | 0 = no limit |
customQuery | classification-cpv IN (72000000) AND buyer-country=DEU | TED expert query, overrides the filters |
{"keywords": ["software", "cloud"],"countries": ["DE", "FR", "NL"],"noticeTypes": ["competition"],"publishedFrom": "14 days","onlyOpen": true,"maxResults": 250}
Output
One row per notice. Real example from a live run (2026-10-29):
{"source": "ted","sourceId": "711842-2026","url": "https://ted.europa.eu/en/notice/-/detail/711842-2026","title": "ITDZ Berlin: Zutrittskontrollsystem","noticeType": "cn-standard","status": "active","procedureType": "open","contractType": "supplies","buyerName": "IT-Dienstleistungszentrum Berlin (AöR)","buyerCountry": "DE","buyerCity": "Berlin","cpvCodes": ["35113300", "72250000"],"publishedAt": "2026-10-15","deadlineAt": "2026-11-16","estimatedValue": 442600.0,"currency": "EUR","documentsUrl": "https://www.meinauftrag.rib.de/public/DetailsByPlatformIdAndTenderId/platformId/2/tenderId/211194"}
Full field list (shared TenderFeed schema): source, sourceId, ocid, url, title, description, noticeType, status, procedureType, contractType, buyerName, buyerCountry, buyerCity, buyerContactName, buyerContactEmail, buyerContactPhone, cpvCodes, naicsCodes, otherClassificationCodes, placeOfPerformance, publishedAt, deadlineAt, estimatedValue, currency, setAside, documentsUrl, submissionUrl, awardedValue, awardees, scrapedAt.
Export as JSON, CSV, Excel, XML or RSS, or read it via the Apify API. The example uses the default includeBuyerContacts: false; with true, this notice also carries "buyerContactEmail": "ausschreibungen@itdz-berlin.de".
Buyer contacts and GDPR (includeBuyerContacts)
By default (includeBuyerContacts: false) the Actor returns organisation-level data only: buyer name, country, city, documents and submission links. Contact person names, email addresses and phone numbers are removed from the output, from the optional raw payload, and email addresses embedded in description text are masked as [email removed].
Set includeBuyerContacts: true to keep the contact name, email and phone exactly as the authority published them. Only do this if you have a lawful basis under the GDPR (for example legitimate interest for B2G sales) and will honour objection and erasure requests. In a live test (40 TED notices, 2026-10-29) contacts-on returned an email on 40/40 rows, a phone on 40/40 and a named person on 23/40; contacts-off returned 0 of each while keeping buyerName on 40/40.
Daily alerts ("only new" monitoring mode)
Turn on onlyNew and give the search a monitoringId (e.g. "it-tenders-daily"), then schedule the Actor daily. Each run returns, and charges for, only notices you have not received before. Pair it with an Apify integration (Slack, email, Google Sheets, Zapier, Make) to get a ready-made tender alert.
Pricing
Pay per result: $2.00 per 1,000 tenders ($0.002 per row), plus Apify's small run-start fee. A daily alert returning 50 new tenders costs about $3 a month. Set Max cost per run to cap spending; the Actor stops cleanly at your limit.
Use it as an MCP tool for AI agents
Add the Apify MCP server (https://mcp.apify.com) to Claude Desktop, Cursor or any MCP client and enable this Actor. Your agent can then ask: "Find open IT tenders in Germany above EUR 500k closing this month".
FAQ
Is this legal? Yes. TED data is published by the EU Publications Office for re-use (Commission Decision 2011/833/EU). Personal contact details are excluded unless you set includeBuyerContacts: true; if you do, you are the controller for that data and must process it in line with the GDPR.
How fresh is the data? TED publishes new notices every working day; the Actor queries the live API at run time.
Can I schedule it? Yes, use Apify Schedules (e.g. every morning) with publishedFrom: "1 day".
Something missing? Open an issue on the Actor page. TenderFeed answers within one business day.