CSV import: your files linked to French companies, with a confidence score
The CSV import connector turns your file into a Reachable list, no SIREN required. Each row is then linked to its SIREN, the French company number, with a visible method and confidence score. At the default 0.95 threshold, our test of 10 November 2026 gave 96 right links out of 97. Unlinked rows stay in the list.
By Alexandre Rastello · Published on
In this series: Connectors
Sources: Reachable, SIREN matching test on 200 places in the Alpes-Maritimes, 10 November 2026, INSEE, SIRENE database of companies and establishments (Licence Ouverte), FullEnrich, home page: verified emails and mobile numbers (read on 12 November 2026) · Updated on
What is the CSV import connector?
The CSV import connector is a row source: your file becomes a list, row for row, with no filtering. A row does not need a SIREN, the 9-digit number INSEE gives every French company; it comes in as is, and matching comes later, as a column.
| Data owner | You: the file stays your data |
| Format | CSV with a header row; up to 100,000 rows and 50 MB per file |
| Recognised columns | SIREN, SIRET, website or domain, company name, address, postcode, coordinates, email, phone, LinkedIn, country; other columns are kept as text |
| Reading | Once, at import; the file is not read again when the list reruns |
| Price | Rows come in free; each column run afterwards costs the price shown on the pricing page and on the connector hub |
How does the CSV import link your rows to a SIREN?
Reachable cross-checks each row's website, name and place against SIRENE, then shows the method and a confidence score between 0 and 1. The import does not match on its own: the SIREN match column, added to the list, does.
At import, Reachable suggests a mapping for each header (website becomes a domain, zip a postcode, company a company name). You correct it before running. A row that already holds a valid SIREN or SIRET keeps it as is: it is your data, and columns that need a SIREN use it.
Confidence depends on how many pieces of evidence agree, not on a single method. It was set on 200 real places in the Alpes-Maritimes whose operator was established by hand (test of 10 November 2026, details in the methodology):
| Evidence | Confidence | Measured |
|---|---|---|
| SIREN on the website = only name + place candidate | 1 | 21/21 |
| SIREN on the website + active establishment at the row's place | 0.95 | 23/24 |
| Only name + place candidate, nothing contrary on the website | 0.95 | 52/52 |
| SIREN on the website, row without a place (CSV of domains) | 0.8 | 48/60 |
| SIREN on the website, no establishment at the row's place | none | 4/10 |
The threshold is set per list; the default is 0.95. Below it, columns that need a SIREN (SIRENE record, BODACC, certifications) do not run and cost nothing. A name alone, with no place or website, is not matched.
What did matching give in a real test?
At the default 0.95 threshold, the test of 10 November 2026 gave 96 right links out of 97, so 1 wrong. The 200 places were drawn at random by stratum from OpenStreetMap; the real operator was established by hand for 171 of them.
| Threshold | Right | Wrong | Established rows linked |
|---|---|---|---|
| 1 (“certain”) | 21 | 0 | 12 % |
| 0.95 (default) | 96 | 1 | 56 % |
So 0.95 links a little over half the rows and is wrong once in 97. The threshold of 1 made no mistake in this test, but links about one row in eight. Read on its own, a website's SIREN was right in 48 cases out of 60: a chain's website often shows the franchisor's or holding company's SIREN. That is why Reachable confirms it with an active establishment at the row's place.
What does a file look like before and after?
Example: five rows of a CSV, before and after the SIREN match column, at the default threshold. Companies, domains (.example, reserved for examples) and SIRENs are fictitious; the SIRENs have an invalid check digit and point to no real company. Confidence scores follow the scale above.
Before:
| company | website | postcode |
|---|---|---|
| Boulangerie Fictive du Port | boulangerie-fictive.example | 06300 |
| Cabinet Exemple Conseil | cabinet-exemple.example | 06400 |
| Garage Imaginaire | 06200 | |
| Studio Inventé | studio-invente.example | |
| Comptoir Fictif |
After:
| company | SIREN | Method | Confidence | SIREN columns |
|---|---|---|---|---|
| Boulangerie Fictive du Port | 111 111 111 | website legal notice, only name + place candidate | 1 | run |
| Cabinet Exemple Conseil | 222 222 222 | website legal notice, active establishment in 06400 | 0.95 | run |
| Garage Imaginaire | 333 333 333 | name + place, single candidate | 0.95 | run |
| Studio Inventé | read on the website | website legal notice, no place | 0.8 | do not run, 0 credits |
| Comptoir Fictif | none | name only: not attempted | none | do not run, 0 credits |
All five rows stay in the list. Studio Inventé passes if you lower this list's threshold to 0.8; Comptoir Fictif can be matched once you add its postcode or website.
Which other connectors work with the CSV import?
Once matched, a row gets every column of the French company base; unmatched, it keeps those that work on the website or the name. Three recipes:
- CSV import + SIRENE: your customer file, matched, with each company's industry code, headcount and status (active or closed).
- CSV import + BODACC: the same file, rerun every week, to catch customers entering insolvency proceedings or being sold.
- CSV import + Website: a list of domains, with each site's CMS, HTTPS certificate and published emails, matched or not.
Every connector and its run price are listed on the connector hub.
How do I use it from an AI agent (MCP)?
Your agent (Claude, ChatGPT, Cursor) imports a file and adds columns in plain language through Reachable's MCP server. Example request:
Import this prospect CSV into a new list, match each row to its SIREN at 0.95, then add the SIRENE record and tell me how many rows are left without a SIREN.
The agent returns the import report (rows in, invalid rows with their reason), then a table: SIREN, method, confidence and SIRENE columns, each value with its source and date.
What are the limits of the CSV import?
Matching only works for French companies and only sees what the website and SIRENE say.
- No certainty by default: at 0.95, the test gives 1 wrong out of 97. Choose a threshold of 1 if a mistake is costly for you.
- Partial recall: 56 % of established rows matched at 0.95. A dead website, a blocked request or an ambiguous name leave the row without a SIREN.
- Regional test: the measure covers 200 places in the Alpes-Maritimes; another region or another kind of business may give other figures.
- Chains and franchises: a website pointing to one company and a place pointing to another give no match.
- Unreadable values: a SIREN or SIRET with a wrong check digit, or an unreadable domain, email or phone, make the row invalid. It is not silently dropped: it is counted in the import report, with its reason.
- Contacts: Reachable does not look for a person's email or mobile; it works at company level.
- One-off file: a CSV is read once. For a file that changes, push rows through the API.