> ## Documentation Index
> Fetch the complete documentation index at: https://docs.otbstudio.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Filtrer les entreprises

> Liste les entreprises selon leur activité et leur lieu. Chaque filtre est optionnel et les filtres s'appliquent ensemble ; donnez au moins un de `nace`, `area`, `legal_form` ou `situation`. Par défaut, la liste contient les entreprises actives, y compris celles en faillite ou en dissolution. Les résultats sont gratuits.



## OpenAPI

````yaml /api-reference/openapi.fr.json get /v1/companies/screen
openapi: 3.0.3
info:
  title: API OTB Studio
  version: 1.0.0
  description: >-
    Le registre belge des entreprises via REST : recherche, profils,
    actionnariat, comptes annuels déposés et mandats. Chaque route demande un
    jeton `otb_live_`, et chaque réponse livrée coûte des crédits pour les
    données qu'elle contient.
servers:
  - url: https://api.otbstudio.ai
security:
  - token: []
tags:
  - name: Companies
    description: Un registre des entreprises, lu de cinq façons.
paths:
  /v1/companies/screen:
    get:
      tags:
        - Companies
      summary: Filtrer les entreprises
      description: >-
        Liste les entreprises selon leur activité et leur lieu. Chaque filtre
        est optionnel et les filtres s'appliquent ensemble ; donnez au moins un
        de `nace`, `area`, `legal_form` ou `situation`. Par défaut, la liste
        contient les entreprises actives, y compris celles en faillite ou en
        dissolution. Les résultats sont gratuits.
      operationId: screenCompanies
      parameters:
        - name: nace
          in: query
          required: false
          description: >-
            Un code ou préfixe NACE-BEL, comme `56.1`. Répétez pour en donner
            plusieurs. Un préfixe de 4 chiffres ou moins vaut pour la version
            2008 et 2025.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - '56.1'
        - name: activity
          in: query
          required: false
          description: >-
            `main` (par défaut) ou `any`, qui ajoute les activités secondaires
            et auxiliaires.
          schema:
            type: string
            enum:
              - main
              - any
        - name: area
          in: query
          required: false
          description: >-
            Une commune, section, arrondissement, province, région, code postal
            ou code de zone. Répétez pour en donner plusieurs.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - Puurs-Sint-Amands
        - name: legal_form
          in: query
          required: false
          description: >-
            Un code BCE de forme juridique, comme `014`. Répétez pour en donner
            plusieurs.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: situation
          in: query
          required: false
          description: >-
            Une catégorie de situation juridique : `normal`, `insolvency`,
            `dissolution`, `merger_or_split` ou `ended`. Répétez pour en donner
            plusieurs.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: founded_after
          in: query
          required: false
          description: Fondée à cette date ou après.
          schema:
            type: string
            format: date
        - name: founded_before
          in: query
          required: false
          description: Fondée à cette date ou avant.
          schema:
            type: string
            format: date
        - name: include_inactive
          in: query
          required: false
          description: '`true` liste aussi les entreprises radiées.'
          schema:
            type: boolean
            default: false
        - name: sort_by
          in: query
          required: false
          description: >-
            `name` (par défaut), `oldest`, `newest`, ou un chiffre de `GET
            /v1/figures`, comme `employees`, `analysis.solvency` ou
            `growth3y.turnover`. Les entreprises sans valeur pour ce chiffre
            viennent en dernier.
          schema:
            type: string
            default: name
        - name: sort_order
          in: query
          required: false
          description: 'Pour un chiffre : `desc` (par défaut) ou `asc`.'
          schema:
            type: string
            enum:
              - desc
              - asc
            default: desc
        - name: min
          in: query
          required: false
          description: >-
            Garde les entreprises dont le dépôt le plus récent donne au moins
            cette valeur pour le chiffre, comme `min[equity]=1000000`. Une
            entreprise sans valeur ne passe pas. Un ratio est une fraction :
            `min[analysis.solvency]=0.5` vaut 50 %.
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: number
        - name: max
          in: query
          required: false
          description: >-
            Garde les entreprises dont le dépôt le plus récent donne au plus
            cette valeur pour le chiffre, comme
            `max[analysis.customerCreditDays]=30`.
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: number
        - name: include
          in: query
          required: false
          description: >-
            Un chiffre que chaque résultat montre aussi, comme `turnover`.
            Répétez pour plus. Chaque valeur coûte un crédit, et un résultat
            d'un filtrage qui utilise un chiffre 2 de plus.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: limit
          in: query
          required: false
          description: >-
            Combien d'entreprises renvoyer, de 1 à 50. Une valeur absente, nulle
            ou négative donne 20, une plus grande 50.
          schema:
            type: integer
            default: 20
        - name: offset
          in: query
          required: false
          description: Où la page commence. Prenez-le dans `nextOffset`.
          schema:
            type: integer
            default: 0
        - name: also_requested
          in: query
          required: false
          description: >-
            Une partie de la demande qu'aucun filtre ne couvre, comme `has a
            terrace`. Elle revient dans `unsupported`. Répétez pour en donner
            plusieurs.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
      responses:
        '200':
          description: >-
            Les entreprises qui correspondent, et ce que le filtre a fait de la
            demande.
          headers:
            X-Credits-Cost:
              $ref: '#/components/headers/X-Credits-Cost'
            X-Credits-Remaining:
              $ref: '#/components/headers/X-Credits-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Screen'
              example:
                matched: 68
                returned: 2
                hasMore: true
                nextOffset: 2
                sortedBy: name
                bySituation:
                  - category: normal
                    companies: 66
                  - category: insolvency
                    companies: 2
                resolvedArea:
                  zips:
                    - '2870'
                    - '2890'
                  items:
                    - input: Puurs-Sint-Amands
                      level: municipality
                      area:
                        code: '12041'
                        nl: Puurs-Sint-Amands
                        fr: Puurs-Sint-Amands
                      zips:
                        - '2870'
                        - '2890'
                      includes:
                        - Breendonk
                        - Liezele
                        - Lippelo
                        - Oppuurs
                        - Puurs
                        - Ruisbroek
                        - Sint-Amands
                nace:
                  - input: '56.1'
                    code: '56.1'
                    versions:
                      - NACE-BEL 2025
                      - NACE-BEL 2008
                    nl: Restaurants en mobiele eetgelegenheden
                    fr: Restaurants et services de restauration mobile
                    en: Restaurants and mobile food service activities
                unsupported:
                  - aspect: has a terrace
                    reason: >-
                      the screen cannot filter on this. Check it per company
                      with get_company, or say that it was not applied
                results:
                  - enterpriseNumber: BE0789990368
                    name: Den Amandus
                    zipCode: '2890'
                    municipality: Puurs-Sint-Amands
                    founded: '2022-03-01'
                    mainActivity:
                      code: '56.111'
                      version: NACE-BEL 2025
                      nl: Activiteiten van eetgelegenheden met volledige bediening
                    situation:
                      code: '000'
                      nl: Normale toestand
                      fr: Situation normale
                      en: Normal situation
                      category: normal
                  - enterpriseNumber: BE0863104614
                    name: PUURS LOF
                    zipCode: '2870'
                    municipality: Puurs-Sint-Amands
                    founded: '2004-01-30'
                    mainActivity:
                      code: '56.111'
                      version: NACE-BEL 2025
                      nl: Activiteiten van eetgelegenheden met volledige bediening
        '400':
          description: Aucun filtre `nace`, `area`, `legal_form` ou `situation`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilterRequired'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/Internal'
        '503':
          $ref: '#/components/responses/Busy'
components:
  headers:
    X-Credits-Cost:
      description: Ce que cette réponse a coûté, en crédits.
      schema:
        type: integer
    X-Credits-Remaining:
      description: Le solde après cette réponse.
      schema:
        type: integer
    Retry-After:
      description: Secondes à attendre avant de réessayer.
      schema:
        type: integer
  schemas:
    Screen:
      type: object
      description: >-
        Les entreprises qui correspondent, et ce que le filtre a fait de la
        demande.
      additionalProperties: false
      required:
        - matched
        - returned
        - hasMore
        - sortedBy
        - bySituation
        - unsupported
        - results
      properties:
        matched:
          type: integer
          description: >-
            Toutes les entreprises qui passent les filtres, pas seulement cette
            page.
        returned:
          type: integer
        hasMore:
          type: boolean
        nextOffset:
          type: integer
          description: L'offset de la page suivante, s'il y en a une.
        sortedBy:
          type: string
          description: >-
            `name`, `oldest`, `newest`, ou un chiffre et son ordre, comme
            `employees desc`.
        bounds:
          type: object
          additionalProperties:
            type: object
            additionalProperties: false
            properties:
              min:
                type: number
              max:
                type: number
          description: >-
            Les min et max que le filtrage a appliqués, par chiffre, comme
            `{"employees": {"min": 10}}`. Chaque borne coûte 5 crédits :
            `matched` y répond.
        bySituation:
          type: array
          items:
            $ref: '#/components/schemas/SituationCount'
          description: >-
            Les entreprises trouvées par catégorie de situation juridique, pour
            qu'une liste avec des faillites le dise.
        resolvedArea:
          $ref: '#/components/schemas/ResolvedArea'
        nace:
          type: array
          items:
            $ref: '#/components/schemas/NaceMatch'
        unsupported:
          type: array
          items:
            $ref: '#/components/schemas/Unsupported'
          description: >-
            Chaque partie de la demande que le filtre n'a pas appliquée, avec la
            raison.
        results:
          type: array
          items:
            $ref: '#/components/schemas/ScreenResult'
    FilterRequired:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - filter_required
    SituationCount:
      type: object
      description: Combien d'entreprises trouvées sont dans une catégorie.
      additionalProperties: false
      required:
        - category
        - companies
      properties:
        category:
          type: string
        companies:
          type: integer
    ResolvedArea:
      type: object
      description: Chaque zone résolue, et les codes postaux de toutes.
      additionalProperties: false
      required:
        - zips
        - items
      properties:
        zips:
          type: array
          items:
            type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/AreaMatch'
    NaceMatch:
      type: object
      description: Ce à quoi une entrée NACE correspond.
      additionalProperties: false
      required:
        - input
        - code
        - versions
      properties:
        input:
          type: string
        code:
          type: string
        versions:
          type: array
          items:
            type: string
          description: Les versions NACE-BEL qui ont des codes en dessous.
        nl:
          type: string
          description: >-
            La description BCE du code lui-même, en néerlandais. Absente pour un
            préfixe qui n'est pas un code BCE.
        fr:
          type: string
        en:
          type: string
        note:
          type: string
    Unsupported:
      type: object
      description: Une partie de la demande que le filtre n'a pas appliquée.
      additionalProperties: false
      required:
        - aspect
        - reason
      properties:
        aspect:
          type: string
        reason:
          type: string
    ScreenResult:
      type: object
      description: >-
        Une entreprise. Volontairement réduite : ouvrez-la avec `GET
        /v1/companies/{id}` pour le reste.
      additionalProperties: false
      required:
        - enterpriseNumber
        - name
      properties:
        enterpriseNumber:
          type: string
        name:
          type: string
        zipCode:
          type: string
        municipality:
          type: string
          description: Le nom Statbel de la commune, en néerlandais.
        founded:
          type: string
          format: date
        mainActivity:
          description: >-
            Le code principal qui correspond au filtre `nace`, ou le code
            principal le plus récent.
          allOf:
            - $ref: '#/components/schemas/ScreenActivity'
        juridicalForm:
          $ref: '#/components/schemas/KBOCode'
        situation:
          $ref: '#/components/schemas/KBOCode'
        figures:
          type: object
          additionalProperties:
            type: number
          description: >-
            Les valeurs les plus récentes des chiffres sur lesquels le filtrage
            a filtré ou trié, et de ceux de `include`, sous le nom de `GET
            /v1/figures`. Une croissance est une fraction : 0,2 vaut 20 %. Un
            chiffre sans valeur est omis. Chaque valeur coûte un crédit, et un
            résultat d'un filtrage qui utilise un chiffre 2 de plus.
        figuresClosingDate:
          type: string
          format: date
          description: La date de clôture du dépôt dont viennent les chiffres.
    Unauthorized:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - missing_token
            - invalid_token
    PaymentRequired:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - insufficient_credits
    RateLimited:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - rate_limited
    Internal:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - internal
    Busy:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - busy
    AreaMatch:
      type: object
      description: Ce à quoi une zone correspond.
      additionalProperties: false
      required:
        - input
        - zips
      properties:
        input:
          type: string
        level:
          type: string
          description: >-
            `municipality`, `sub_municipality`, `arrondissement`, `province`,
            `region` ou `zip`. Absent quand l'élément ne désigne aucune zone.
        area:
          $ref: '#/components/schemas/Area'
        zips:
          type: array
          items:
            type: string
        includes:
          type: array
          items:
            type: string
          description: Les localités de bpost dans `zips`.
        alternatives:
          type: array
          items:
            $ref: '#/components/schemas/AreaRef'
          description: >-
            Les autres zones du même nom. Envoyez le `code` de l'une, ou les
            `zips` d'une localité, pour la choisir.
        reason:
          type: string
          description: Pourquoi `zips` est vide, et quoi envoyer à la place.
    ScreenActivity:
      type: object
      description: Un code NACE avec la description BCE.
      additionalProperties: false
      required:
        - code
        - version
      properties:
        code:
          type: string
        version:
          type: string
        nl:
          type: string
        fr:
          type: string
        en:
          type: string
    KBOCode:
      type: object
      description: >-
        Un code de référence BCE avec la description propre au registre. La
        liste de codes de la BCE a le néerlandais et le français ; `en` est
        l'anglais d'OpenTheBox.
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          description: Le code BCE, le même que dans le champ `...Code` correspondant.
        nl:
          type: string
          description: >-
            La description de la BCE en néerlandais. Absente quand la liste de
            codes de la BCE ne contient pas le code.
        fr:
          type: string
          description: La description de la BCE en français.
        en:
          type: string
          description: >-
            Une description en anglais, d'OpenTheBox et non de la BCE : la BCE
            ne publie pas d'anglais. Citez `nl` ou `fr` quand le libellé
            officiel compte.
        text:
          type: string
          description: >-
            Les propres mots du fournisseur pour la forme juridique d'une
            entreprise enregistrée à l'étranger, comme `SARL`. Ce n'est pas un
            code BCE et il n'a pas de traduction ; `nl`, `fr` et `en` sont alors
            absents.
        category:
          type: string
          description: >-
            Uniquement sur `juridicalSituation` : `normal`, `dissolution`,
            `insolvency` (une procédure en cours), `merger_or_split` ou `ended`.
            Le regroupement est celui d'OpenTheBox, pas celui de la BCE.
    Area:
      type: object
      description: >-
        Une zone administrative belge, selon Statbel. Statbel ne publie pas
        d'anglais.
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          description: Le code INS de Statbel pour la zone.
        nl:
          type: string
          description: >-
            Le nom de Statbel en néerlandais, sans "Provincie" ou
            "Arrondissement".
        fr:
          type: string
          description: Le nom de Statbel en français.
    AreaRef:
      type: object
      description: Une zone possible. Une section porte aussi ses codes postaux.
      additionalProperties: false
      required:
        - level
        - code
      properties:
        level:
          type: string
        code:
          type: string
        nl:
          type: string
        fr:
          type: string
        zips:
          type: array
          items:
            type: string
          description: >-
            Uniquement pour une section : ses codes postaux, qui la désignent.
            Son code est celui de sa commune.
  responses:
    Unauthorized:
      description: >-
        Aucun jeton, ou un jeton non valide. `missing_token` sans en-tête
        `Authorization: Bearer`, `invalid_token` si le jeton est inconnu,
        révoqué ou du mauvais type.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    PaymentRequired:
      description: >-
        L'organisation n'a pas d'abonnement, son solde est vide, ou le solde ne
        couvre pas cette réponse. Si la réponse était trop chère, les en-têtes
        disent ce qu'elle aurait coûté et ce qui reste.
      headers:
        X-Credits-Cost:
          $ref: '#/components/headers/X-Credits-Cost'
        X-Credits-Remaining:
          $ref: '#/components/headers/X-Credits-Remaining'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaymentRequired'
    RateLimited:
      description: >-
        L'organisation dépasse sa limite (10 appels par seconde, pointes de 20).
        Réessayez après `Retry-After`.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimited'
    Internal:
      description: Une erreur s'est produite de notre côté.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Internal'
    Busy:
      description: >-
        Les données n'ont pas pu être lues en 15 secondes. Réessayez après
        `Retry-After`.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Busy'
  securitySchemes:
    token:
      type: http
      scheme: bearer
      description: Un jeton `otb_live_`, créé dans le tableau de bord OTB Studio.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.