firmus.sh

Des données d'entreprises que votre assistant peut citer.

Ajoutez Firmus à Claude, joignez un export de CRM ou de fournisseurs, et posez votre question. Chaque ligne revient soit identifiée par son SIREN, avec les champs sur lesquels repose la correspondance et les colonnes demandées, soit marquée ambiguë ou introuvable — jamais devinée. Chaque valeur nomme le registre dont elle vient et la date à laquelle ce registre l'a modifiée pour la dernière fois.

Dans les réglages des connecteurs de Claude, ajoutez un connecteur personnalisé avec cette URL.

URL du connecteur
https://api.firmus.sh/mcp

Puis joignez le fichier et demandez

Identifie les entreprises de ce fichier, puis ajoute leur activité, leur tranche d'effectifs et la ville de leur siège en nouvelles colonnes. Donne-moi le résultat en CSV.

Un fichier en entrée, le même fichier en retour, aucune ligne devinée.

Claude envoie les lignes à resolve, qui nomme l'entreprise derrière chacune ou dit qu'il ne le peut pas, puis à enrich, qui ajoute les colonnes demandées. Un fichier entier passe par submit_job et revient sous la forme de votre CSV : chaque ligne et chaque colonne conservées, les colonnes de Firmus ajoutées à la suite.

# export_crm.csv, tel que joint
Company;Zip
Danone SA;75009
Boulangerie Martin;
Zzyzx Quantum Holdings;69002
CompanyZipfirmus_resolve_statusfirmus_resolve_confidencefirmus_registry_numberfirmus_matched_namefirmus_activity_labelfirmus_data_updated_at
Danone SA75009matched0.925552032534DANONEActivités des sièges sociaux2026-04-10T11:28:37Z
Boulangerie Martinambiguous0.750
Zzyzx Quantum Holdings69002not_found0.000

Enregistré le 2026-11-01 sur une copie de la publication du registre du 2026-08-01 ; six des colonnes ajoutées sont montrées. Une ligne que la correspondance ne peut pas trancher est ambiguous et liste jusqu'à trois candidats au lieu d'en choisir un, et un nom que rien ne retrouve est not_found : ni l'un ni l'autre n'est une supposition. Une cellule vide est écrite vide, comme dans le fichier.


Quatre outils, et une source sur chaque réponse.

Claude choisit l'outil d'après votre demande. Chaque réponse nomme le registre qu'elle a lu et la date de ce qu'elle affirme, pour que Claude puisse citer plutôt qu'affirmer.

resolve
Cherche l'entreprise française derrière chaque ligne — un nom avec un code postal ou une ville, une adresse, un numéro de TVA, un SIREN ou un SIRET. Une ligne qu'il peut trancher revient avec le SIREN, un score de confiance et les champs sur lesquels repose la correspondance ; les autres reviennent ambiguës, avec leurs candidats, ou introuvables. Jamais devinées.
enrich
Ajoute les colonnes choisies aux entreprises identifiées : dénomination, forme juridique, activité, tranche d'effectifs, siège, établissements actifs, et le dernier événement de chaque type. Chaque ligne porte la date à laquelle le registre a modifié l'entreprise pour la dernière fois.
timeline
Liste ce que le registre a enregistré sur une entreprise et ses établissements, du plus récent au plus ancien, chaque événement avec la date à laquelle il a eu lieu et celle à laquelle Firmus l'a enregistré.
lookup
Renvoie une entreprise par son SIREN, ou un établissement par son SIRET : état, forme juridique, activité, tranche d'effectifs, dates et adresse, avec la date à laquelle le registre a modifié la fiche pour la dernière fois.

Un fichier trop grand pour un seul appel passe par submit_job, qui répond par un identifiant de tâche plutôt que par les lignes, et par job_status, qui donne à Claude le lien vers votre résultat une fois la tâche terminée.

Aucune donnée de contact : ni e-mails, ni numéros de téléphone, ni profils de personnes, et aucune recherche par personne. Firmus répond sur des entreprises, à partir du registre public.


Ce qui a changé, et depuis quand.

