SwarmIncToolsAPIsFree LLM APIsSupport

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

FieldTypeWhat it doesExample
cpv_prefixstringCPV code prefix: Start of the CPV code to follow (for example 72 for IT services, 45 for construction, 33 for medical equipment)."72"
countrystringBuyer country: Country of the buying organisation, as a three-letter ISO code."FRA"
keywordstringKeyword in the title: Optional word that the notice title must contain. Leave empty to keep all notices."services"
published_sincestringPublished since: Only notices published on or after this date, written YYYYMMDD."20250101"
onlyChangesbooleanOnly 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
maxItemsintegerMax results: Stop after this many results (keeps a run's cost predictable).5000

What each result holds

FieldType
notice_id (always set)id
publication_datedate
buyertext
country_codetext
titletext
cpv_codeslist
proceduretext
deadlinedate
estimated_valuenumber
currencytext
urlurl

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.