France Company Search (RNE / INPI) API and MCP — Find Companies by Name
Send a name and get back matching French companies: SIREN, name, status, address, activity with its NAF code, the officers as listed and a link to the record. Set max_items to control how many come back.
- You send
- a company name
- You get back
- matching French companies with SIREN, status, address, activity, NAF code and officers
- Coverage
- France — entities on RNE / INPI.
- Price
- 1 point per returned record — $1 per 1,000
- Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| RNE / INPI directly | Type the name into RNE / INPI and read the results | Usually free, sometimes per-document | A different interface, language and data shape for every country you add |
| Collecting it yourself | Build and host a crawler per register, then keep each one alive | Infrastructure and maintenance | Registers change their pages without warning, and nobody is on the hook when yours breaks |
| NeuralVerge | One request, the same shape as every other source in the catalog | $1 per 1,000, misses not billed | Covers France — other countries are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
session_id | string | Id of this run, for tracing. |
kind | string | Source type of the response. |
keyword | string | The search text you sent. |
max_items | number | The cap you set on returned records. |
start_page | number | Results page the search started from. |
partial | boolean | Whether the result set is incomplete. |
human | string | Readable summary with the number of results and matches found. |
total_points | number | Points charged: one per returned record. |
machine.total_items | number | Records returned in this batch. |
machine.first_item | object | The first returned record, same shape as one entry of items. |
machine.items[] | array | The returned records. |
machine.total_found | number | Matches the register reports for the search; null when it does not report one. |
machine.page_count | number | Result pages read. |
machine.blocked | boolean | Whether the register refused the request. |
machine.proxy_traffic_bytes | number | Size of the data transferred for the run, in bytes. |
machine.items[].registration_number | string | SIREN registration number. |
machine.items[].name | string | Company name. |
machine.items[].status | string | Activity status, e.g. En activité (active). |
machine.items[].address | string | Head-office address. |
machine.items[].url | string | Link to the company page on the register. |
machine.items[].company_type | null | Null in the sample; use the company lookup for legal form. |
machine.items[].incorporation_date | null | Null in the sample; use the company lookup for registration date. |
machine.items[].activity | string | Main activity description. |
machine.items[].naf_code | string | NAF activity code. |
machine.items[].officers | string | Officers as a single text list, with a count of others when long. |
machine.items[].badges[] | array | Badges shown on the listing; empty in the sample. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "fr_companies_search",
"keyword": "danone",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# France — Annuaire des Entreprises (RNE/Sirene) — company search\n\n- **Keyword:** danone\n- **Results:** 2 of 447 found\n- **Proxy traffic:** 170.3 KB",
"machine": {
"total_items": 2,
"first_item": {
"registration_number": "552032534",
"name": "DANONE",
"status": "En activité",
"address": "59-61 RUE LA FAYETTE 75009 PARIS",
"url": "https://annuaire-entreprises.data.gouv.fr/entreprise/danone-552032534",
"company_type": null,
"incorporation_date": null,
"activity": "Activités des sièges sociaux",
"naf_code": "70.10Z",
"officers": "Antoine BERNARD DE SAINT AFFRIQUE, Frederic BOUTEBBA, Valerie CHAPOULAUD-FLOQUET, Gilbert GHOSTINE, Lise KINGO, et 8 autres",
"badges": []
},
"items": [
{
"registration_number": "552032534",
"name": "DANONE",
"status": "En activité",
"address": "59-61 RUE LA FAYETTE 75009 PARIS",
"url": "https://annuaire-entreprises.data.gouv.fr/entreprise/danone-552032534",
"company_type": null,
"incorporation_date": null,
"activity": "Activités des sièges sociaux",
"naf_code": "70.10Z",
"officers": "Antoine BERNARD DE SAINT AFFRIQUE, Frederic BOUTEBBA, Valerie CHAPOULAUD-FLOQUET, Gilbert GHOSTINE, Lise KINGO, et 8 autres",
"badges": []
},
{
"registration_number": "672039971",
"name": "DANONE PRODUITS FRAIS FRANCE (D.P.F.F.)",
"status": "En activité",
"address": "17 RUE DES DEUX GARES 92500 RUEIL MALMAISON",
"url": "https://annuaire-entreprises.data.gouv.fr/entreprise/danone-produits-frais-france-d-p-f-f-672039971",
"company_type": null,
"incorporation_date": null,
"activity": "Fabrication de lait liquide et de produits frais",
"naf_code": "10.51A",
"officers": "Olivier PECHEREAU, Pablo PERVERSI, Jeremy WOOD, ERNST & YOUNG AUDIT",
"badges": []
}
],
"total_found": 447,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 174403
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged.
curl -X POST https://api.neuralverge.ai/functions/v1/run-fr-companies-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"danone","max_items":2}'What teams use it for
Where this field shows up in an actual workflow.
Turn a trading name into the registration number needed for a profile lookup.
Search a group name and see the subsidiaries that carry it, with activity codes.
Collect French companies matching a keyword, with address and activity.
Check names against the register and flag any that are not En activité.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
France — entities on RNE / INPI.
Read at request time, so the answer reflects the register as it stands when you ask.
RNE / INPI is a public register. Every response carries the source URL it was read from and a session id you can trace.
- —Legal form and registration date are null in search results; use INPI company for them.
- —Officers come as one text string, not a structured list.
- —Matching is on name, so generic keywords return unrelated companies.
Questions, answered
machine.total_found reports the register's count (447 for danone in the sample). You receive up to max_items of them.
Related sources
Try france company search on your own data
One request format across every source in the catalog.