EU Public Tenders (TED) Feed & Contract Expiry Radar avatar

EU Public Tenders (TED) Feed & Contract Expiry Radar

Pricing

$4.00 / 1,000 tender notices

Go to Apify Store
EU Public Tenders (TED) Feed & Contract Expiry Radar

EU Public Tenders (TED) Feed & Contract Expiry Radar

Clean, deduplicated feed of EU/EEA public tenders, contract awards and soon-to-expire contracts from the official TED Search API. Filter by country, CPV (IT/cyber presets), keyword, value. Personal data stripped by default.

Pricing

$4.00 / 1,000 tender notices

Rating

0.0

(0)

Developer

Larches Technologies Limited

Larches Technologies Limited

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Get one clean, deduplicated feed of public procurement notices from all 27 EU countries plus EEA, Switzerland and candidate countries. The data comes from TED (Tenders Electronic Daily), the official online version of the Supplement to the Official Journal of the EU. The feed covers about 800 new notices every working day.

The Actor uses the official TED Search API v3 (api.ted.europa.eu). It does no HTML scraping and needs no login or API key.

What you can do with it

  • Find open tenders. Get calls for competition that are still open for bids, filtered by buyer country, CPV code, keyword and value. You can also include prior-information (pipeline) notices.
  • Track contract awards. See who won what, from which buyer, for how much and when. Use it for competitor and partner intelligence, or to build lists of companies that win public contracts.
  • Watch for expiring contracts (renewal radar). Find awarded contracts whose contract end date falls in the next N months. This lets you meet the buyer before the re-tender is published. The date filter runs on TED itself, so the results are complete, not sampled.
  • Use sector presets:
    • IT: CPV 72, 48, 302 and 324.
    • Cyber security: a multilingual title keyword set, including cyber*, ciber*, kyber*, kiber*, pentest, ransomware, zero trust, SOC, NIS2, ISO 27001, firewall and threat intelligence. Insurance lots that only cover "cyber risks" are excluded.
    • Construction, facilities and medical.
  • Get only new notices. Schedule the Actor daily. With onlyNew, each procedure is delivered (and paid for) once.
  • Read titles in English. TED's English title (or the language you choose) comes alongside the original-language title and description.

Example inputs

IT tenders from Germany, France and Ireland published in the last 3 days:

{ "mode": "opportunities", "countries": ["DE", "FR", "IE"], "cpvPreset": "it", "lookbackDays": 3 }

Cyber security tenders across Europe, new since the last run (schedule daily):

{ "mode": "opportunities", "cpvPreset": "cyber", "lookbackDays": 2, "onlyNew": true }

IT contracts in DE, NL or FR that end within the next 9 months:

{ "mode": "expiringContracts", "cpvPreset": "it", "countries": ["DE", "NL", "FR"], "expiringWithinMonths": 9 }

Awards over €1m in Spain, with stated values only:

{ "mode": "awards", "countries": ["ES"], "minValue": 1000000, "requireValue": true, "lookbackDays": 14 }

Your own keywords in several languages:

{ "mode": "opportunities", "keywords": ["cloud", "nuage", "nube", "\"microsoft 365\""], "keywordScope": "titleDescription" }

Advanced: add any TED expert-query clause (for example, only open procedures in Île-de-France):

{ "mode": "opportunities", "customQuery": "procedure-type IN (open) AND place-of-performance IN (FR1*)" }

Input (main fields)

FieldDefaultNotes
modeopportunitiesopportunities, awards, expiringContracts or all
countriesallISO-2 or ISO-3 buyer country codes
lookbackDays3Days of publication history. For expiringContracts, the default is 730. eForms end dates exist from late 2023 onwards.
cpvPreset / cpvPrefixes–Matches main or additional CPV codes of any lot
keywords / excludeKeywords / keywordScope–Searched in every language. cyber* is a prefix match. Scope can be title, titleDescription or fullText.
minValue, maxValue, requireValue–In the notice currency (usually EUR)
openOnlytrueDrops tenders whose deadline has passed
includePriorInformationfalseAdds planning and pipeline notices
expiringWithinMonths12For expiringContracts
onlyNewfalseState is kept in the named key-value store eu-ted-feed-state, separately for each input
maxItems / maxPages500 / 30Caps cost and run time. Each page holds up to 100 notices.
customQuery–ANDed to the query in TED expert syntax

Output

Each notice is one row, and the Overview table view comes first. The fields are:

  • Notice: publicationNumber, noticeUrl, pdfUrl, procedureId, noticeType, stage (planning / tender / award) and feed.
  • Text: title (in your chosen language), titleOriginal, originalLanguage and description.
  • Buyer: buyerName, buyerCountry, buyerCity, buyerPostalCode, buyerWebsite and buyerLegalType.
  • Classification: contractNature, procedureType, mainCpv, cpvCodes and placeOfPerformance (NUTS codes).
  • Value and dates: estimatedValue, currency, submissionDeadline, contractStart, contractEnd, durationMonths, frameworkAgreement, suitableForSme and lotCount.
  • Award: awardDate, winners[] (name, country, size, national ID), awardedValueTotal and awardedCurrency.
  • Licence: the licence statement.

See sample-output.json. A RUN_SUMMARY record in the default key-value store holds the queries used and the counts: fetched, kept, duplicates, already delivered and filtered.

Rows are deduplicated by procedure and stage. TED often republishes a procedure as corrigenda or as one award notice per lot, and only one row per stage is kept. When TED provides no value, the value fields are null. That is common: buyers may withhold the estimate.

Privacy by default (GDPR)

TED notices are public, but they can still contain personal data. By default, this Actor removes it:

  • Contact people, emails and phone numbers are not collected. Any email address or phone number found in titles and descriptions is replaced with [email removed] or [phone removed].
  • Award winners that TED flags as natural persons (sole traders) are withheld unless their name carries a company legal form (GmbH, AB, Ltd, Sp. z o.o. and so on). winnersWithheld counts how many were withheld.

Turn on includeContacts only if you have a lawful basis for processing that data. You are the controller of any personal data you process.

Pricing

Pay per result: $0.004 per notice row (that is, $4 per 1,000 notices) plus normal Apify platform usage. There is no start fee. Rows you have already received are skipped with onlyNew and are not charged. Use maxItems to cap the cost of any run.

Politeness and reliability

  • About 1 request per second, well under TED's fair-use limit of 700 requests per minute. A descriptive User-Agent is sent.
  • Retries with back-off on 429 and 5xx errors.
  • Uses TED's iteration (scroll) pagination with a hard page cap.
  • When TED rejects a query (for example, a bad customQuery), the run fails with TED's own error message, so a broken schedule is not silently "successful".

Licence and attribution

The notice data is © European Union, from TED (https://ted.europa.eu). The TED legal notice says that procurement notices "can be freely reused, for commercial or non-commercial purposes". Reuse is governed by Commission Decision 2011/833/EU on the reuse of Commission documents, and its conditions apply:

  • acknowledge the source;
  • do not distort the original meaning;
  • the Commission is not liable for any consequence of reuse.

Every row carries a licence statement. Keep it when you republish. Only the notices published in the Official Journal (OJ S) are authentic, so always read the official notice before you bid. This Actor is not affiliated with or endorsed by the European Union or the Publications Office.

Run locally

cd eu-ted-tenders-feed
python3 -m venv .venv && . .venv/bin/activate && pip install -r requirements.txt
apify run -i '{"mode":"opportunities","cpvPreset":"cyber","lookbackDays":7,"maxItems":20}' # no login or API key needed

The results are written to storage/datasets/default/.