# French Public Buyer Profile

Builds a compact DECP profile for a French public buyer by name or SIRET.

## Endpoint

- Method: `POST`
- URL: `https://api.helpmyagent.com/v1/procurement/fr/buyer-profile`
- Price: `0.020 USD` / call

## Machine discovery

- llms.txt: https://helpmyagent.com/llms.txt
- OpenAPI 3.1: https://api.helpmyagent.com/openapi.json
- capabilities.json: https://helpmyagent.com/capabilities.json
- MCP: https://helpmyagent.com/mcp
- RFC 9727: https://helpmyagent.com/.well-known/api-catalog
- pricing.json: https://helpmyagent.com/pricing.json
- x402: https://helpmyagent.com/.well-known/x402
- x402-service.json: https://helpmyagent.com/.well-known/x402-service.json
- Health status: https://helpmyagent.com/health

## x402 payment methods

- USDC on `eip155:8453`
- RLUSD on `xrpl:0`

## Coverage

FR

## Use when

- Profile a French public buyer from its published contract records.
- You need a compact historical procurement profile for a French public buyer identified by name or SIRET.
- You want published award volume, recent activity, top CPV segments and frequent suppliers from DECP data.

## Avoid when

- You need currently open tenders from that buyer; use procurement/fr/search.
- You need one supplier’s awarded-contract history; use company/fr/public-contracts.

## Limitations

- The profile is derived from the sampled/public DECP award records matched to the buyer query.
- Published contract records do not represent every purchasing activity or off-contract expenditure of the buyer.

## Example queries

- Profile a French public buyer from its published contract records.

## Freshness

```json
{
    "mode": "source_dependent"
}
```

## Sources

- [Données essentielles de la commande publique](https://www.data.economie.gouv.fr)

## Input schema

```json
{
    "type": "object",
    "properties": {
        "buyer": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200,
            "description": "French public-buyer name or SIRET used to build the procurement profile. (minimum length 2; maximum length 200)."
        },
        "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 100,
            "description": "Maximum number of records returned by this call. (minimum 1; maximum 100; default 100)."
        }
    },
    "additionalProperties": false,
    "required": [
        "buyer"
    ],
    "description": "Structured input parameters for the procurement/fr/buyer-profile API."
}
```

## Output schema

```json
{
    "type": "object",
    "properties": {
        "query": {
            "type": "string",
            "description": "Structured value returned for “query” as defined by this API contract."
        },
        "source_status": {
            "type": "string",
            "enum": [
                "ok",
                "unavailable"
            ],
            "description": "Availability status of the relevant upstream public source. (allowed values: ok, unavailable)."
        },
        "buyer_siret": {
            "type": [
                "string",
                "null"
            ],
            "description": "Structured value returned for “buyer siret” as defined by this API contract."
        },
        "buyer_name": {
            "type": [
                "string",
                "null"
            ],
            "description": "Structured value returned for “buyer name” as defined by this API contract."
        },
        "total_count": {
            "type": [
                "integer",
                "null"
            ],
            "description": "Total number of matching records reported by the source or endpoint."
        },
        "sampled_count": {
            "type": [
                "integer",
                "null"
            ],
            "description": "Structured value returned for “sampled count” as defined by this API contract."
        },
        "sampled_amount": {
            "type": [
                "number",
                "integer",
                "null"
            ],
            "description": "Structured value returned for “sampled amount” as defined by this API contract."
        },
        "latest_notification_date": {
            "type": [
                "string",
                "null"
            ],
            "description": "Structured value returned for “latest notification date” as defined by this API contract."
        },
        "by_year": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "year": {
                        "type": "string",
                        "description": "Structured value returned for “year” as defined by this API contract."
                    },
                    "contracts_count": {
                        "type": "integer",
                        "description": "Structured value returned for “contracts count” as defined by this API contract."
                    }
                },
                "additionalProperties": false,
                "required": [
                    "year",
                    "contracts_count"
                ]
            },
            "description": "Structured value returned for “by year” as defined by this API contract."
        },
        "top_cpv": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "cpv": {
                        "type": "string",
                        "description": "Structured value returned for “cpv” as defined by this API contract."
                    },
                    "contracts_count": {
                        "type": "integer",
                        "description": "Structured value returned for “contracts count” as defined by this API contract."
                    }
                },
                "additionalProperties": false,
                "required": [
                    "cpv",
                    "contracts_count"
                ]
            },
            "description": "Structured value returned for “top cpv” as defined by this API contract."
        },
        "top_suppliers": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "siren": {
                        "type": "string",
                        "description": "Normalized 9-digit French SIREN when available."
                    },
                    "contracts_count": {
                        "type": "integer",
                        "description": "Structured value returned for “contracts count” as defined by this API contract."
                    }
                },
                "additionalProperties": false,
                "required": [
                    "siren",
                    "contracts_count"
                ]
            },
            "description": "Structured value returned for “top suppliers” as defined by this API contract."
        },
        "generated_at": {
            "type": "string",
            "description": "UTC timestamp at which this derived result was generated."
        },
        "limitations": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "description": "Known interpretation, source-coverage or freshness limitations for this result."
        }
    },
    "additionalProperties": false,
    "required": [
        "query",
        "source_status",
        "buyer_siret",
        "buyer_name",
        "total_count",
        "sampled_count",
        "sampled_amount",
        "latest_notification_date",
        "by_year",
        "top_cpv",
        "top_suppliers",
        "generated_at"
    ],
    "description": "Structured result returned by the procurement/fr/buyer-profile API."
}
```

## Demonstration snapshot

This example is a database-stored snapshot and does not execute the live API.
- URL: https://api.helpmyagent.com/demo/procurement/fr/buyer-profile
- Generated at: 2026-09-07T14:50:14+00:00

## Request example

```json
{
    "buyer": "LA POSTE",
    "limit": 20
}
```

## Stored response example

```json
{
    "query": "LA POSTE",
    "source_status": "unavailable",
    "buyer_siret": null,
    "buyer_name": null,
    "total_count": null,
    "sampled_count": null,
    "sampled_amount": null,
    "latest_notification_date": null,
    "by_year": [],
    "top_cpv": [],
    "top_suppliers": [],
    "generated_at": "2026-09-07T16:50:14+02:00",
    "limitations": [
        "Pour un SIRET exact, total_count reprend le total DECP de cet acheteur.",
        "Pour une recherche par nom, seuls les résultats dont le nom normalisé correspond exactement sont agrégés et total_count reste null car le total de la recherche textuelle source peut inclure des homonymes ou noms proches.",
        "Lorsque DECP est indisponible, les compteurs restent null plutôt que d’être assimilés à zéro."
    ]
}
```

## Billing policy

```json
{
    "charge_on": "valid_result",
    "no_charge_on_empty_result": true,
    "no_charge_on_error": true
}
```
