API REST Reachable
Les mêmes outils que le serveur MCP, en HTTP : même entrée, même réponse, même prix. Pour n8n, vos scripts et vos SDK.
Démarrage
URL de base : https://api.withreachable.com. Chaque requête porte une clé API dans l'en-tête Authorization: Bearer <clé>. Créez vos clés depuis votre compte.
Toute réponse suit la même enveloppe : success, data, cost et request_id ; une erreur renvoie success: false, un code machine stable dans error et un message lisible. Chaque donnée porte sa source et sa date de mise à jour.
Le paramètre max_cost plafonne le coût d'une requête : au-delà, rien n'est servi ni facturé. L'en-tête Idempotency-Key évite un double débit quand une requête est rejouée.
Spécification OpenAPI 3 complète : https://api.withreachable.com/v1/openapi.json.
Données
Facturées à l'usage, 0,05 € l'entreprise. estimate et count sont gratuits.
Compter des entreprises (gratuit)
POST/v1/companies/count· count
Corps JSON
| Nom | Type | Description |
|---|---|---|
naf_codes | array de string | APE en NAF rév. 2, code exact ou préfixe. |
naf_codes_2025 | array de string | APE en NAF 2025, code exact ou préfixe. |
department_codes | array de string | Département du siège. |
commune_codes | array de string | Commune du siège, code INSEE (ex. 06088 = Nice ; Paris, Lyon, Marseille : arrondissements 75101…), pas le code postal (06000). |
legal_form_codes | array de string | Catégorie juridique INSEE, code exact ou préfixe (ex. 57 = SAS). |
headcount_bands | array de string | Tranche d'effectifs INSEE (NN, 00, 01, 02…). Exclut les entreprises en diffusion partielle. |
status | array de "active" | "ceased" | État administratif. Défaut : tous. |
created | object | Date de création. |
created.from | string (date) | Date de début incluse, AAAA-MM-JJ. |
created.to | string (date) | Date de fin incluse, AAAA-MM-JJ. |
signals | object | Entreprises ayant au moins un signal de ces types sur la période. |
signals.typesrequis | array de string | |
signals.occurred | object |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 402 Solde insuffisant
- 403 Plafond du jour de la clé atteint
- 404 Introuvable
- 409 Idempotency-Key déjà utilisée pour un autre appel
- 422 Coût supérieur à max_cost
- 429 Limite de débit atteinte
curl -X POST "https://api.withreachable.com/v1/companies/count" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Chercher des entreprises par filtres ou par nom
POST/v1/companies/search· search_companies
Corps JSON
| Nom | Type | Description |
|---|---|---|
q | string | Nom, sigle ou enseigne (tolérant aux fautes, actives d'abord), ou SIREN / SIRET exact. Combinable seulement avec department_codes et status (une valeur chacun). |
naf_codes | array de string | APE en NAF rév. 2, code exact ou préfixe. |
naf_codes_2025 | array de string | APE en NAF 2025, code exact ou préfixe. |
department_codes | array de string | Département du siège. |
commune_codes | array de string | Commune du siège, code INSEE (ex. 06088 = Nice ; Paris, Lyon, Marseille : arrondissements 75101…), pas le code postal (06000). |
legal_form_codes | array de string | Catégorie juridique INSEE, code exact ou préfixe (ex. 57 = SAS). |
headcount_bands | array de string | Tranche d'effectifs INSEE (NN, 00, 01, 02…). Exclut les entreprises en diffusion partielle. |
status | array de "active" | "ceased" | État administratif. Défaut : tous. |
created | object | Date de création. |
created.from | string (date) | Date de début incluse, AAAA-MM-JJ. |
created.to | string (date) | Date de fin incluse, AAAA-MM-JJ. |
signals | object | Entreprises ayant au moins un signal de ces types sur la période. |
signals.typesrequis | array de string | |
signals.occurred | object | |
limit | integer | |
cursor | string | Curseur opaque renvoyé par page_info.next_cursor. |
max_cost | number ou string | Plafond de coût de la requête, en euros (ex. 0.05). Coût estimé supérieur : rien n'est servi ni facturé. |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 402 Solde insuffisant
- 403 Plafond du jour de la clé atteint
- 404 Introuvable
- 409 Idempotency-Key déjà utilisée pour un autre appel
- 422 Coût supérieur à max_cost
- 429 Limite de débit atteinte
curl -X POST "https://api.withreachable.com/v1/companies/search" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Fiche d'une entreprise
GET/v1/companies/{siren}· get_company
Paramètres
| Nom | Type | Description |
|---|---|---|
blocks | string · query | Blocs séparés par des virgules (public, labels). Défaut : public. |
max_cost | string · query | Plafond de coût en euros (ex. 0.01). |
sirenrequis | string · chemin |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 402 Solde insuffisant
- 403 Plafond du jour de la clé atteint
- 404 Introuvable
- 409 Idempotency-Key déjà utilisée pour un autre appel
- 422 Coût supérieur à max_cost
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/companies/552081317" \
-H "Authorization: Bearer $REACHABLE_API_KEY"Signaux d'entreprises
POST/v1/signals/search· get_signals
Corps JSON
| Nom | Type | Description |
|---|---|---|
sirens | array de string | Limiter à ces entreprises. |
types | array de string | Types de signaux (ex. contract.awarded). |
occurred | object | Date de l'événement. |
occurred.from | string (date) | Date de début incluse, AAAA-MM-JJ. |
occurred.to | string (date) | Date de fin incluse, AAAA-MM-JJ. |
detected | object | Date d'entrée dans la base (pour un flux incrémental). |
detected.from | string (date) | Date de début incluse, AAAA-MM-JJ. |
detected.to | string (date) | Date de fin incluse, AAAA-MM-JJ. |
department_codes | array de string | Département du siège. |
sort | "occurred_on_desc" | "detected_at_asc" | |
limit | integer | |
cursor | string | Curseur opaque renvoyé par page_info.next_cursor. |
max_cost | number ou string | Plafond de coût de la requête, en euros (ex. 0.05). Coût estimé supérieur : rien n'est servi ni facturé. |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 402 Solde insuffisant
- 403 Plafond du jour de la clé atteint
- 404 Introuvable
- 409 Idempotency-Key déjà utilisée pour un autre appel
- 422 Coût supérieur à max_cost
- 429 Limite de débit atteinte
curl -X POST "https://api.withreachable.com/v1/signals/search" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Estimer le coût d'un appel (gratuit)
POST/v1/estimate· estimate
Corps JSON
| Nom | Type | Description |
|---|---|---|
toolrequis | "search_companies" | "get_company" | "get_signals" | Outil à estimer. |
paramsrequis | object | Paramètres de l'outil, tels qu'ils seraient envoyés (validés par son schéma). |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 402 Solde insuffisant
- 403 Plafond du jour de la clé atteint
- 404 Introuvable
- 409 Idempotency-Key déjà utilisée pour un autre appel
- 422 Coût supérieur à max_cost
- 429 Limite de débit atteinte
curl -X POST "https://api.withreachable.com/v1/estimate" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Portefeuille
Recharge et recharge automatique du solde prépayé.
Créer une session de recharge Stripe Checkout
POST/v1/billing/checkout· create_checkout
Corps JSON
| Nom | Type | Description |
|---|---|---|
amountrequis | string ou number | Montant en euros HT, au centime près (ex. "20" ou "20.00"). |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 429 Limite de débit atteinte
curl -X POST "https://api.withreachable.com/v1/billing/checkout" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Régler la recharge automatique
PUT/v1/billing/auto-recharge· set_auto_recharge
Corps JSON
| Nom | Type | Description |
|---|---|---|
enabledrequis | boolean | |
threshold | string ou number | Seuil : recharge quand le solde passe dessous (euros). |
amount | string ou number | Montant HT de chaque recharge automatique (euros). |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 401 Clé API absente, inconnue ou révoquée
- 429 Limite de débit atteinte
curl -X PUT "https://api.withreachable.com/v1/billing/auto-recharge" \
-H "Authorization: Bearer $REACHABLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Routes publiques gratuites
Sans clé API, limitées par adresse IP. Elles alimentent les outils gratuits du site.
Recherche d'entreprises par nom, SIREN ou SIRET, entrepreneurs individuels exclus (gratuit, sans compte)
GET/v1/public/companies/search· public_company_search
Paramètres
| Nom | Type | Description |
|---|---|---|
qrequis | string · query |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/companies/search"Ville ou code postal → code commune INSEE (gratuit, sans compte)
GET/v1/public/communes· public_communes
Paramètres
| Nom | Type | Description |
|---|---|---|
qrequis | string · query |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/communes"Secteur en clair → code NAF rév. 2 (gratuit, sans compte)
GET/v1/public/naf-codes· public_naf_codes
Paramètres
| Nom | Type | Description |
|---|---|---|
qrequis | string · query |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/naf-codes"Fiche résumée et numéro de TVA vérifié auprès de VIES (gratuit, sans compte)
GET/v1/public/companies/{siren}· public_company
Paramètres
| Nom | Type | Description |
|---|---|---|
sirenrequis | string · chemin |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/companies/552081317"Historique d'un label RGE, Qualiopi ou Bio (gratuit, sans compte)
GET/v1/public/companies/{siren}/labels/{type}· public_label_history
Paramètres
| Nom | Type | Description |
|---|---|---|
sirenrequis | string · chemin | |
typerequis | "rge" | "qualiopi" | "bio" · chemin |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/companies/552081317/labels/<type>"Validité d'un SIRET, établissement actif ou fermé (gratuit, sans compte)
GET/v1/public/establishments/{siret}· public_siret_check
Paramètres
| Nom | Type | Description |
|---|---|---|
siretrequis | string · chemin |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/establishments/55208131766522"Entreprises créées par commune ou département et secteur (gratuit, sans compte)
GET/v1/public/companies/new· public_new_companies
Paramètres
| Nom | Type | Description |
|---|---|---|
department_code | string · query | |
commune_code | string · query | |
naf_code | string · query | |
created_fromrequis | string (date) · query | Créées à partir de cette date (AAAA-MM-JJ). |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/companies/new"Procédures collectives, ventes de fonds, marchés publics (gratuit, sans compte)
GET/v1/public/signals· public_signals
Paramètres
| Nom | Type | Description |
|---|---|---|
typerequis | "insolvency.opened" | "company.sold" | "contract.awarded" · query | |
department_code | string · query | |
commune_code | string · query | |
naf_code | string · query | Secteur de l'entreprise (APE en NAF rév. 2, code ou préfixe). |
siren | string · query | |
buyer_siret | string · query | Acheteur public (contract.awarded seulement). |
occurred_from | string (date) · query |
Réponses
- 200 Succès
- 400 Paramètres invalides
- 404 Introuvable
- 429 Limite de débit atteinte
curl -X GET "https://api.withreachable.com/v1/public/signals"