BOAMP · French Public Tenders by Keyword or Dept avatar

BOAMP · French Public Tenders by Keyword or Dept

Pricing

from $3.49 / 1,000 tender notice retrieveds

Go to Apify Store
BOAMP · French Public Tenders by Keyword or Dept

BOAMP · French Public Tenders by Keyword or Dept

Export official French public tenders and awards from BOAMP — buyer, CPV, amounts, contacts when published. Daily presets or paste a URL. One row per notice. Public gazette. No API key.

Pricing

from $3.49 / 1,000 tender notice retrieveds

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

BOAMP · French Public Tenders

Export official French public procurement notices from the BOAMP gazette — calls for tenders and awards, with buyer, deadline, CPV, amounts, and contacts when published.

Pick a daily preset, add keywords or a department, get one row per notice. JSON, CSV, or Excel from Apify Console.

No login. No API key. No account on boamp.fr.

Built for B2G suppliers, bid desks, and market intel — see Who is this for? below.


Who is this for?

You are…Typical goalSuggested setup
B2G supplier / SMEMorning list of new calls for tenders in your tradeDaily open tenders · add Keywords
Bid / tender deskNationwide watch, then filter by departmentOpen tenders — last 7 days · Departments 75
Agency / outsourcerRecurring pipeline for several clientsKeyword watch · schedule daily · maxResults: 0
Market intelWho won what, and for how muchRecent awards
Data / opsMaster table of gazette noticesDaily preset · raise or clear the row cap

What you get by default: notice type, dates, buyer name, subject, procedure, contract kind, department, CPV when present, and a direct BOAMP link.

Contacts and money: email, phone, SIRET/SIREN, e-procurement URL, estimated value and award value when the gazette embeds them. Coverage is incomplete — many notices have no mailbox or no amount.

On a mixed sample of 50 notices (16–23 Aug 2026): ~78% email/phone, ~52% SIRET, ~62% website, ~78% CPV. Award winner names appear on attribution notices only.


Quick start

Console (2 clicks)

  1. Leave What do you need? on Daily open tenders.
  2. Click Start — export from the Dataset tab.

Store Try caps at 10 notices. If yesterday is empty (weekend / holiday), the Actor retries the last 7 days. Set maxResults to 0 for an uncapped daily job.

Optional: add Keywords (restauration, voirie) or a department (75).

Already searched on boamp.fr?

  1. Copy the URL from your browser (results page or a single notice).
  2. Paste into BOAMP search URL.
  3. Click Start — keywords, notice type, dates, and department are extracted automatically.

Ready-made examples (published tasks)

ExampleBest for
Daily French open tendersMorning bid desk
Recent BOAMP award noticesWinner / B2G intel
Open tenders in Paris (75)Île-de-France pipeline
School catering tenders (restauration)Keyword vertical

What does this Actor do?

BOAMP is France’s official bulletin of public procurement. This Actor lists calls for tenders, award notices, and corrections published there, then flattens each notice into one export row.

PresetWhat it does
Daily open tendersYesterday→today · calls for tenders only
Recent awardsYesterday→today · award / result notices
Open tenders — last 7 daysWider bid window · calls for tenders
Keyword watchLast 7 days · meant to be used with keywords

What data does it extract?

CategoryFields
NoticeID, type (EN + FR label), procedure, family (national / EU), status, sub-type
DatesPublication, response deadline, diffusion end, planned contract start/end
ObjectFull subject, short subject (~300 chars), descriptors, CPV, lot count
MoneyEstimated value + currency; award value + currency when published
BuyerName, SIRET, SIREN, email, phone, website, street, city, postal code, contact title
E-procurementBuyer profile URL (marche-publics portals) when published
AwardUnique winner names, winner count, winner SIRET when distinct, related notice ID
GeoBuyer department codes; place-of-performance departments when filled
LinkOfficial BOAMP notice URL

Raw nested gazette XML/JSON is not dumped into the dataset (it is huge). Useful values are harvested into the columns above.


