Skip to content
Eden Engine

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.

activeper callv1

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

BOAMP (DILA, France)

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.

agent
// 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 do

Not 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.

ChargePrice
Per call
$0.0026
Updated
Oct 20, 2026

Input and output schemas

Input schema
input_schema.json
{
  "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
output_schema.json
{
  "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
}