EU & France Public Tenders Scraper — TED + BOAMP, Deduped avatar

EU & France Public Tenders Scraper — TED + BOAMP, Deduped

Pricing

Pay per usage

Go to Apify Store
EU & France Public Tenders Scraper — TED + BOAMP, Deduped

EU & France Public Tenders Scraper — TED + BOAMP, Deduped

Scrape EU public tenders from TED (27 countries) and French BOAMP in one deduplicated dataset, plus French contract awards (DECP). Filter by country, CPV, keyword, region and value. Monitor mode returns only new notices. Official open data, no personal data. Appels d'offres, marchés publics.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

TenderLantern

TenderLantern

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Features

Limited permissions

Share

EU & France Public Tenders — TED + BOAMP + DECP in one deduplicated feed

By default, this Actor returns only public tenders that are still open (no past deadline), from the EU (TED) and France (BOAMP), with duplicates merged and no contract awards.

Public procurement notices from the 27 EU countries (TED) and from France (BOAMP), plus French contract awards (DECP), in one dataset with duplicates merged. Built for bid teams, SMEs, tender-monitoring consultants and AI agents.

  • 24 % of raw notices were duplicates and got merged (benchmark of 50 real queries, measured 24 October 2026).
  • 27 EU countries covered on TED by default (since version 0.2, 24 October 2026).
  • 0 e-mail addresses, phone numbers or personal names in 3,170 notices produced by the benchmark (24 October 2026).

Quick start (3 steps)

  1. Copy one of the input examples below into the Input tab (or into the API call).
  2. Click Start. With the default settings, a run returns 200 notices (local test, 24 October 2026: about 10 seconds; cloud runs can be slower).
  3. Export the dataset as JSON, CSV or Excel, or schedule the Actor with an Apify schedule and use monitor mode (see below).

Why this Actor?

A French tender above the EU thresholds is published twice: on TED and on BOAMP. Querying both sources separately means paying for and sorting duplicates.

This ActorA TED-only ActorA BOAMP-only Actor
Notices from the 27 EU countries (TED) + French national notices (BOAMP)✅ in one run (whole EU by default)TED onlyBOAMP only
TED ↔ BOAMP duplicates merged✅ (eForms procedure ID, then buyer + title + date)——
Contract awards (DECP, France)✅ optional——
Country filter (EU) + French region / département (NUTS ↔ départements)✅country only✅
CPV by prefix (72 = all IT services)✅often exact codevaries
Monitor mode: only notices not seen in earlier runs✅—varies
Structured French summary (libelle_structure), dates in plain words, days left before the deadline✅ (deterministic, no AI)—varies
Names and contact details of people❌ never returned (GDPR)sometimessometimes

Who uses it

  • Bid teams and SMEs answering public tenders in France or elsewhere in the EU.
  • Tender-monitoring consultants following a sector (CPV codes) for several clients.
  • AI agents that need a clean, deduplicated answer to "which open tenders match X in region Y?".

Input examples

IT tenders across the EU, last 3 days:

{ "cpvCodes": ["72", "48"], "daysBack": 3 }

Germany and Austria, software (keywords match the language of the notice):

{ "tedCountries": ["DEU", "AUT"], "keywords": ["Software", "software"], "daysBack": 7 }

Cleaning tenders in Île-de-France, new notices only:

{ "keywords": ["nettoyage"], "regions": ["Île-de-France"], "daysBack": 7, "onlyNew": true, "stateKey": "nettoyage-idf" }

Large construction works in Hauts-de-France:

{ "cpvCodes": ["45"], "regions": ["Hauts-de-France"], "minAmount": 1000000, "daysBack": 14 }

Recent contract awards (DECP + award notices):

{ "noticeKind": "awards", "keywords": ["nettoyage"], "daysBack": 7 }

Output

One item per notice, after merging. Example (a real notice, abridged):

