French Public Procurement Notices, Latest or Filtered (BOAMP)
boampfr/search-notices
French public procurement notices from the BOAMP (Bulletin officiel des annonces des marchés publics), newest first: buyer, subject, publication date, response deadline, notice nature and family, contract type (works, services, supplies), department codes and a link to the notice on boamp.fr. Optionally narrow by department code, publication period (a year, a month or a day), notice nature or notice family, each from a fixed list or pattern; there is no free-text or buyer-name search. Returns the total number of matching notices (nhits) and up to 100 per call (offset plus limit at most 10000); there is no bulk export. Department codes have no leading zero, Corsica is 20A or 20B, and code_departement comes back as a comma-separated string. Notices are returned as published: text is in French and names buyers and awardees, sometimes sole traders or contact persons, and is passed through unaltered. Source: DILA, BOAMP, https://boamp-datadila.opendatasoft.com (dataset boamp), Etalab Open Licence 2.0, dated by each notice's dateparution. Served by Eden Engine; not an official DILA or BOAMP product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.
Data source
Source: DILA (Direction de l'information légale et administrative), Bulletin officiel des annonces des marchés publics (BOAMP), https://boamp-datadila.opendatasoft.com, dataset boamp, published under the Etalab Open Licence 2.0; each notice carries its publication date in dateparution (the date of the data). Notices name buyers and awardees; personal data in them remains subject to the GDPR. Served by Eden Engine; not an official DILA or BOAMP product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "boampfr/search-notices" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "boampfr/search-notices" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "boampfr/search-notices", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "boampfr/search-notices", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 20, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"limit"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many notices to return, newest first (1 to 100)."
},
"nature": {
"enum": [
"Avis de marché",
"Résultat de marché",
"Rectificatif",
"Avis d'intention de conclure",
"Avis informatif",
"Modification",
"Avis d'annulation",
"Avis en cas de transparence ex ante volontaire",
"Périodique",
"Autre",
"Qualification"
],
"type": "string",
"description": "Optional notice nature, exactly as the dataset spells it."
},
"offset": {
"type": "integer",
"maximum": 9900,
"minimum": 0,
"description": "Optional number of notices to skip, up to 9900; the provider refuses deeper paging."
},
"famille": {
"enum": [
"Marchés européens",
"Marchés entre 90 k€ et seuils européens",
"Marchés <90 k€ (MAPA)",
"Délégation de service public",
"Divers"
],
"type": "string",
"description": "Optional notice family, exactly as the dataset spells it."
},
"published": {
"type": "string",
"pattern": "^[0-9]{4}(-(0[1-9]|1[0-2])(-(0[1-9]|[12][0-9]|3[01]))?)?$",
"description": "Optional publication period: a year (2026), a month (2026-10) or a day (2026-10-19). One period, not a range."
},
"departement": {
"type": "string",
"pattern": "^([1-9][0-9]?|20[AB]|97[1-8]|98[6-8]|99)$",
"description": "Optional department code as the dataset spells it: 1 to 95 with no leading zero (75, 13, 9), Corsica as 20A or 20B, overseas 971 to 978 and 986 to 988, or 99. A notice listing several departments matches any of them."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"nhits",
"records"
],
"properties": {
"nhits": {
"type": "integer",
"description": "Number of notices matching the filters."
},
"records": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fields": {
"type": "object",
"properties": {
"idweb": {
"type": "string",
"description": "Notice id, for example 26-101324."
},
"objet": {
"type": "string",
"description": "Subject of the notice, in French."
},
"url_avis": {
"type": "string",
"description": "Link to the notice on boamp.fr."
},
"nomacheteur": {
"type": "string",
"description": "Name of the buying organisation."
},
"type_marche": {
"type": "string",
"description": "Contract type, for example TRAVAUX or SERVICES."
},
"dateparution": {
"type": "string",
"description": "Publication date (YYYY-MM-DD)."
},
"nature_libelle": {
"type": "string",
"description": "Notice nature, for example Avis de marché or Rectificatif."
},
"famille_libelle": {
"type": "string",
"description": "Notice family, in French."
},
"code_departement": {
"type": "string",
"description": "French department codes of the buyer, comma-separated."
},
"datelimitereponse": {
"type": "string",
"description": "Response deadline, absent when the notice has none."
}
},
"description": "The notice. A field the notice does not have is absent (for example datelimitereponse on a rectificatif).",
"additionalProperties": true
},
"recordid": {
"type": "string",
"description": "The provider's record hash."
}
},
"additionalProperties": true
},
"description": "The notices, newest publication date first."
}
},
"description": "The matching notices and their total count.",
"additionalProperties": true
}