Skip to content
firmus.shdocs

Every page's text, headings and title. Code samples are not indexed.

Suggest

Match a company by name or identifier as the reader types.

The one operation that accepts a key in the query string, which is what lets a browser call it on every keystroke without a CORS preflight — authentication explains why the other three need a header.

A code here travels with a label rather than a scheme: the search index carries the wording denormalized, so a suggestion needs no second call to be readable. score is 1.0 for a SIREN, SIRET or French VAT number matched directly.

GET/v1/{country_code}/suggestScope suggest

Parameters

ParameterInTypeRequiredExample
country_codepathstringYesfr
include_closedquerybooleanNotrue
limitqueryintegerNo10
qquerystringYesdanone

Request

bash
curl "https://api.firmus.sh/v1/fr/suggest?q=danone&key=$FIRMUS_PUBLIC_KEY"

Fields

  • resultsobject[]
    • []objectoptional
      • registry_numberstring
      • namestringnullable
      • highlightstringnullable
      • legal_formobject
        • codestringnullable
        • labelstringnullable
      • activityobject
        • codestringnullable
        • labelstringnullable
      • activeboolean
      • head_officeobjectnullable
        • establishment_numberstring
        • citystringnullable
      • matched_establishmentobjectnullable
        • establishment_numberstring
        • citystringnullable
        • head_officeboolean
      • scorenumber (float)
  • partialboolean
  • took_msinteger
  • queryobject
    • interpretedobjectnullable
      • activitystring
      • consumedboolean

Responses

Autocomplete over the search index, grouped by company: one result is one legal entity, carrying the establishment that matched alongside the head office. A SIREN, SIRET or French VAT number is answered directly, scored 1.0. partial is true when a branch exceeded its time budget and the answer is therefore smaller than the query deserves. This is the one operation that accepts a key in the query string. A key with the fk_pub prefix may be sent as `?key=<key>` instead of in the Authorization header, which is what lets a browser call this endpoint without a CORS preflight; any other prefix sent that way is refused, and so is an fk_pub key sent that way to any other operation, because a query string ends up in access logs, Referer headers and browser history and the other three read the canonical layer. A public key reaches those over a Bearer header, at the cost of one preflight.

{
  "results": [
    {
      "registry_number": "389389248",
      "name": "LE FOURNIL DE L ILE BARBE LYON",
      "highlight": "LE FOURNIL DE L ILE BARBE <em>LYON</em>",
      "legal_form": {
        "code": "5710",
        "label": "SAS, société par actions simplifiée"
      },
      "activity": {
        "code": "10.71C",
        "label": "Boulangerie et boulangerie-pâtisserie"
      },
      "active": true,
      "head_office": {
        "establishment_number": "38938924800011",
        "city": "PARIS"
      },
      "matched_establishment": {
        "establishment_number": "38938924800029",
        "city": "LYON",
        "head_office": false
      },
      "score": 0.03875489757659952
    }
  ],
  "partial": false,
  "took_ms": 0,
  "query": {
    "interpreted": {
      "activity": "boulangerie",
      "consumed": false
    }
  }
}

Try it

Calls the real API with a demo key. No account, no signup.