EU TED Tender Monitor – CPV & Keyword Alerts avatar

EU TED Tender Monitor – CPV & Keyword Alerts

Pricing

from $3.00 / 1,000 tender delivereds

Go to Apify Store
EU TED Tender Monitor – CPV & Keyword Alerts

EU TED Tender Monitor – CPV & Keyword Alerts

Monitor EU public tenders from the official TED Search API (Publications Office of the EU). Filter by CPV code, keyword, country and notice type; get only new tenders on a schedule. Contact persons, e-mails, phones and street addresses are excluded by design.

Pricing

from $3.00 / 1,000 tender delivereds

Rating

0.0

(0)

Developer

Shyheim Ulrickson

Shyheim Ulrickson

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

Get alerts for new EU public tenders published on TED (Tenders Electronic Daily). Filter by CPV code, keyword, buyer country and notice type, and run on a schedule to receive only new tenders since the last run. Data comes exclusively from the official TED Search API (POST https://api.ted.europa.eu/v3/notices/search) – no scraping, no login, no API key.

What you get per tender

FieldExample
publicationNumber756453-2026
publicationDate2026-11-03
title (English when available)Sweden – Information systems … – Omvärldsanalys IT
buyerName / buyerCountryLiseberg AB / SWE (organisation only)
mainCpv72222000 (notice-level main CPV)
cpvCodes["72222000"] (all codes incl. additional/lot)
estimatedValue / currency13000000 / SEK
deadline2026-12-12 (earliest tender-receipt deadline)
procedureType / noticeTypeopen / cn-standard
tedUrl, pdfUrl, xmlUrllinks on ted.europa.eu

Privacy by design: contact-person names, e-mails, phone/fax numbers and street addresses are never requested from TED and never output. The list is recorded in RUN_SUMMARY.omittedPersonalDataFields.

How CPV matching works (read this)

CPV codes are hierarchical: 72000000 covers every IT-services code below it (72222000, 72212180, …).

  • cpvMatch: "main" (default, precise): a tender is returned only if its notice-level main CPV (eForms BT-262, TED field main-classification-proc) equals one of your codes or sits under it. Tenders where your code appears only as an additional or lot-level code are dropped for free and do not count towards maxItems.
  • cpvMatch: "any" (broad): TED's raw match. Any CPV anywhere on the notice counts, including additional and lot codes. Example: an Irish wound-dressings framework (main CPV 33141110) lists one IT code 72212180 among 18 additional codes, so it appears under 72000000 in any mode but not in main mode.

Limitation: main mode can miss multi-lot tenders whose overall main CPV is in another division even though one lot is exactly what you sell (e.g. a hospital tender with main CPV 33000000 and a software lot). Use any mode, or add a keyword, if you need those. Older notices without a procedure-level main CPV fall back to the first CPV TED lists.

How to run

  1. Pick CPV codes (e.g. 72000000 IT services, 45000000 construction, 79400000 consulting), and/or keywords, and/or countries.
  2. Keep noticeTypes = ["cn-standard"] for open calls for tender.
  3. Set maxItems (default 10, so a first run is cheap).
  4. For alerts, set mode = "new" and schedule the Actor.

Sample input

{
"cpvCodes": ["72000000", "48000000"],
"keywords": ["cloud", "data platform"],
"countries": ["DE", "AT", "NL"],
"noticeTypes": ["cn-standard"],
"publishedSince": "2026-10-29",
"mode": "all",
"maxItems": 200
}

Ready-made weekly CPV alert (schedule)

Create a Saved Task with this input and attach an Apify Schedule with cron 0 7 * * 1 (Mondays 07:00):

{
"cpvCodes": ["72000000"],
"countries": ["DE", "FR"],
"noticeTypes": ["cn-standard"],
"mode": "new",
"maxItems": 500,
"stateStoreName": "eu-ted-tender-monitor-state"
}

In new mode the Actor remembers delivered publication numbers in the named key-value store (one key per filter set), re-scans from 2 days before the previous run to catch late indexing, and outputs only unseen tenders. Hook a webhook/Make/Zapier/Slack integration to the dataset to get the alert delivered.

Empty input

Running with no filters succeeds as a tightly capped demo: one free guidance row explaining how to set filters, plus at most 10 standard contract notices from the last 3 days. A no-filter TED query matches tens of thousands of notices per week (≈18,800 between 1–5 Nov 2026), so the cap keeps empty-input QA runs fast and costing cents.

Pricing

Pay-per-event:

EventPrice
Actor start$0.005
tender – each notice delivered in mode all$0.003
tender-new – each new notice delivered in mode new$0.005

Filtered-out notices (including CPV mismatches dropped by main matching), already-seen notices and guidance rows are free. The Actor stops cleanly at your spending limit.

Rate limits and reliability

TED's fair-usage policy allows 700 requests/minute. This Actor defaults to 60/min (max 300), uses ITERATION pagination (iterationNextToken, ≤250 per page) for consistent bulk retrieval, and retries timeouts, 429 and 5xx with exponential backoff honouring Retry-After. Invalid expert queries fail fast with TED's error message.

Output files

  • Dataset: one row per tender (+ a guidance row on empty input).
  • RUN_SUMMARY in the default key-value store: query used, TED total match count, requests made, delivered/skipped counts, truncation, charging counts, omitted personal-data fields, source credit.

Source and credit

Data: TED – Tenders Electronic Daily, © European Union, Publications Office of the European Union (https://ted.europa.eu), retrieved via the official TED Search API. Reuse is authorised under the TED legal notice (https://ted.europa.eu/en/legal-notice). Changes made: fields are selected and normalised (English title chosen when available, lot values summed, earliest deadline chosen, personal data removed, notices filtered to the requested main CPV by default). This Actor is not affiliated with or endorsed by the Publications Office.