{
"libelle_structure": "Avis de marché (services) publié le 21 octobre 2026 par Métropole Aix Marseille Provence — dépt 13, Provence-Alpes-Côte d'Azur. Objet : Maintenance logiciel Business Objects… Catégorie CPV 72267100 : Maintenance de logiciels de technologies de l'information. Valeur estimée : 205 750 € HT. Date limite de réponse : 27 novembre 2026 (J-34).",
"kind": "avis_de_marche",
"buyer": { "name": "Métropole Aix Marseille Provence", "country": "FRA" },
"location": { "country": "FRA", "nuts": "FRL04", "department": "13", "region": "Provence-Alpes-Côte d'Azur" },
"cpvMain": "72267100", "amountEUR": 205750, "deadline": "2026-11-27", "daysLeft": 34,
"sources": ["TED", "BOAMP"], "duplicatesMerged": 1,
"sourceRefs": [
{ "source": "TED", "id": "726965-2026", "url": "https://ted.europa.eu/fr/notice/-/detail/726965-2026" },
{ "source": "BOAMP", "id": "26-101792", "url": "https://www.boamp.fr/pages/avis/?q=idweb:26-101792" }
]
}

Each item also carries its licences, the attribution text and the links to the original notices. The run summary (notices read per source, duplicates removed, errors) is saved as RUN_STATS in the run's key-value store.

Monitor mode (only new notices)

Set onlyNew: true and a stateKey (for example it-paca). The Actor then returns only the notices it has not returned before for that key. Pair it with an Apify schedule (for example every morning) to get a feed of new notices. Notifications (e-mail, Slack, webhooks) are set up with the standard Apify integrations; the Actor itself sends nothing.

Use with AI agents (MCP)

Like any public Apify Actor, it can be called by AI agents through Apify's generic MCP server: https://mcp.apify.com?tools=tenderlantern/eu-public-tenders (requires an Apify account or token). Example question for an agent: "Which IT tenders are open in Provence-Alpes-Côte d'Azur this week?" The output is deterministic and deduplicated, with a link to every official notice.

Limits

  • Whole EU: keywords are matched in the language of the notice. A German notice does not contain "logiciel": for the EU, use CPV codes or keywords in several languages. Foreign titles are returned as published, with their language (no machine translation). Region and département filters only apply to France.
  • Volume read per source (maxPerSource): over 7 days, TED publishes about 8,000 open tenders for the EU (7,996 on 24 October 2026). TED and DECP are filtered on the server and the Actor reads the 1,000 most recent by default; to cover the whole period, filter (CPV, country, keywords) or raise maxPerSource. BOAMP is read in full over the requested period by default (up to 20,000 notices), because its CPV filter is applied after reading.
  • France only for BOAMP and DECP: they are queried only when France is in scope (tedCountries containing FRA, EU or ALL, or a region / département filter). A query for DEU alone returns TED notices only.
  • CPV and French national notices: CPV codes published in BOAMP notices (EU and national forms) are read. About 8 % of open BOAMP notices publish no CPV code at all (mostly MAPA, below €90k; 171 of 2,019 on 24 October 2026). With a CPV filter, cpvWithoutCode decides what happens to them: descriptor (default) keeps a notice when one of its BOAMP descriptors matches the CPV prefix (documented table, no CPV code is invented: cpv stays empty and cpvMatchedBy is boampDescriptor), include keeps them all, exclude drops them.
  • Amounts: many notices do not publish an estimated value, and the Actor never estimates one. amountEUR is the value published by the buyer for the procedure, or the sum of the lot values only when every lot publishes one (amountBasis says which). A published range is returned in amountRangeEUR, not in amountEUR.
  • DECP: awards are published a few days after notification. Organisation names come from an embedded SIRENE cache (INSEE); sole traders (natural persons) are always masked.

FAQ

TED API or this Actor? The TED API covers TED only. This Actor adds French national notices (BOAMP) and awards (DECP), merges the duplicates between sources, and returns one flat record per tender with a French structured summary.

