EU Tenders Scraper avatar

EU Tenders Scraper

Pricing

from $2.10 / 1,000 results

Go to Apify Store
EU Tenders Scraper

EU Tenders Scraper

Scrape public procurement tenders from TED Europa. Access over 700B+ EUR in annual contract opportunities across the European Union.

Pricing

from $2.10 / 1,000 results

Rating

0.0

(0)

Developer

Artificially

Artificially

Maintained by Community

Actor stats

0

Bookmarked

40

Total users

0

Monthly active users

3 days ago

Last modified

Share

EU Tenders (TED) Scraper - Enhanced

Scrape public procurement tenders from TED Europa with buyer profiles, deadline tracking, and tender analytics. Access contract opportunities worth over 700 billion EUR annually.

Use with AI agents (MCP)

This actor works as a tool for AI agents through Apify's MCP server at https://mcp.apify.com, so Claude, ChatGPT, Cursor and other MCP clients can search EU tenders directly. For agents, set "compactOutput": true and keep maxTenders small (5-20) to get short, token-friendly results.

Quick setup (sign in with your Apify account when asked):

  • Claude (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste https://mcp.apify.com?tools=artificially/eu-tenders-scraper
  • Claude Code or Cursor via the Apify CLI (latest version, apify upgrade): apify mcp install claude-code --tools artificially/eu-tenders-scraper (use cursor instead of claude-code for Cursor)
  • Any MCP client (Cursor, VS Code, Windsurf):
{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com?tools=artificially/eu-tenders-scraper" }
}
}

Try asking:

  • "Find open EU public tenders for software development in Germany with deadlines in the next 30 days."
  • "List EU tenders over EUR 1M for cybersecurity services published this month."

Features

  • Full-text search across TED notices, newest first
  • Filters: buyer country, CPV codes, notice type, procedure type, publication date range, estimated value range
  • Deadline filters: only open opportunities, or a minimum number of days until the tender deadline
  • Rich notice data: title (original language and English), description, lots, CPV codes, place of performance (NUTS), contract dates, estimated value in the notice currency
  • Award data for award notices: winners, awarded value, number of tenders received
  • Buyer profile (optional): the buyer's recent TED notices, top CPV codes and preferred procedures
  • Similar tenders (optional): recent notices with the same main CPV code in the same country

Use Cases

  • Track government procurement opportunities in the EU
  • Deadline-driven opportunity alerts
  • Buyer relationship management
  • Competitive analysis in EU public procurement
  • Market research for public sector sales
  • Build comprehensive tender databases

Input

FieldTypeDefaultDescription
searchQuerystring-Full-text keywords (multi-word queries match as a phrase)
countrystring-Buyer country, ISO 2-letter code (DE, FR, IT, ...)
cpvCodesarray-CPV codes, e.g. ["72000000"]
noticeTypestringallcn-standard, cn-social, pin-only, can-standard, can-social, veat, subco
procedureTypestringallopen, restricted, neg-w-call, neg-wo-call, comp-dial, innovation
maxTendersinteger100Maximum tenders to return (1-1000)
dateFromstringlast 30 days if no queryPublication date from (YYYY-MM-DD)
dateTostring-Publication date to (YYYY-MM-DD)
onlyOpenDeadlinesbooleanfalseOnly notices whose submission deadline is in the future
minDaysUntilDeadlineinteger-Minimum days until the earliest submission deadline
minEstimatedValue / maxEstimatedValueinteger-Estimated value range (notice currency)
includeFullDetailsbooleantrueDescriptions, lots, buyer contacts, contract dates, award details
includeBuyerProfilebooleantrueAdd buyerProfile (one extra request per new buyer)
includeSimilarTendersbooleanfalseAdd similarTenders (one extra request per tender)
maxSimilarTendersinteger5Similar tenders per result
compactOutputbooleanfalseSlim items with only key fields (see below); recommended for AI agents

Example Input

{
"searchQuery": "software development",
"country": "DE",
"onlyOpenDeadlines": true,
"minDaysUntilDeadline": 14,
"includeBuyerProfile": true,
"includeFullDetails": true,
"maxTenders": 50
}

Output

Each tender is one dataset item (abbreviated real example):