How it works

  1. Apply the preset (notice type + date window).
  2. Optionally narrow by keywords and/or department codes.
  3. List matching notices from the public gazette.
  4. Flatten each notice into one row and write it immediately (you see the Dataset fill as the run goes).
  5. If a daily window is empty, retry the last 7 days.

How much does it cost to scrape BOAMP?

HTTP-only gazette feed. Pay per notice row, plus a one-time actor-start charge.

ScenarioRows billedFREEBronzeSilverGold
10 notices (Try)10~$0.05~$0.04~$0.04~$0.03
25 notices25~$0.12~$0.11~$0.10~$0.09
500 notices (busy day)500~$2.50~$2.25~$2.00~$1.75
5,000 notices5,000~$25.00~$22.45~$19.95~$17.45

Includes actor-start (~$0.00005). Row prices fall on higher Apify plans. About $5 / 1,000 notices on Free.

Residential proxy is not required.


This Actor only reads notices the DILA publishes as open data (Licence Ouverte 2.0). Rows may include buyer contact details. Ensure your use complies with GDPR and French public-procurement outreach rules.


Input

FieldConsoleDescription
runPresetYesDaily open tenders · Recent awards · Last 7 days · Keyword watch
keywordsYesOptional OR terms — one per line
departmentsYesOptional department codes (75, 69…)
searchUrlYesPaste a boamp.fr search or notice URL
maxResultsYesRow cap; 0 = no numerical cap (date window and gazette size still apply)
dateFrom / dateToAPIOverride the preset window (YYYY-MM-DD)
naturesAPIAPPEL_OFFRE, ATTRIBUTION, RECTIFICATIF
verboseLogsAPITechnical debug lines
proxyConfigurationAPIDefault { useApifyProxy: true } on cloud

Example — daily open tenders, restauration, 25 rows

{
"runPreset": "daily_open_tenders",
"keywords": ["restauration"],
"maxResults": 25
}

Example — awards nationwide, no row cap (API)

{
"runPreset": "recent_awards",
"maxResults": 0
}

Output example

{
"notice_id": "26-82217",
"publication_date": "2026-08-23",
"response_deadline": "2026-09-29",
"notice_type": "Call for tenders",
"notice_type_fr": "Avis de marché",
"procedure": "Procédure Ouverte",
"contract_kind": "Fournitures",
"subject": "Fourniture de Dispositifs Médicaux Stériles",
"cpv_codes": "33140000",
"estimated_value": "280000",
"estimated_value_currency": "EUR",
"buyer_name": "Centre Hospitalier Universitaire de Besançon",
"buyer_siret": "26250176000264",
"buyer_siren": "262501760",
"buyer_email": "camsp-marches@chu-besancon.fr",
"buyer_city": "Besançon",
"department_code": "25",
"url": "https://www.boamp.fr/pages/avis/?q=idweb:26-82217"
}

Dataset views: Overview (bid desk), Buyer contacts, Awards.


FAQ

Why is email empty? The gazette only stores a mailbox when the buyer published one. That is expected — not a scrape miss.

Why is estimated_value empty? Older notices and some eForms variants omit amounts. Award value is mainly on Recent awards.

Can I get every notice in France? Yes — leave keywords and departments blank, set maxResults to 0, and use a date window. Very large windows still stop at the gazette listing ceiling (~10,000 rows per query).

Do I need a BOAMP account? No.


Local development

npm install
npm test
apify run --input-file=./input.json

storage/key_value_stores/default/INPUT.json must satisfy the input schema, or pass --input-file. On local runs, repo input.json is merged first; CLI / KV input overwrites the same keys.


Also available

BODACC · French Legal Announcements — company creations, insolvency, business sales.
JOAFE · French Association Notices — association creations and dissolutions.
French Companies · Search & SIREN Enrich — directors and VAT from a buyer SIREN.


Support

Custom BOAMP watches, CPV packs, or CRM push: corentin@outreacher.fr