EU & France Public Tenders Scraper — TED + BOAMP, Deduped
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Features
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)
- Copy one of the input examples below into the Input tab (or into the API call).
- Click Start. With the default settings, a run returns 200 notices (local test, 24 October 2026: about 10 seconds; cloud runs can be slower).
- 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 Actor | A TED-only Actor | A BOAMP-only Actor | |
|---|---|---|---|
| Notices from the 27 EU countries (TED) + French national notices (BOAMP) | ✅ in one run (whole EU by default) | TED only | BOAMP 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 code | varies |
| 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) | sometimes | sometimes |
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 raisemaxPerSource. 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 (
tedCountriescontainingFRA,EUorALL, or a region / département filter). A query forDEUalone 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,
cpvWithoutCodedecides 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:cpvstays empty andcpvMatchedByisboampDescriptor),includekeeps them all,excludedrops them. - Amounts: many notices do not publish an estimated value, and the Actor never estimates one.
amountEURis the value published by the buyer for the procedure, or the sum of the lot values only when every lot publishes one (amountBasissays which). A published range is returned inamountRangeEUR, not inamountEUR. - 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 Actor | Un Actor TED seul | Un 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 seulement | BOAMP 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 exact | variable |
| 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) | parfois | parfois |
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ètre | Rôle |
|---|---|
keywords | Au 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) |
cpvCodes | Préfixes CPV (72, 4521, 90910000) |
cpvWithoutCode | Avis BOAMP sans code CPV quand un filtre CPV est donné : descriptor (défaut), include, exclude |
regions / departments | Lieu d'exécution |
tedCountries | Pays 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 |
sources | TED, BOAMP, DECP |
noticeKind | tenders (en cours), awards (attributions), all |
daysBack / publishedFrom / publishedTo | Période de publication |
onlyOpen | Seulement les consultations dont la date limite n'est pas passée |
minAmount / maxAmount / excludeUnknownAmount | Montant en € HT (beaucoup d'avis n'en publient pas) |
onlyNew + stateKey | Veille : 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 augmentezmaxPerSource. 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 (
tedCountriesavecFRA,EUouALL, ou un filtre région/département). Une requêteDEUseule 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,
cpvWithoutCodedé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é :cpvreste vide etcpvMatchedByvautboampDescriptor),includeles garde tous,excludeles écarte. - Montants : beaucoup d'avis ne publient pas de valeur estimée, et l'Actor n'en estime jamais.
amountEURest la valeur publiée par l'acheteur pour la procédure, ou la somme des lots seulement si chaque lot publie la sienne (amountBasisl'indique). Une fourchette publiée va dansamountRangeEUR, pas dansamountEUR. - 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).