Does it cover French tenders below the EU thresholds? Yes, through BOAMP (MAPA and FNS families). Some of them, mostly MAPA, publish no CPV code (see Limits, cpvWithoutCode).

Why are some amounts missing? The buyer did not publish an estimated value. Use excludeUnknownAmount only if you really need it.

How are duplicates detected? First by the eForms procedure identifier shared by TED and BOAMP, then by buyer + normalised title + publication dates within 10 days.

Is it legal? Which licence? Only official open-data APIs are used: TED (free reuse, Decision 2011/833/EU), BOAMP and DECP (Licence Ouverte 2.0), SIRENE (Licence Ouverte 2.0). No website scraping, no personal data. Published rate limits are respected.

Sources & licences

See the full French text below ("Sources et licences"): TED (Supplement to the Official Journal of the EU, free reuse with source attribution, Decision 2011/833/EU; not affiliated with or endorsed by the Publications Office), BOAMP (DILA, Licence Ouverte 2.0), DECP (DAJ, Ministry of the Economy, Licence Ouverte 2.0), organisation names from INSEE SIRENE (Licence Ouverte 2.0), CPV labels (CPV 2008, Regulation (EC) No 213/2008).


🇫🇷 En français

Appels d'offres publics France + UE (27 pays) — TED, BOAMP, DECP en un seul flux

Les avis de marchés publics des 27 pays de l'UE (TED) et de la France (BOAMP), plus les marchés attribués en France (DECP), dans un seul jeu de données. Par défaut, TED couvre toute l'UE. Les données sont sans doublons et filtrables par pays, région, département, CPV, mots-clés et montant, avec un libellé structuré en français (libelle_structure). Seules les sources officielles en données ouvertes sont utilisées : pas de scraping de site, pas de clé API.

Pourquoi cet Actor ?

Un même marché français au-dessus des seuils européens est publié deux fois : sur TED et sur le BOAMP (famille JOUE). Interroger les deux sources séparément vous fait donc payer et trier des doublons. Sur notre banc de 50 requêtes réelles (24 octobre 2026), 24 % des avis bruts retenus étaient des doublons (médiane par requête : 20 %), et 27 % des avis renvoyés regroupent un avis TED et son double BOAMP.