timeline répond avec les changements que le registre a enregistrés : une cessation ou une réactivation, un changement de dénomination, une nouvelle activité ou forme juridique, un siège transféré, un établissement ouvert ou fermé, une tranche d'effectifs qui a changé. Chaque événement dit quand il a eu lieu, quand Firmus l'a enregistré, et d'où il vient.

# un événement, tel que timeline le renvoie
{
  "kind": "legal_entity.head_office_moved",
  "severity": "notable",
  "occurred_on": "2026-05-11",
  "recorded_at": "2026-11-01T08:51:16Z",
  "source": "sirene_daily",
  "bulk": false,
  "subject": { "kind": "legal_entity", "number": "332976976" },
  "payload": {
    "to": {
      "registered_city": "PARIS", "registered_address": "25 RUE D'ASTORG",
      "registered_postal_code": "75008"
    },
    "from": {
      "registered_city": "MONDEVILLE", "registered_address": "ROUTE DE PARIS",
      "registered_postal_code": "14120"
    }
  }
}

Le journal est récent : il ne commence pas avant le 2026-10-29, date de mise en service de son enregistrement quotidien, et rien d'antérieur n'a été reconstitué. La date propre d'un changement peut être plus ancienne, quand le registre le publie tard. Un historique vide signifie que rien n'a été enregistré, pas que rien ne s'est passé.


Les données

Le registre, compté.

La France est le registre couvert aujourd'hui : la base Sirene de l'INSEE.

43 896 818
établissements dans l'index de recherche
30 M
personnes morales importées du registre
2026-08-01
la publication mensuelle du registre qui répond aujourd'hui

Entre deux publications mensuelles, nous appliquons chaque matin le flux de modifications du registre — environ 33 000 fiches modifiées par jour ouvré — de sorte qu'une entreprise modifiée hier répond juste aujourd'hui. Sur chaque fiche et chaque ligne enrichie, data_updated_at est la date à laquelle le registre l'a modifiée pour la dernière fois, jamais celle d'une reconstruction faite ici.


Pour les développeurs

Les mêmes réponses, en HTTP.

Chaque outil est une fine couche au-dessus d'un endpoint de l'API, et une clé de la console appelle l'endpoint directement. Le champ ci-dessous interroge le registre en direct, avec une clé de démonstration partagée.

BNP PARIBAS
662 042 449
active
partial falsetook_ms 49
bash
# la même recherche, depuis votre terminal
curl -H "Authorization: Bearer fk_pub_acilFaSqbqW0a1DjYZZwq1IIDPpWAnj4" \
  'https://api.firmus.sh/v1/fr/suggest?q=bnp+pariba&limit=5'

Toute l'API, 19 endpoints

# seul fr est indexé aujourd'hui
GET /v1/{country_code}/legal-entities/{registry_number}
GET /v1/{country_code}/legal-entities/{registry_number}/establishments
GET /v1/{country_code}/legal-entities/{registry_number}/events
GET /v1/{country_code}/establishments/{establishment_number}
GET /v1/{country_code}/suggest?q=
POST /v1/{country_code}/resolve
POST /v1/{country_code}/enrich
GET,POST /v1/{country_code}/watchlists
GET,PATCH,DELETE /v1/{country_code}/watchlists/{id}
GET,POST,DELETE /v1/{country_code}/watchlists/{watchlist_id}/watches
GET /v1/{country_code}/watchlists/{watchlist_id}/segments
PUT,DELETE /v1/{country_code}/watchlists/{watchlist_id}/segments/{segment_id}
GET /v1/{country_code}/events?cursor=
GET,POST /v1/{country_code}/segments
GET,DELETE /v1/{country_code}/segments/{id}
POST /v1/{country_code}/segments/{id}/export
POST /v1/{country_code}/jobs
GET /v1/{country_code}/jobs/{id}
GET /v1/{country_code}/jobs/{id}/result

Un contrat qui tient.

json
# la fiche légale derrière le résultat choisi, abrégée
curl -H "Authorization: Bearer fk_pub_acilFaSqbqW0a1DjYZZwq1IIDPpWAnj4" \
  'https://api.firmus.sh/v1/fr/legal-entities/552032534'

