EU Tenders Scraper: TED, All 27 Member States avatar

EU Tenders Scraper: TED, All 27 Member States

Pricing

from $0.50 / 1,000 notice returneds

Go to Apify Store
EU Tenders Scraper: TED, All 27 Member States

EU Tenders Scraper: TED, All 27 Member States

[$2.00 / 1K] Public procurement notices from TED, the official EU journal, covering all 27 member states plus the EEA. Filter by country, CPV code, keyword, deadline and value. Title and description in the language you ask for. New notices only since your last run.

Pricing

from $0.50 / 1,000 notice returneds

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

EU Tenders Scraper

What does Public Tenders Scraper do?

EU Tenders Scraper returns public procurement notices from TED, the European Union journal covering all 27 member states and the European Economic Area, and from both UK services, in one table. Every row carries the deadline, the value, the buyer, the CPV codes and a link to the notice.

No browser, no proxies, no API key. Every source is an official, public interface.

One query instead of twenty-seven

There are more than a hundred tender actors on this store and almost all of them cover one country. A company bidding across Europe needs a dozen tools and a dozen different schemas, then has to merge them by hand.

This one takes a single query:

SourceWhat it covers
tedEvery EU member state plus Iceland, Liechtenstein, Norway and Switzerland
uk-ftsFind a Tender, the UK service for contracts above the threshold
uk-cfContracts Finder, the UK service for contracts below it

The deadline is the product

A tender is worth reading only while you can still bid for it. Every row therefore carries deadline as a real timestamp and daysToDeadline as a number you can sort and filter on, even though the sources publish it in three different shapes and sometimes once per lot.

Turn on onlyOpen and the run drops two things: notices whose deadline has passed, and contract award notices, which announce a contract somebody else already won. Neither is charged.

Filters that match how buyers think

  • cpv takes Common Procurement Vocabulary codes, the official taxonomy of what is being bought. 72000000 is IT services, 45000000 is construction. A division code matches everything inside it.
  • countries takes ordinary two-letter codes and translates them to whatever each source expects.
  • keywords searches the full text of the notice.
  • minValue keeps the contracts worth bidding for. Notices with no published value are kept, because an absent value is not a small one.
  • deadlineAfter keeps only what you can still submit.

Your language, and honest about it

The EU journal publishes each notice in the language of the buyer and usually in the other official languages too. A German notice arrives as a map of two dozen translations, and most tools hand you whichever one came first.

Set language to the code you want. Each row gets the title and description in that language, falls back to English, then to whatever exists, and records in language which one you actually got plus every language the notice was available in. You always know what you are reading.

Only what is new

Turn on newOnly, give the run a watch name or save it as a task, and schedule it daily. Each run compares against the previous snapshot and returns only notices that are new or whose deadline or status moved. A tender has a short deadline, so a scheduled watch is worth more than a one-off export, and you pay for the new notices and nothing else.

Input

{
"sources": ["ted", "uk-fts", "uk-cf"],
"countries": ["DE", "NL", "PL"],
"cpv": ["72000000"],
"keywords": ["cloud"],
"deadlineAfter": "2026-10-01",
"onlyOpen": true,
"minValue": 100000,
"language": "en",
"newOnly": true,
"watchKey": "it-services-dach",
"maxItems": 1000
}

Output

{
"key": "ted:653878-2026",
"source": "ted",
"sourceName": "TED, the EU public procurement journal",
"country": "DE",
"noticeId": "653878-2026",
"title": "Germany, IT services: consulting, software development, Internet and support, Backup Cloud to Cloud",
"buyer": "Deutsche Gesetzliche Unfallversicherung e.V.",
"publishedAt": "2026-09-22T22:00:00.000Z",
"deadline": "2026-10-22T22:00:00.000Z",
"daysToDeadline": 30,
"valueAmount": null,
"valueCurrency": null,
"cpv": ["72000000"],
"noticeType": "cn-standard",
"procedureType": "open",
"contractNature": "services",
"language": "eng",
"url": "https://ted.europa.eu/en/notice/-/detail/653878-2026",
"documentsUrl": "https://ted.europa.eu/en/notice/653878-2026/pdf"
}

A value of null means the source did not publish one. It is never a guess.

Pricing

EventPrice
Notice returned$0.004, falling to $0.002 on higher plans
Notices removed by a filter, notices unchanged in new-only modefree

No start fee. A run that returns nothing costs nothing.

Frequently asked questions

How far back can I search? Give publishedFrom and publishedTo. With no dates at all the run covers the last seven days, which is what a daily or weekly watch needs.

Why do some notices have no value? Because the buyer did not publish one, which is common for open procedures in several countries. Award notices carry the real contract value; open notices carry an estimate when the buyer gives one.

Do you cover contract awards as well as open tenders? Yes, both. Leave onlyOpen off and you get award notices too, which is what you want for market intelligence rather than bidding.

Which notice types exist? The EU journal uses codes like cn-standard for a contract notice, can-standard for an award, pin-only for prior information and qu-sy for a qualification system. Pass them in noticeTypes to narrow the run.

Is this the same data as the official portals? Yes, read from the official interfaces at run time. Nothing is cached and nothing is enriched by a third party.

How to use EU Tenders Scraper

  1. Open the actor and fill in countries and cpv in the input form, or paste the JSON input from the example above.
  2. Click Start. The first rows appear in the Output tab within seconds; the run summary is in the Storage tab under the key SUMMARY.
  3. Download the results as JSON, CSV or Excel from the Output tab, or read them through the API link shown there.
  4. To run it on a schedule, click Save as a task, set the input once and add a schedule. Scheduled tasks keep their own change snapshot, so the new-only mode works without any extra setup.

Integrations

The actor is available in the Apify apps for Make, Zapier, n8n and Keboola, where you pick it by name and map the input fields. It is also exposed to AI agents through the Apify MCP server, and callable from any language through the Apify API; the API tab on this page has ready-made snippets for Node.js, Python and curl. Every run can post its results to a webhook when it finishes.

Support

Questions and problems go into the Issues tab of this actor. Each issue is answered by the maintainer, and fixes ship as new builds without any change on your side.

Built and operated by deriverge s.r.o. Same rules as our other actors: unified schema, honest billing, no charge for what you did not get.

Every other source we cover is in Public Tenders Scraper, the multi-source actor this one is built from.