France Public Tender Alerts - BOAMP API (Marchés Publics)
Pricing
from $1.20 / 1,000 tender notices
France Public Tender Alerts - BOAMP API (Marchés Publics)
$1.50 per 1,000 notices. Daily French public tender alerts (appels d'offres, marchés publics) from BOAMP's official open data (Licence Ouverte 2.0). Filter by keyword, CPV, department or region, contract type, value and deadline; only new notices are returned.
Pricing
from $1.20 / 1,000 tender notices
Rating
0.0
(0)
Developer
Fast Agent
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Price: $1.50 per 1,000 tender notices ($1.35 on Apify Scale, $1.20 on Business and above) · no API key, login or proxy · official BOAMP open data (Licence Ouverte 2.0)
En français
Alertes quotidiennes sur les marchés publics publiés au BOAMP. L'Actor interroge les données ouvertes officielles du BOAMP (DILA) et fournit les avis de marché en JSON, CSV ou Excel.
Les données sont sous Licence Ouverte 2.0 ; chaque enregistrement mentionne la source et la date de mise à jour, comme l'exige la licence.
Filtrez par mot-clé, code CPV, département ou région, type de marché (services, fournitures, travaux), procédure européenne ou nationale, montant et date limite. Avec Only new since last run, une exécution quotidienne ne renvoie que les nouveaux avis.
Exemple : "keywords": ["nettoyage"], "departments": ["69"] renvoie les appels d'offres de nettoyage dans le Rhône.
Prix : 1,50 $ pour 1 000 avis, plus 0,00005 $ par exécution.
Avec un assistant IA : fonctionne aussi dans ChatGPT, Claude et Cursor via le serveur MCP d'Apify – voir Use it from ChatGPT, Claude or Cursor ci-dessous.
Get daily French public tender alerts (appels d'offres, marchés publics, avis de marché) from BOAMP, the Bulletin officiel des annonces des marchés publics published by the DILA, as clean JSON, CSV or Excel. You can filter by keyword, CPV code, department or region, contract type (services, fournitures, travaux), EU or national procedure, value, buyer and deadline. In "only new since last run" mode, a scheduled run works as a tender alert service: you only get notices you haven't seen.
Bid teams, SMEs, consultancies and international suppliers can follow French public sector opportunities without checking BOAMP by hand, and send them to email, Slack, Google Sheets or a CRM.
What does France Public Tender Alerts do?
- Reads the official BOAMP dataset through DILA's public Opendatasoft API (boamp-datadila.opendatasoft.com), open data under the Licence Ouverte / Open Licence 2.0. It needs no API key, login or proxy.
- Returns contract notices (avis de marché) by default, plus award notices (résultats de marché, with winners and award details where published), corrections (rectificatifs), modifications, prior information and voluntary ex-ante notices if you want them.
- Covers EU-wide procedures (JOUE) and national ones: contracts between €90k and the EU thresholds (FNS), MAPA under €90k and concessions (DSP).
- Filters by keywords (any or all, case- and accent-insensitive), excluded words, CPV prefixes, departments (
75,69,2A,971) or regions (Île-de-France, Bretagne, Occitanie...), contract type, EU or national scope, minimum estimated value, buyer name and open deadlines. Most filters run on BOAMP's side, so runs are fast. - Extracts CPV codes, estimated value, description and deadline from the notice body (eForms or BOAMP's national format), plus BOAMP's own descriptors.
- Merges re-published notices of the same procedure and stage, so you don't pay twice, and links corrections and awards to the original notice.
- "Only new since last run" mode remembers what each alert has already delivered. It's off by default, so one-off searches always return results; the example alert tasks switch it on.
- Saves an optional summary digest with counts by type, contract type and department, top buyers, the largest notices and those closing soonest.
Why use it?
- All of France in one feed: state, regions, departments, communes, hospitals and public companies, EU-wide and national.
- English field names and normalised codes (
tender,works,supplies) next to the French originals, so non-French teams can filter easily. - Cheap and fast: official open data with no browser, so a daily run takes seconds.
Use it from ChatGPT, Claude or Cursor
Ask your AI assistant about French public tenders (appels d'offres) and get live answers from BOAMP open data, translated into English if you like.
This Actor works as a tool in any AI assistant that supports the Model Context Protocol (MCP), through the official Apify MCP server. You ask in plain language; the assistant fills in the filters, runs the Actor and answers from the results.
MCP server URL (this Actor only):
https://mcp.apify.com?tools=orange_briefcase_hrj/france-boamp-tender-alerts
Set it up once (you need a free Apify account):
- Claude (claude.ai and Claude Desktop): open Settings → Connectors → Add → Add custom connector. Enter a name (for example
French tenders), paste the URL above as the Remote MCP server URL, select Continue, keep the detected settings and select Add. Sign in to Apify when your browser opens. On Team and Enterprise plans, an Owner adds the connector for the organisation. - ChatGPT: custom connectors need ChatGPT Developer mode (beta). Go to Settings → Apps & Connectors → Create, paste the URL above as the MCP Server URL, choose OAuth authentication and select Create, then sign in to Apify. In a new chat, select + → More and pick the connector.
- Cursor: add this to
~/.cursor/mcp.json(or.cursor/mcp.jsonin a project). Cursor opens your browser to sign in to Apify:
{"mcpServers": {"france-boamp-tender-alerts": {"url": "https://mcp.apify.com?tools=orange_briefcase_hrj/france-boamp-tender-alerts"}}}
- VS Code, Windsurf and other MCP clients: add the same URL as a remote (Streamable HTTP) MCP server. If a client can't do OAuth, send the header
Authorization: Bearer <YOUR_APIFY_TOKEN>instead (token from Apify Console → Settings → API & Integrations).
Already connected to the full Apify server (https://mcp.apify.com) or the Apify plugin for Cursor, Claude Code or VS Code? Just mention orange_briefcase_hrj/france-boamp-tender-alerts in your request.
Try asking:
"Find open French public tenders for software or IT services in Île-de-France published in the last 2 days, with buyer, deadline and BOAMP link."
"List new BOAMP tenders for building works in the Rhône department (69) with an estimated value over €200,000."
"Which French tenders for school or hospital catering (restauration collective) were published this week? Translate the titles into English."
Cost: a run started by your assistant is a normal run of this Actor, billed to your Apify account at the usual pay-per-event price ($1.50 per 1,000 notices, see the pricing section below). This Actor charges nothing extra for runs that come through an assistant. Asking for a small number of results (for example "the top 20") keeps runs cheap, and the Apify Free plan's monthly credit covers plenty of tests.
Screenshots
Real output from the saved example tasks (test runs on 26 October 2026):


Ready-made example tasks
- French IT tenders (appels d'offres informatique), daily alert: keywords
informatique,logiciel,numérique, open contract notices, only new. - Construction tenders in Île-de-France (travaux): region
Île-de-France, contract type works, only new. - French public contract awards (résultats de marché): award notices from the last 7 days with winners, for market intelligence.
How to use it
- Enter keywords (French terms find the most:
informatique,nettoyage,maîtrise d'œuvre,voirie) and/or CPV codes (for example72000000for IT services). - Optionally pick departments or regions, contract types, EU or national procedures and the notice types you want (contract notices by default).
- Switch on Only new since last run and add a daily schedule in Apify Console.
- Connect the output to email, Slack, Google Sheets, Zapier or Make, or download it as CSV, Excel or JSON.
Input example
{"keywords": ["informatique", "logiciel"],"regions": ["Île-de-France"],"departments": ["69"],"contractTypes": ["services"],"noticeTypes": ["tender"],"lookbackDays": 2,"onlyNew": true}
Output example
{"idweb": "26-103833","noticeType": "tender","noticeTypeFr": "Avis de marché","title": "Acces Internet, Telephonie Ip & Maintenance Reseau De La Pepiniere D'Entreprises Creativa","buyerName": "Grand Avignon","departments": ["84"],"contractType": "services","procedure": "OUVERT","procedureFr": "Procédure Ouverte","family": "FNS","familyFr": "Marchés entre 90 k€ et seuils européens","european": false,"publishedAt": "2026-10-26","deadline": "2026-11-23T23:00:00Z","mainCpvCode": "64215000","cpvCodes": ["64215000"],"descriptors": ["Abonnement","Maintenance","Prestations de services","Télécommunications"],"noticeUrl": "https://www.boamp.fr/pages/avis/?q=idweb:26-103833","matchedKeywords": ["informatique","numérique"],"dataLicence": "Source: BOAMP, Direction de l'information légale et administrative (DILA), boamp.fr; open data under the Licence Ouverte / Open Licence 2.0 (etalab). Retrieved 2026-10-26; data last updated 2026-10-26."}
The dataset has an overview table view (title, buyer, departments, type, contract type, published, deadline, estimated value, main CPV, link). The SUMMARY record in the run's key-value store holds the digest.
Output fields
| Field | Description |
|---|---|
idweb, procedureId, noticeUrl | BOAMP notice id, eForms procedure id (when present) and link to boamp.fr |
noticeType, noticeTypeFr, procedure, procedureFr, family, european | Normalised notice type and procedure with the French originals; BOAMP family (JOUE, FNS, MAPA, DSP) |
title, description, descriptors | What is being bought, with BOAMP's descriptors |
buyerName, buyerSiret, departments | Buyer and department codes |
contractType, estimatedValue, currency, deadline, publishedAt | Contract type, value where published, response deadline (UTC) and publication date |
mainCpvCode, cpvCodes | CPV classification where the notice has one |
winners, awardDetails, linkedNoticeIds | Winners and award details (award notices), and the notice a correction or award refers to |
mergedNoticeIds, matchedKeywords, firstSeenAt, dataLicence | De-duplication, alert metadata and attribution |
Tips
- Keywords vs CPV: many national notices (especially MAPA) have no CPV code, so French keywords usually find more than CPV filters.
- Regions are expanded to their departments; a notice matches if any of its departments does. Corsica accepts
2A/2B. - Award details: national award notices often give lots, winners and amounts as text in
awardDetails; EU award notices list winners inwinnerswhere BOAMP provides them. - Several alerts: give each one its own Alert name (state key), or use different filters. Each filter set keeps its own memory.
How much does it cost?
This Actor uses pay-per-event pricing. You pay only for what it delivers, and Apify platform costs are included.
| Apify plan (Store discount tier) | Price per notice | Per 1,000 |
|---|---|---|
| Free, Starter (Bronze) | $0.0015 | $1.50 |
| Scale (Silver) | $0.00135 | $1.35 |
| Business (Gold) and above | $0.0012 | $1.20 |
Each run also has an Actor start charge of $0.00005, and a run summary charge of $0.002 when Save a summary is on (the default). With Only new since last run switched on (as in the example alert tasks) you never pay twice for the same notice.
Worked examples (Free/Starter prices):
- Daily IT alert, about 15 new notices a day: 30 runs × ($0.00005 + $0.002) + 450 notices × $0.0015 = about $0.74 a month.
- Île-de-France works tenders, about 10 a day, daily: 30 × $0.00205 + 300 × $0.0015 = about $0.51 a month.
- One-off 90-day export of 3,000 notices: $0.00205 + 3,000 × $0.0015 = about $4.50.
The Apify Free plan includes $5 of platform usage every month (see apify.com/pricing), and pay-per-event charges are paid from that credit. That covers the daily IT alert above about six times over. Use Max notices per run and Apify's maximum cost per run to cap spend.
Use via API (Python, JavaScript, cURL)
You can start the Actor from your own code with the official Apify API clients. Get your API token from Apify Console → Settings → API & Integrations.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("orange_briefcase_hrj/france-boamp-tender-alerts").call(run_input={"keywords": ["informatique"],"noticeTypes": ["tender"],"lookbackDays": 2,"onlyNew": False,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Install with pip install apify-client.
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('orange_briefcase_hrj/france-boamp-tender-alerts').call({keywords: ['informatique'],noticeTypes: ['tender'],lookbackDays: 2,onlyNew: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Install with npm install apify-client.
cURL
This runs the Actor and returns the dataset items in the same request (best for short runs):
curl -X POST "https://api.apify.com/v2/acts/orange_briefcase_hrj~france-boamp-tender-alerts/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["informatique"], "noticeTypes": ["tender"], "lookbackDays": 2, "onlyNew": false}'
For longer runs, call POST /v2/acts/orange_briefcase_hrj~france-boamp-tender-alerts/runs and read the dataset when the run finishes. You can also add the Actor to Zapier, Make, n8n or a webhook from the Integrations tab.
Data source, licence and attribution
- Source: BOAMP (Bulletin officiel des annonces des marchés publics), published by the Direction de l'information légale et administrative (DILA), via its public dataset on boamp-datadila.opendatasoft.com (also listed on data.gouv.fr).
- Licence: Licence Ouverte / Open Licence 2.0, which allows commercial reuse provided the source and the date of last update are credited. Every record carries a
dataLicenceattribution that does this; please keep it when you republish. - Not affiliated with DILA, BOAMP or the French government. Always check the official notice and the buyer's tender documents before you bid.
- Data protection: buyer contact details are only included if you switch on Include buyer contact details. They can be personal data; use them only to take part in the procurement, in line with the GDPR.
Related tools
Other tools from the same publisher, all built on official open-data APIs:
| Tool | What it does |
|---|---|
| UK Public Tender Alerts | Daily alerts for new UK government tenders and contract awards from Find a Tender and Contracts Finder. |
| Netherlands Public Tender Alerts (TenderNed) | Daily alerts for new Dutch government tenders from TenderNed, filtered by keyword, CPV and province. |
| Ukraine Prozorro Tender Alerts | New Ukrainian public tenders from the official Prozorro API, filtered by keyword, CPV, oblast and value. |
| Germany Public Tender Alerts (oeffentlichevergabe.de) | Daily alerts for new German public tenders (Ausschreibungen) from the official Bekanntmachungsservice open data, filtered by keyword, CPV and federal state. |
| UK Company Check & Change Monitor | Bulk Companies House checks with a RED/AMBER/GREEN risk flag, plus a monitor mode that outputs only changes. |
| German Case Law Search & Ruling Alerts | Search BGH, BVerfG, BAG, BFH and other German federal court decisions, with full text and new-ruling alerts. |
| Austria Case Law Search & Ruling Alerts (RIS) | Search OGH, VfGH, VwGH, BVwG and other Austrian court decisions from the official RIS API, with full text and new-ruling alerts. |
| Sweden Job Ads API (Platsbanken) | Swedish job ads from Arbetsförmedlingen's official JobTech API, with English labels and daily alerts. |
| Czech Job Ads API (Úřad práce ČR) | Czech job vacancies from the official MPSV / Úřad práce ČR open data, filtered by keyword, region, CZ-ISCO, salary and foreign-worker eligibility, with English labels and daily alerts. |
Tip: for EU-wide tenders in neighbouring markets, combine this with Germany, Netherlands and UK tender alerts using the same CPV codes.
FAQ
Is this legal? Yes. BOAMP data is official open data under the Licence Ouverte 2.0, published by DILA through a public API. The Actor only uses that API and credits the source.
Do I need an API key or a BOAMP account? No.
How fresh is the data? BOAMP publishes notices every working day, and the open dataset usually includes them the same day. A daily schedule catches them all.
Does it include MAPA (below €90k) notices? Yes, the ones published in BOAMP. Many small MAPA contracts are only advertised on buyers' own profiles and never reach BOAMP.
Can I get notices in bulk? Yes. Leave the filters empty, set Look back up to 90 days and Max notices per run up to 20,000 (up to 10,000 notices per filter set and window).
Why is a field empty? Many notices don't publish values or CPV codes. The Actor never invents data.
Where can I see what changed? See the Changelog tab. Each release is listed there.