BOAMP Public Procurement Scraper — French Government Tenders avatar

BOAMP Public Procurement Scraper — French Government Tenders

Pricing

from $1.00 / 1,000 results

Go to Apify Store
BOAMP Public Procurement Scraper — French Government Tenders

BOAMP Public Procurement Scraper — French Government Tenders

Scrape French public procurement notices from BOAMP open data by keyword, department, procedure type and estimated value.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Julien ApiKiy

Julien ApiKiy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

14 hours ago

Last modified

Categories

Share

French & EU Public Procurement Scraper — BOAMP + TED, Veille Marchés Publics 🇫🇷🇪🇺

Search and monitor public procurement notices (marchés publics / appels d'offres) from two official sources in one Actor:

  • BOAMP — the French national tender bulletin (boamp.fr, DILA open data)
  • TED — Tenders Electronic Daily, the EU-wide procurement journal (all 27 member states + EEA)

Filter by CPV code, keyword, department, buyer, country, publication date and deadline. Turn on monitor mode (veille) and the Actor returns only the new tenders on each run — and pushes them straight to Slack or a webhook. Perfect for B2G sales, bid teams, and market intelligence.

Why this Actor

  • 🇫🇷🇪🇺 National + European in one run — combine BOAMP (France) and TED (all EU) with a single sources setting.
  • 🎯 CPV filtering — target exactly your sector (e.g. 72 = IT, 45 = construction, 79 = business services). Full 8-digit codes or category prefixes.
  • 🔔 Monitor mode (veille) — scheduled daily watch that emits only new tenders, so you never pay for or re-read the same notice twice.
  • 📩 Alerts — new tenders delivered to Slack and/or a generic webhook (email services, Make, n8n, your CRM…).
  • 🗓️ Date & deadline filters — exclude tenders that already closed; focus on a publication window.
  • 🏛️ Rich, structured, deduplicated data — buyer, location, country, estimated value, procedure type, CPV codes, source URL.
  • ⚖️ 100% legal — BOAMP and TED are official public open data, no authentication required.

Input

FieldDescription
sourcesWhich sources to search: boamp (France), ted (EU), or both. Default ["boamp"].
keywordsSearch keywords in the tender object (e.g. informatique, bâtiment). Empty = all.
cpvCodesCPV code(s) — full 8-digit (45432113) or prefixes for whole categories (45, 72, 79). A tender matches if any of its CPV codes starts with any value you give.
countriesTED only — restrict to buyer countries by ISO3 code (FRA, DEU, ESP, ITA…). Empty = all EU. Ignored by BOAMP.
departmentBOAMP only — French department code (e.g. 75 = Paris, 54). Empty = all France.
buyerBuying organization name (e.g. Angers, CHU, Ministère). Partial, accent-insensitive.
procedureTypeall, ouvert, restreint, negocie, dialogue_competitif, partenariat_innovation.
publishedFrom / publishedToPublication date window, YYYY-MM-DD.
deadlineFrom / deadlineToResponse-deadline window, YYYY-MM-DD. Use deadlineFrom = today to skip closed tenders.
minEstimatedValueMinimum estimated value in EUR.
maxResultsMax matching tenders to return (1–10,000).
monitorModeWhen ON, remembers tenders from previous runs and returns only the new ones.
monitorNameLabel for the watch (e.g. IT-Paris). Each name keeps its own separate memory, so you can run several independent watches.
slackWebhookUrlOptional. In monitor mode, posts a summary of new tenders to this Slack Incoming Webhook.
webhookUrlOptional. In monitor mode, POSTs {monitorName, count, tenders[]} to this URL.

Typical setups

One-off sourcing — all IT tenders in Paris, still open:

{ "cpvCodes": ["72"], "department": "75", "deadlineFrom": "2026-07-08", "maxResults": 200 }

Pan-EU sourcing — IT tenders across France + Germany + Spain (TED):

{ "sources": ["ted"], "cpvCodes": ["72"], "countries": ["FRA", "DEU", "ESP"], "maxResults": 200 }

Daily veille with Slack alerts, national + EU (schedule this on Apify to run every morning):

{
"sources": ["boamp", "ted"],
"cpvCodes": ["45", "71"],
"monitorMode": true,
"monitorName": "BTP-national-EU",
"slackWebhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ",
"maxResults": 500
}

The first run seeds the memory; every run after that returns and alerts only newly published tenders.

Output

{
"id": "25-88236",
"title": "Mission d'audits internes et assistance technique...",
"description": "Les prestations du marché concernent...",
"organization": "SID - Expertise et production nationale",
"organizationCity": "Versailles",
"organizationDepartment": "78",
"publicationDate": "2026-06-01T00:00:00.000Z",
"deadline": "2026-07-01T12:00:00.000Z",
"estimatedValue": 237500,
"currency": "EUR",
"procedureType": "Procédure Ouverte",
"cpvCodes": ["71314200"],
"cpvLabels": [],
"url": "https://www.boamp.fr/pages/avis/?q=idweb:25-88236",
"scrapedAt": "2026-07-08T12:00:00.000Z"
}

Every item carries a source ("boamp" or "ted") and a country (ISO3).

Notes:

  • estimatedValue/cpvCodes come from the notice itself for tenders published under the EU eForms format (2024+). Older BOAMP notices fall back to BOAMP's own descriptor codes for cpvCodes/cpvLabels, and estimatedValue is null when the source doesn't disclose it.
  • CPV prefix filtering is applied to the extracted codes, so it works across BOAMP and TED.
  • TED specifics: deadline, description, organizationCity and procedureType are not exposed by the TED search API and come back null; use the url to open the full notice. TED CPV-prefix filtering scans the newest notices within your maxResults window, so raise maxResults for very narrow sectors.

Pricing

Pay-per-use, no monthly fees. In monitor mode you're only charged for new tenders, keeping a daily watch cheap.

Data source: BOAMP / DILA public open data — free, official, no authentication.