{
"noticeId": "656672-2026",
"tedNoticeNumber": "656672-2026",
"documentNumber": "ead5e827-f2fd-41fb-b8ba-735204aa6390",
"publicationDate": "2026-09-23",
"submissionDeadline": "2026-10-06T10:00:00+02:00",
"contractStartDate": "2027-01-04",
"contractEndDate": "2030-12-31",
"noticeType": "cn-standard",
"noticeTypeDescription": "Contract Notice",
"procedureType": "open",
"contractType": "services",
"title": "Rahmenvereinbarungen Programmier- und Beratungsleistungen zur Anwendungsentwicklung im Ressort des StMELF",
"titleEnglish": "Germany – IT services: consulting, software development, Internet and support – Rahmenvereinbarungen ...",
"shortDescription": "Benötigt werden Dienstleistungen im Bereich der Entwicklung und Pflege von Anwendungen ...",
"fullDescription": "...",
"estimatedValue": 46875000,
"currency": "EUR",
"valueRange": null,
"buyer": {
"officialName": "Freistaat Bayern, vertreten durch das Bayer. StM f. Ernährung, Landwirtschaft, Forsten und Tourismus",
"address": "Ludwigstraße 2",
"city": "München",
"postalCode": "80539",
"country": "Germany",
"countryCode": "DE",
"contactEmail": "poststelle@stmelf.bayern.de",
"contactPhone": "+49 8921820",
"contactUrl": "https://www.stmelf.bayern.de/",
"buyerType": "body-pl-ra",
"mainActivity": "gen-pub"
},
"cpvCodes": [{ "code": "72000000", "description": null }, { "code": "72211000", "description": null }],
"mainCpvCode": "72000000",
"nutsCode": "DE212",
"country": "Germany",
"countryCode": "DE",
"region": "DE21",
"city": "München",
"numberOfLots": 5,
"lots": [
{ "lotNumber": 1, "lotId": "LOT-0001", "title": "Dienstleistungen Anwendungsentwicklung", "estimatedValue": 9375000, "cpvCode": "72211000" }
],
"awarded": false,
"winnerName": null,
"awardedValue": null,
"numberOfTenders": null,
"url": "https://ted.europa.eu/en/notice/-/detail/656672-2026",
"pdfUrl": "https://ted.europa.eu/en/notice/656672-2026/pdf",
"xmlUrl": "https://ted.europa.eu/en/notice/656672-2026/xml",
"buyerProfile": {
"name": "Freistaat Bayern, vertreten durch das Bayer. StM f. ...",
"totalTenders": 42,
"sampleSize": 25,
"averageValue": 17432050,
"topCpvCodes": [{ "code": "32232000", "description": null, "count": 5 }],
"recentTenders": [{ "noticeId": "632025-2026", "title": "...", "value": null, "publicationDate": "2026-09-11", "url": "..." }],
"preferredProcedures": [{ "type": "open", "count": 21 }]
},
"daysUntilDeadline": 13,
"isExpired": false,
"competitionLevel": null,
"scrapedAt": "2026-09-23T09:00:43.560Z"
}

Notes:

  • Values are reported in the notice's own currency (currency), not converted to EUR.
  • title is in the notice's original language; titleEnglish is TED's English summary title.
  • Fields are null when the notice does not contain that information (e.g. older pre-2023 notices carry fewer structured fields). nutsDescription and CPV description are currently always null.
  • buyerProfile.totalTenders is the number of TED notices matching the buyer name and country; the other profile figures are computed from the sampleSize most recent notices of that exact buyer.
  • awardedValue, winnerName, winnerCountry, numberOfTenders and competitionLevel are filled for award notices when TED provides them.

After each run, the key-value store contains a SUMMARY record (query used, items saved, skipped and filtered counts), plus FAILED_REQUESTS and INVALID_TENDERS.

Compact output

With "compactOutput": true each item keeps only the key decision fields: noticeId, title, titleEnglish, publicationDate, submissionDeadline, daysUntilDeadline, isExpired, noticeType, procedureType, contractType, estimatedValue, currency, buyerName, buyerEmail, countryCode, city, mainCpvCode, cpvCount, numberOfLots, lotsCount, awarded, winnerName, awardedValue, numberOfTenders, competitionLevel, url, scrapedAt. Descriptions, full lot lists, buyer profiles and similar tenders are left out.

Pricing

This actor uses pay-per-event pricing; see the Pricing tab for current prices. You only pay for valid results: incomplete notices, duplicates and failed requests are skipped and never charged. If you set a maximum cost per run, the actor stops cleanly when it is reached.

No API key required - uses TED Europa's public search API.

Tips

  1. Active opportunities: Enable onlyOpenDeadlines to filter to tenders you can still bid on (use noticeType: "cn-standard" to exclude award notices)

  2. Preparation time: Use minDaysUntilDeadline: 14 to find opportunities with at least 2 weeks to prepare

  3. Buyer intelligence: includeBuyerProfile reveals the buyer's recent procurement patterns; turn it off for faster runs

  4. Similar tenders: Enable includeSimilarTenders to discover related opportunities

  5. Procedure types:

    • open - Open to all qualified bidders
    • restricted - Prequalification required
    • neg-w-call - Negotiated with prior publication
    • comp-dial - Competitive dialogue

Data Source

Data from TED Europa, the official journal for European public procurement.

Support

  • Built by: Artificially
  • Issues: Report bugs or request features via Apify Console