{
  "country_code": "fr",
  "registry_number": "552032534",
  "kind": "company",
  "name": "DANONE",
  "legal_form": { "code": "5599", "scheme": "insee_cj_2018" },
  "activity": { "code": "70.10Z", "scheme": "naf2008" },
  "workforce": { "range_code": "42", "scheme": "insee_tranche_effectifs", "year": 2023 },
  "size_category": { "code": "GE", "scheme": "insee_categorie_entreprise", "year": 2023 },
  "status": "active",
  "registered_on": "1955-01-01",
  "ceased_on": null,
  "registered_address": {
    "line": "59 RUE LA FAYETTE", "postal_code": "75009", "city": "PARIS"
  },
  "partially_disclosed": false,
  "data_updated_at": "2026-04-10T11:28:37Z",
  "country_data": { "sigle": null, "economie_sociale_solidaire": false, "unite_purgee": false, … }
}

Tarifs

Un forfait fixe, lignes comprises.

Chaque palier comprend un nombre de lignes par mois que resolve et enrich traitent, comptées ensemble : une ligne qui n'a pas pu être identifiée reste une ligne traitée, et un fichier identifié puis enrichi consomme deux fois ses lignes identifiées. Une fois épuisées, les deux refusent jusqu'à la fin du mois, et rien n'est facturé à la ligne.

Free

Pour passer un premier fichier et voir ce qui revient.

0 €
  • 1 000 lignes par mois traitées par resolve et enrich, comptées ensemble
  • 1 000 appels d'API par mois — chaque requête compte, appels d'outils depuis Claude compris ; suivre un traitement de fichier est gratuit
  • 2 requêtes par seconde
  • 5 entreprises ou établissements surveillés en même temps, toutes listes confondues
  • Segments par filtres : 3 enregistrés en même temps, 1 sous surveillance pour les entreprises qui y entrent, 1 000 lignes exportées par mois
  • 1 clé d'API
  • Clé publiable pour le navigateur, 100 appels par jour et par adresse appelante, puis refusés
  • Documentation, et pas de file de support
Commencer gratuitement
ProLa plupart des équipes

Pour une équipe qui enrichit ses exports chaque mois.

49 €/mois
  • 25 000 lignes par mois traitées par resolve et enrich, comptées ensemble
  • Fiches entreprise illimitées, 15 requêtes par seconde pour tout le compte
  • 1 000 entreprises ou établissements surveillés en même temps, toutes listes confondues
  • Segments par filtres : 100 enregistrés en même temps, 10 sous surveillance pour les entreprises qui y entrent, 25 000 lignes exportées par mois
  • Clé publiable pour le navigateur, 100 appels par jour et par adresse appelante, puis servis dans la limite du débit du palier
  • prévuPack conformité
  • Support par e-mail, 2 jours ouvrés
Créer un compte
Scale

Pour les gros fichiers, et pour une intégration à vous.

249 €/mois
  • 250 000 lignes par mois traitées par resolve et enrich, comptées ensemble
  • Fiches entreprise illimitées, 60 requêtes par seconde pour tout le compte
  • 10 000 entreprises ou établissements surveillés en même temps, toutes listes confondues
  • Segments par filtres : 1 000 enregistrés en même temps, 100 sous surveillance pour les entreprises qui y entrent, 250 000 lignes exportées par mois
  • Clé publiable pour le navigateur, 100 appels par jour et par adresse appelante, puis servis dans la limite du débit du palier
  • prévuPack conformité
  • Support par e-mail, 1 jour ouvré
Créer un compte

Un palier payant est un forfait mensuel fixe, encaissé d'avance. Pas de crédits, et rien n'est facturé à la ligne ni à l'appel, sur aucun palier.

20 % de remise en prépaiement annuel.

Le palier gratuit est permanent et ne demande pas de carte.

Les segments sont construits à partir du répertoire Sirene de l'Insee. Ils ne tiennent pas compte d'une opposition à la prospection inscrite seulement au RNE, le registre national des entreprises, que Firmus ne lit pas encore. Les entreprises en diffusion partielle sont comptées, jamais listées.

Plus de 60 requêtes par seconde ou de 250 000 lignes par mois, ou une facture plutôt qu'une carte ? Écrivez-nous.