EU Tender Monitor avatar

EU Tender Monitor

Pricing

$2.00 / 1,000 notice returneds

Go to Apify Store
EU Tender Monitor

EU Tender Monitor

Find EU public-sector tenders you can bid on. Search TED by keyword, country or CPV code and get the buyer, the value, the deadline and a link to the notice, with new tenders flagged on every run after the first.

Pricing

$2.00 / 1,000 notice returneds

Rating

0.0

(0)

Developer

Peach O

Peach O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

EU Tender Monitor: Find Public Contracts You Can Still Bid On

Search every tender published to TED, the EU's official public procurement journal, by what you sell, which country is buying, or CPV code. You get the buyer, the value, the deadline, the days left and a link to the notice — and on every run after the first, only what is new.

Built for companies that sell to the public sector in Europe, and for anyone who currently finds out about a tender the week it closes.

How it works

flowchart LR
A["Keywords, countries<br/>or CPV codes"] --> B["TED expert query"]
B --> C["Notices across<br/>all EU languages"]
C --> D["One English row per notice"]
D --> E{"Still open?"}
E -->|deadline ahead| F["Bidable"]
E -->|already awarded| G["Who won"]
F --> H[("Tender feed")]
G --> H

No scraping and no API key. This reads TED's own public API, so it does not break when the portal is restyled and it needs no proxy or browser.

Built for

  • Bid and tender teams watching their category across Europe
  • SMEs that cannot justify a procurement-alerts subscription
  • Consultancies and agencies selling into government
  • Competitive intelligence reading award notices to see who wins what
  • Researchers studying public spending

Input

{
"keywords": ["software", "cloud hosting"],
"countries": ["DEU", "NLD", "POL"],
"minValue": 100000,
"onlyNew": true
}
SettingWhat it does
keywordsWords in the tender title — the main search
searchFullTextSearch the whole notice, not just the title
countriesISO three-letter buyer countries, e.g. DEU, FRA
cpvCodesEU procurement category codes, e.g. 48000000 for software
noticeTypesopenTenders, awards, planning
lastDaysHow far back to search
openOnlyDrop awards and anything already closed
minValue / maxValueKeep only contracts worth bidding on
onlyNewReturn nothing on a quiet run
timeBudgetSecsHow long a run may spend paging before returning what it has

Output

{
"publicationNumber": "647141-2026",
"title": "Germany – IT services: consulting, software development, Internet and support – SIEM-MSOC tender",
"buyer": "Hamburger Energiewerke GmbH",
"country": "DEU",
"category": "open-tender",
"contractNature": "services",
"cpvCodes": ["72000000"],
"totalValue": 3079458,
"publishedAt": "2026-09-07",
"deadline": "2026-10-09",
"daysToDeadline": 18,
"url": "https://ted.europa.eu/en/notice/647141-2026",
"changeType": "new-notice",
"isNew": true,
"checkedAt": "2026-09-21T18:02:44.512Z"
}

daysToDeadline is the field to sort and alert on. Anything under about 14 days is usually too late to start a serious bid.

Two things TED does that would otherwise corrupt the data, handled here:

  • Every notice is published in all EU languages. Titles and buyer names arrive as a bundle of translations. Each row gets the English one, falling back to the national language rather than coming back blank.
  • Per-lot values repeat once per lot. A twenty-lot notice sends its deadline twenty times and its country three times. Lists are deduplicated, and the deadline shown is the earliest across all lots — the one that actually constrains you.

Turn it into a tender alert

{
"keywords": ["facilities management"],
"countries": ["IRL", "GBR"],
"openOnly": true,
"onlyNew": true
}

Schedule it daily. The first run records what is already out there without alerting; every run after returns only tenders that published since.

Run it as an API

curl -X POST "https://api.apify.com/v2/acts/arched_friend~eu-tender-monitor/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["cloud"],
"countries": ["DEU"],
"openOnly": true
}'

Pricing

You pay $0.002 for each notice returned. A run that finds nothing new costs nothing.

Watching a category dailyMonthly cost
Reading TED by handhours every week
Tender alert subscriptions€100 to €500 per month
This Actoraround $1.20 per month at 20 new notices a day

Common questions

Why is totalValue sometimes null? Because TED does not require a buyer to publish an estimate, and many do not. It is reported as null rather than guessed, and a minimum-value filter deliberately keeps those rows instead of hiding real tenders behind a missing number.

Why do some titles start with a country name? That is how TED writes them. Titles pass through as published rather than being reworded into something that no longer matches the source.

Does this cover national portals too? No. TED carries tenders above the EU thresholds plus whatever member states choose to publish there. Small local contracts often appear only on a national portal.

Can I search by CPV instead of words? Yes, and it is more reliable if you know your category — a CPV code means the same thing in every language, and a keyword does not.

Do I need an API key? No. TED is open and keyless.

  • Federal Contract Finder for the US side of the same pipeline
  • Company Hiring Monitor to see which competitors are staffing up for a contract
  • Regulation Change Monitor for the rules driving public spending
  • Website Change Monitor to watch a national procurement portal TED does not cover