Apify Actor · BUSINESS, LEAD_GENERATION
EU Public Tender Monitor (TED)
New public procurement notices from the EU's official TED search API for a CPV code prefix, buyer country and keyword, returning only the notices that are new …
This Actor reads public procurement notices from TED, the EU's official journal of public procurement, through its official search API v3 (no key needed). You …
Run it on the Apify Store $1.60 per 1,000 results, billed by Apify; Apify's free plan includes monthly credit.
Inputs
| Field | Type | What it does | Example |
|---|---|---|---|
cpv_prefix | string | CPV code prefix: Start of the CPV code to follow (for example 72 for IT services, 45 for construction, 33 for medical equipment). | "72" |
country | string | Buyer country: Country of the buying organisation, as a three-letter ISO code. | "FRA" |
keyword | string | Keyword in the title: Optional word that the notice title must contain. Leave empty to keep all notices. | "services" |
published_since | string | Published since: Only notices published on or after this date, written YYYYMMDD. | "20250101" |
onlyChanges | boolean | Only changes: On: each run returns only the records whose watched values changed since your last run (your first run returns them all). Off: every matching record, each with… | false |
maxItems | integer | Max results: Stop after this many results (keeps a run's cost predictable). | 5000 |
What each result holds
| Field | Type |
|---|---|
notice_id (always set) | id |
publication_date | date |
buyer | text |
country_code | text |
title | text |
cpv_codes | list |
procedure | text |
deadline | date |
estimated_value | number |
currency | text |
url | url |
Sample output
The first 3 results of its latest test run on the platform (long values shortened).
[
{
"buyer": "Agence nationale des titres sécurisés",
"country_code": "FRA",
"cpv_codes": "[\"72000000\", \"72000000\", \"72330000\", \"72220000\", \"72500000\", \"72000000\", \"50324100\", \"72500000\"]",
"currency": null,
"deadline": "2025-02-03",
"estimated_value": null,
"first_seen": true,
"notice_id": "546-2025",
"previous": null,
"procedure": "open",
"publication_date": "2025-01-02",
"title": "France – IT services: consulting, software development, Internet and support – La consultation a pour objet la passation de marchés publics relatifs à la réali…",
"url": "https://ted.europa.eu/en/notice/-/detail/546-2025"
},
{
"buyer": "CIGPCIF - Centre Interdépartemental de Gestion de la Petite Couronne de l'Ile de France",
"country_code": "FRA",
"cpv_codes": "[\"72268000\", \"48180000\", \"72000000\", \"72268000\", \"48180000\", \"72000000\"]",
"currency": null,
"deadline": null,
"estimated_value": null,
"first_seen": true,
"notice_id": "586-2025",
"previous": null,
"procedure": "open",
"publication_date": "2025-01-02",
"title": "France – Software supply services – Solution de dématérialisation du Conseil Médical",
"url": "https://ted.europa.eu/en/notice/-/detail/586-2025"
},
{
"buyer": "FGDR (Fonds de garantie des dépôts et de Résolution)",
"country_code": "FRA",
"cpv_codes": "[\"72000000\", \"72000000\"]",
"currency": null,
"deadline": "2025-01-31",
"estimated_value": null,
"first_seen": true,
"notice_id": "711-2025",
"previous": null,
"procedure": "open",
"publication_date": "2025-01-02",
"title": "France – IT services: consulting, software development, Internet and support – Marché public de services d'assistance à pilotage de projet et réalisation de te…",
"url": "https://ted.europa.eu/en/notice/-/detail/711-2025"
}
]
Call it from code
With the Apify API (one request; the response is the results):
curl -X POST "https://api.apify.com/v2/acts/nonstop_poacher~store-ted-tender-monitor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"country": "FRA", "cpv_prefix": "72", "keyword": "services", "maxItems": 5000, "onlyChanges": false, "published_since": "20250101"}'
With the Python client (pip install apify-client):
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nonstop_poacher/store-ted-tender-monitor").call(run_input={'country': 'FRA',
'cpv_prefix': '72',
'keyword': 'services',
'maxItems': 5000,
'onlyChanges': False,
'published_since': '20250101'})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
From an AI agent: connect Apify's MCP server and add the Actor nonstop_poacher/store-ted-tender-monitor.
Questions
What does it cost? $1.60 per 1,000 results, charged per result through your Apify account. You pay only for results it returns.
Something wrong? Open an issue on the Issues tab of its Store page.