POST /api/sirene/companies/search
Price: 20 credits
Search French companies by name, brand, or keywords with optional registry filters
Search the French company registry by name, brand, SIREN/SIRET or keywords. Optional filters: postal code, department, main activity (NAF), legal form, company size category, administrative status. Returns full registry details per company. Use a SIREN with the 'companies' endpoint for a single company.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)query string required — Search text — company name, brand, SIREN/SIRET, or keywords (examples: "danone")count integer required — Max number of companies to return (min: 1; max: 10000)code_postal string nullable — Filter to companies with an establishment in this 5-digit postal code (examples: "75009")departement string nullable — Filter to companies with an establishment in this French department code (examples: "75")activite_principale string nullable — Filter by main activity NAF code (rév. 2) (examples: "10.71C")nature_juridique string nullable — Filter by legal-form code (examples: "5710")categorie_entreprise string nullable — Filter by company size category (one of: "PME", "ETI", "GE")etat_administratif string nullable — Filter by administrative status (one of: "A", "C")@type string (default: "SireneCompany")siren string requiredname string requiredlegal_name string nullablesigle string nullablestatus string nullablelegal_form string nullablecompany_category string nullablesection_activite_principale string nullableactivite_principale string nullableactivite_principale_naf25 string nullableworkforce_range string nullableannee_tranche_effectif_salarie string nullableestablishment_count integer nullableopen_establishment_count integer nullablecreation_date string nullableclosure_date string nullableupdated_at string nullablestatut_diffusion string nullableheadquarters object nullable@type string (default: "SireneEstablishment")siret string requiredis_headquarters boolean (default: false)status string nullableactivite_principale string nullableactivite_principale_naf25 string nullableaddress string nullablestreet_number string nullablestreet_type string nullablestreet_name string nullablepostal_code string nullablecommune string nullablecity string nullabledepartement string nullableregion string nullableepci string nullablelatitude string nullablelongitude string nullablecreation_date string nullableactivity_start_date string nullableclosure_date string nullableworkforce_range string nullablenom_commercial string nullableenseignes arrayofficers array@type string (default: "SireneOfficer")type_dirigeant string nullablequalite string nullablenom string nullableprenoms string nullableannee_de_naissance string nullabledate_de_naissance string nullablenationalite string nullablesiren string nullabledenomination string nullablefinances array@type string (default: "SireneFinance")year string requiredca integer nullableresultat_net integer nullablecomplements object nullable@type string (default: "SireneComplements")is_association boolean (default: false)is_entrepreneur_individuel boolean (default: false)is_ess boolean (default: false)is_societe_mission boolean (default: false)is_service_public boolean (default: false)is_administration boolean (default: false)is_rge boolean (default: false)is_bio boolean (default: false)is_finess boolean (default: false)is_qualiopi boolean (default: false)is_organisme_formation boolean (default: false)is_entrepreneur_spectacle boolean (default: false)is_achats_responsables boolean (default: false)is_alim_confiance boolean (default: false)is_patrimoine_vivant boolean (default: false)is_siae boolean (default: false)is_uai boolean (default: false)is_avocat boolean (default: false)422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — The entity was not found, or a precondition failed Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.