Cet ActorUn Actor TED seulUn Actor BOAMP seul
Avis des 27 pays de l'UE (TED) + avis nationaux français (BOAMP)✅ en une exécution (UE entière par défaut)TED seulementBOAMP seulement
Fusion des doublons TED ↔ BOAMP✅ (identifiant de procédure eForms, puis acheteur + objet + date)——
Marchés attribués (DECP)✅ option——
Filtre pays (UE) + région / département en France (NUTS ↔ départements)✅pays seulement✅
CPV par préfixe (72 = tout l'informatique)✅souvent code exactvariable
Mode veille « nouveaux avis seulement »✅—variable
Libellé structuré en français (libelle_structure), dates en clair, J-n avant la date limite✅ (déterministe, sans IA)—variable
Noms et coordonnées de personnes❌ jamais exposés (RGPD)parfoisparfois

Pour qui ?

  • TPE/PME et indépendants qui répondent aux marchés publics dans leur région.
  • Consultants et cabinets de veille qui suivent un secteur (CPV) pour plusieurs clients.
  • Agents IA (via le MCP Apify ou l'API) qui doivent répondre à « quels appels d'offres en cours pour X en région Y ? » avec une sortie propre et dédoublonnée.

Exemples d'entrée

Veille quotidienne, informatique en PACA, nouveaux avis seulement :

{ "cpvCodes": ["72", "48"], "regions": ["Provence-Alpes-Côte d'Azur"], "daysBack": 3, "onlyNew": true, "stateKey": "it-paca" }

Appels d'offres informatiques dans toute l'UE, en plusieurs langues (réglage par défaut des pays : EU) :

{ "cpvCodes": ["72", "48"], "daysBack": 3 }

Benelux seulement :

{ "tedCountries": ["BEL", "NLD", "LUX"], "keywords": ["software", "logiciel", "software-ontwikkeling"] }

Gros travaux en Hauts-de-France :

{ "cpvCodes": ["45"], "regions": ["Hauts-de-France"], "minAmount": 1000000, "daysBack": 14 }

Marchés attribués récemment (DECP + avis d'attribution) :

{ "noticeKind": "awards", "keywords": ["nettoyage"], "daysBack": 7 }

Ce que contient chaque résultat

{
"libelle_structure": "Avis de marché (services) publié le 21 octobre 2026 par Métropole Aix Marseille Provence — dépt 13, Provence-Alpes-Côte d'Azur. Objet : Maintenance logiciel Business Objects… Catégorie CPV 72267100 : Maintenance de logiciels de technologies de l'information. Valeur estimée : 205 750 € HT. Date limite de réponse : 27 novembre 2026 (J-34).",
"kind": "avis_de_marche",
"title": "Maintenance logiciel Business Objects, prestations de mises à jour et assistance associées…",
"buyer": { "name": "Métropole Aix Marseille Provence", "country": "FRA" },
"location": { "country": "FRA", "nuts": "FRL04", "department": "13", "region": "Provence-Alpes-Côte d'Azur" },
"cpv": [{ "code": "72267100", "label": "Maintenance de logiciels de technologies de l'information" }],
"amountEUR": 205750,
"publishedAt": "2026-10-21", "deadline": "2026-11-27", "daysLeft": 34,
"sources": ["TED", "BOAMP"], "duplicatesMerged": 1,
"sourceRefs": [
{ "source": "TED", "id": "726965-2026", "url": "https://ted.europa.eu/fr/notice/-/detail/726965-2026" },
{ "source": "BOAMP", "id": "26-101792", "url": "https://www.boamp.fr/pages/avis/?q=idweb:26-101792" }
],
"licences": [ "…" ], "attribution": "Données : TED — Journal officiel de l'UE (S) ; BOAMP — DILA. Retraitées (fusion, libellé structuré)…"
}

Paramètres principaux

ParamètreRôle
keywordsAu moins un mot présent dans l'objet ou la description (filtrage strict par défaut, ce qui évite les faux positifs du texte intégral)
cpvCodesPréfixes CPV (72, 4521, 90910000)
cpvWithoutCodeAvis BOAMP sans code CPV quand un filtre CPV est donné : descriptor (défaut), include, exclude
regions / departmentsLieu d'exécution
tedCountriesPays TED quand aucun filtre région/département n'est donné. EU (défaut) = les 27 États membres ; codes ISO 3 (FRA, DEU, NOR…) pour cibler ; ALL ou liste vide = tous les pays publiés sur TED
sourcesTED, BOAMP, DECP
noticeKindtenders (en cours), awards (attributions), all
daysBack / publishedFrom / publishedToPériode de publication
onlyOpenSeulement les consultations dont la date limite n'est pas passée
minAmount / maxAmount / excludeUnknownAmountMontant en € HT (beaucoup d'avis n'en publient pas)
onlyNew + stateKeyVeille : ne renvoie que les avis jamais vus pour cette clé

Limites (à lire)

  • UE entière : les mots-clés sont cherchés dans la langue de l'avis. Un avis allemand ne contient pas « logiciel » : pour l'UE, utilisez des codes CPV ou des mots-clés en plusieurs langues. Les titres étrangers sont renvoyés tels quels, avec leur langue indiquée (pas de traduction automatique). Les filtres région et département ne s'appliquent qu'à la France.
  • Volume lu par source (maxPerSource) : sur 7 jours, TED publie environ 8 000 appels d'offres ouverts pour l'UE (7 996 au 24/10/2026). TED et DECP sont filtrés côté serveur et l'Actor lit par défaut les 1 000 plus récents ; pour couvrir toute la période, filtrez (CPV, pays, mots-clés) ou augmentez maxPerSource. BOAMP est lu en entier sur la période demandée (jusqu'à 20 000 avis), car son filtre CPV s'applique après lecture.
  • BOAMP et DECP = France : ils ne sont interrogés que si la France est dans le périmètre (tedCountries avec FRA, EU ou ALL, ou un filtre région/département). Une requête DEU seule ne renvoie que des avis TED.
  • CPV et BOAMP national : les codes CPV publiés dans les avis BOAMP (formulaires européens et nationaux) sont lus. Environ 8 % des avis BOAMP en cours ne publient aucun code CPV (surtout des MAPA ; 171 sur 2 019 au 24/10/2026). Avec un filtre CPV, cpvWithoutCode décide : descriptor (défaut) garde l'avis si l'un de ses descripteurs BOAMP correspond au préfixe CPV (table documentée, aucun code CPV inventé : cpv reste vide et cpvMatchedBy vaut boampDescriptor), include les garde tous, exclude les écarte.
  • Montants : beaucoup d'avis ne publient pas de valeur estimée, et l'Actor n'en estime jamais. amountEUR est la valeur publiée par l'acheteur pour la procédure, ou la somme des lots seulement si chaque lot publie la sienne (amountBasis l'indique). Une fourchette publiée va dans amountRangeEUR, pas dans amountEUR.
  • Libellé structuré (libelle_structure) : il est assemblé par gabarits fixes à partir des champs officiels, sans IA et sans traduction automatique. Un avis étranger garde son titre d'origine, avec sa langue indiquée.
  • DECP : lu via l'API Explore du jeu decp-2022-marches-valides (data.economie.gouv.fr), filtré côté serveur (dates, CPV, département, mots-clés, montant). Les DECP ne contiennent que des SIRET : les noms d'organisations viennent d'un cache SIRENE embarqué dans l'Actor (base SIRENE de l'INSEE, personnes morales diffusibles uniquement). L'API Recherche d'entreprises ne sert qu'en secours, pour les SIREN absents du cache ; après 3 échecs, l'Actor arrête de l'appeler. Le nom d'un entrepreneur individuel n'est jamais renvoyé. Les DECP sont publiées avec quelques jours de décalage sur la notification.
  • Données personnelles : l'Actor ne renvoie ni nom de contact, ni e-mail, ni téléphone. Pour les titulaires DECP, les entrepreneurs individuels (personnes physiques) sont masqués.

Sources et licences

  • TED, Supplément au Journal officiel de l'UE : réutilisation libre, y compris commerciale, avec mention de la source (Décision 2011/833/UE, mentions légales TED). Ce produit n'est ni affilié ni approuvé par l'Office des publications.
  • BOAMP, DILA : Licence Ouverte 2.0.
  • DECP, données essentielles de la commande publique (DAJ, ministère de l'Économie), jeu decp-2022-marches-valides : Licence Ouverte 2.0.
  • Noms d'organisations : base SIRENE de l'INSEE (Licence Ouverte 2.0), données du 20/10/2026, via l'export public Opendatasoft economicref-france-sirene-v3. Secours : API Recherche d'entreprises (DINUM), Licence Ouverte 2.0.
  • Libellés CPV : vocabulaire CPV 2008, Règlement (CE) n° 213/2008.

Chaque résultat porte ses sources, ses liens d'origine et la mention des modifications (fusion et libellé structuré).

Limites d'usage respectées : l'Actor envoie au plus 4 requêtes par seconde à TED, alors que la limite publiée est de 700 par minute. Il utilise uniquement l'API de recherche, sans téléchargement massif d'avis. Les requêtes vers BOAMP et DECP (Opendatasoft, quotas affichés : 2 000 000 et 50 000 appels par jour) sont espacées de 300 ms, avec reprise exponentielle sur les erreurs 429 et 5xx. L'API Recherche d'entreprises (secours) est appelée au plus 300 fois par exécution, à 200 ms d'intervalle (limite publiée : 7 par seconde).