> ## 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.

# Ondernemingen screenen

> Geeft een lijst van ondernemingen volgens wat ze doen en waar ze zijn. Elke filter is optioneel en de filters gelden samen; geef minstens een van `nace`, `area`, `legal_form` of `situation`. Standaard staan de actieve ondernemingen in de lijst, ook die in faillissement of ontbinding. De resultaten zijn gratis.



## OpenAPI

````yaml /api-reference/openapi.nl.json get /v1/companies/screen
openapi: 3.0.3
info:
  title: OTB Studio API
  version: 1.0.0
  description: >-
    Het Belgische ondernemingsregister via REST: zoeken, profielen, eigendom,
    neergelegde jaarrekeningen en mandaten. Elke route vraagt een
    `otb_live_`-token, en elk geleverd antwoord kost credits voor de datapunten
    die het bevat.
servers:
  - url: https://api.otbstudio.ai
security:
  - token: []
tags:
  - name: Companies
    description: Eén ondernemingsregister, op vijf manieren gelezen.
paths:
  /v1/companies/screen:
    get:
      tags:
        - Companies
      summary: Ondernemingen screenen
      description: >-
        Geeft een lijst van ondernemingen volgens wat ze doen en waar ze zijn.
        Elke filter is optioneel en de filters gelden samen; geef minstens een
        van `nace`, `area`, `legal_form` of `situation`. Standaard staan de
        actieve ondernemingen in de lijst, ook die in faillissement of
        ontbinding. De resultaten zijn gratis.
      operationId: screenCompanies
      parameters:
        - name: nace
          in: query
          required: false
          description: >-
            Een NACE-BEL-code of -prefix, zoals `56.1`. Herhaal voor meer. Een
            prefix van 4 cijfers of minder geldt voor de versie 2008 en 2025.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - '56.1'
        - name: activity
          in: query
          required: false
          description: >-
            `main` (standaard) of `any`, dat de neven- en hulpactiviteiten
            toevoegt.
          schema:
            type: string
            enum:
              - main
              - any
        - name: area
          in: query
          required: false
          description: >-
            Een gemeente, deelgemeente, arrondissement, provincie, gewest,
            postcode of gebiedscode. Herhaal voor meer.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
          example:
            - Puurs-Sint-Amands
        - name: legal_form
          in: query
          required: false
          description: Een KBO-code voor de rechtsvorm, zoals `014`. Herhaal voor meer.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: situation
          in: query
          required: false
          description: >-
            Een categorie van de juridische toestand: `normal`, `insolvency`,
            `dissolution`, `merger_or_split` of `ended`. Herhaal voor meer.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
        - name: founded_after
          in: query
          required: false
          description: Opgericht op of na deze datum.
          schema:
            type: string
            format: date
        - name: founded_before
          in: query
          required: false
          description: Opgericht op of voor deze datum.
          schema:
            type: string
            format: date
        - name: include_inactive
          in: query
          required: false
          description: '`true` toont ook de geschrapte ondernemingen.'
          schema:
            type: boolean
            default: false
        - name: sort_by
          in: query
          required: false
          description: >-
            `name` (de standaard), `oldest`, `newest`, of een cijfer uit `GET
            /v1/figures`, zoals `employees`, `analysis.solvency` of
            `growth3y.turnover`. Bedrijven zonder waarde voor het cijfer komen
            laatst.
          schema:
            type: string
            default: name
        - name: sort_order
          in: query
          required: false
          description: 'Voor een cijfer: `desc` (de standaard) of `asc`.'
          schema:
            type: string
            enum:
              - desc
              - asc
            default: desc
        - name: min
          in: query
          required: false
          description: >-
            Houd de bedrijven waarvan de nieuwste neerlegging het cijfer
            minstens deze waarde geeft, zoals `min[equity]=1000000`. Een bedrijf
            zonder waarde valt weg. Een verhouding is een breuk:
            `min[analysis.solvency]=0.5` is 50%.
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: number
        - name: max
          in: query
          required: false
          description: >-
            Houd de bedrijven waarvan de nieuwste neerlegging het cijfer
            hoogstens deze waarde geeft, zoals
            `max[analysis.customerCreditDays]=30`.
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: number
        - name: include
          in: query
          required: false
          description: >-
            Een cijfer dat elk resultaat ook toont, zoals `turnover`. Herhaal
            voor meer. Elke waarde kost een credit, en een resultaat van een
            screening die een cijfer gebruikt 2 meer.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: limit
          in: query
          required: false
          description: >-
            Hoeveel ondernemingen terug te geven, 1 tot 50. Een ontbrekende,
            nul- of negatieve waarde geeft 20, een grotere 50.
          schema:
            type: integer
            default: 20
        - name: offset
          in: query
          required: false
          description: Waar de pagina begint. Neem het uit `nextOffset`.
          schema:
            type: integer
            default: 0
        - name: also_requested
          in: query
          required: false
          description: >-
            Een deel van de vraag dat geen filter dekt, zoals `has a terrace`.
            Het komt terug in `unsupported`. Herhaal voor meer.
          schema:
            type: array
            items:
              type: string
          style: form
          explode: true
      responses:
        '200':
          description: De ondernemingen die voldoen, en wat de screening met de vraag deed.
          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: Geen filter `nace`, `area`, `legal_form` of `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: Wat dit antwoord kostte, in credits.
      schema:
        type: integer
    X-Credits-Remaining:
      description: Het saldo na dit antwoord.
      schema:
        type: integer
    Retry-After:
      description: Seconden wachten voor een nieuwe poging.
      schema:
        type: integer
  schemas:
    Screen:
      type: object
      description: De ondernemingen die voldoen, en wat de screening met de vraag deed.
      additionalProperties: false
      required:
        - matched
        - returned
        - hasMore
        - sortedBy
        - bySituation
        - unsupported
        - results
      properties:
        matched:
          type: integer
          description: Elke onderneming die door de filters komt, niet alleen deze pagina.
        returned:
          type: integer
        hasMore:
          type: boolean
        nextOffset:
          type: integer
          description: De offset van de volgende pagina, als die er is.
        sortedBy:
          type: string
          description: >-
            `name`, `oldest`, `newest`, of een cijfer en zijn volgorde, zoals
            `employees desc`.
        bounds:
          type: object
          additionalProperties:
            type: object
            additionalProperties: false
            properties:
              min:
                type: number
              max:
                type: number
          description: >-
            De min en max die de screening toepaste, per cijfer, zoals
            `{"employees": {"min": 10}}`. Elke grens kost 5 credits: `matched`
            beantwoordt ze.
        bySituation:
          type: array
          items:
            $ref: '#/components/schemas/SituationCount'
          description: >-
            De gevonden ondernemingen per categorie van juridische toestand,
            zodat een lijst met faillissementen dat zegt.
        resolvedArea:
          $ref: '#/components/schemas/ResolvedArea'
        nace:
          type: array
          items:
            $ref: '#/components/schemas/NaceMatch'
        unsupported:
          type: array
          items:
            $ref: '#/components/schemas/Unsupported'
          description: Elk deel van de vraag dat de screening niet toepaste, met de reden.
        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: Hoeveel gevonden ondernemingen in een categorie vallen.
      additionalProperties: false
      required:
        - category
        - companies
      properties:
        category:
          type: string
        companies:
          type: integer
    ResolvedArea:
      type: object
      description: Elk gebied opgezocht, en de postcodes van allemaal.
      additionalProperties: false
      required:
        - zips
        - items
      properties:
        zips:
          type: array
          items:
            type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/AreaMatch'
    NaceMatch:
      type: object
      description: Waarmee een NACE-invoer overeenkomt.
      additionalProperties: false
      required:
        - input
        - code
        - versions
      properties:
        input:
          type: string
        code:
          type: string
        versions:
          type: array
          items:
            type: string
          description: De NACE-BEL-versies met codes eronder.
        nl:
          type: string
          description: >-
            De omschrijving van de KBO van de code zelf, in het Nederlands.
            Afwezig voor een prefix die geen KBO-code is.
        fr:
          type: string
        en:
          type: string
        note:
          type: string
    Unsupported:
      type: object
      description: Een deel van de vraag dat de screening niet toepaste.
      additionalProperties: false
      required:
        - aspect
        - reason
      properties:
        aspect:
          type: string
        reason:
          type: string
    ScreenResult:
      type: object
      description: >-
        Een onderneming. Bewust beperkt: open ze met `GET /v1/companies/{id}`
        voor de rest.
      additionalProperties: false
      required:
        - enterpriseNumber
        - name
      properties:
        enterpriseNumber:
          type: string
        name:
          type: string
        zipCode:
          type: string
        municipality:
          type: string
          description: De naam van de gemeente bij Statbel, in het Nederlands.
        founded:
          type: string
          format: date
        mainActivity:
          description: >-
            De hoofdcode die met de filter `nace` overeenkomt, of de nieuwste
            hoofdcode.
          allOf:
            - $ref: '#/components/schemas/ScreenActivity'
        juridicalForm:
          $ref: '#/components/schemas/KBOCode'
        situation:
          $ref: '#/components/schemas/KBOCode'
        figures:
          type: object
          additionalProperties:
            type: number
          description: >-
            De nieuwste waarden van de cijfers waarop de screening filterde of
            sorteerde, en van die in `include`, onder de naam uit `GET
            /v1/figures`. Een groei is een breuk: 0,2 is 20%. Een cijfer zonder
            waarde ontbreekt. Elke waarde kost een credit, en een resultaat van
            een screening die een cijfer gebruikt 2 meer.
        figuresClosingDate:
          type: string
          format: date
          description: De afsluitingsdatum van de neerlegging waar de cijfers uit komen.
    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: Waarnaar een gebied verwijst.
      additionalProperties: false
      required:
        - input
        - zips
      properties:
        input:
          type: string
        level:
          type: string
          description: >-
            `municipality`, `sub_municipality`, `arrondissement`, `province`,
            `region` of `zip`. Afwezig als het geen gebied aanwijst.
        area:
          $ref: '#/components/schemas/Area'
        zips:
          type: array
          items:
            type: string
        includes:
          type: array
          items:
            type: string
          description: De plaatsnamen van bpost in `zips`.
        alternatives:
          type: array
          items:
            $ref: '#/components/schemas/AreaRef'
          description: >-
            De andere gebieden met dezelfde naam. Stuur de `code` van een ervan,
            of de `zips` van een plaats, om het te kiezen.
        reason:
          type: string
          description: Waarom `zips` leeg is, en wat u in de plaats stuurt.
    ScreenActivity:
      type: object
      description: Een NACE-code met de omschrijving van de KBO.
      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: >-
        Een KBO-referentiecode met de eigen omschrijving van het register. De
        codelijst van de KBO heeft Nederlands en Frans; `en` is het Engels van
        OpenTheBox.
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          description: De KBO-code, dezelfde als in het overeenkomstige `...Code`-veld.
        nl:
          type: string
          description: >-
            De omschrijving van de KBO in het Nederlands. Ontbreekt wanneer de
            codelijst van de KBO de code niet bevat.
        fr:
          type: string
          description: De omschrijving van de KBO in het Frans.
        en:
          type: string
          description: >-
            Een Engelse omschrijving, van OpenTheBox, niet van de KBO: de KBO
            publiceert geen Engels. Citeer `nl` of `fr` wanneer de officiële
            bewoording telt.
        text:
          type: string
          description: >-
            De eigen woorden van de leverancier voor de rechtsvorm van een in
            het buitenland geregistreerde onderneming, zoals `SARL`. Het is geen
            KBO-code en heeft geen vertaling; `nl`, `fr` en `en` ontbreken dan.
        category:
          type: string
          description: >-
            Alleen bij `juridicalSituation`: `normal`, `dissolution`,
            `insolvency` (een procedure die nu loopt), `merger_or_split` of
            `ended`. De indeling is van OpenTheBox, niet van de KBO.
    Area:
      type: object
      description: >-
        Een Belgisch administratief gebied, van Statbel. Statbel publiceert geen
        Engels.
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          description: De NIS-code van Statbel voor het gebied.
        nl:
          type: string
          description: >-
            De naam van Statbel in het Nederlands, zonder "Provincie" of
            "Arrondissement".
        fr:
          type: string
          description: De naam van Statbel in het Frans.
    AreaRef:
      type: object
      description: Een mogelijk gebied. Een deelgemeente heeft ook haar postcodes.
      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: >-
            Alleen bij een deelgemeente: haar postcodes, die haar kiezen. Haar
            code is die van haar gemeente.
  responses:
    Unauthorized:
      description: >-
        Geen token, of een ongeldig token. `missing_token` als er geen
        `Authorization: Bearer`-header is, `invalid_token` als het token
        onbekend, ingetrokken of van de verkeerde soort is.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    PaymentRequired:
      description: >-
        De organisatie heeft geen abonnement, het saldo is leeg, of het saldo
        dekt dit antwoord niet. Als het antwoord te duur was, zeggen de headers
        wat het zou kosten en wat er overblijft.
      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: >-
        De organisatie zit boven haar limiet (10 oproepen per seconde, pieken
        van 20). Probeer opnieuw na `Retry-After`.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimited'
    Internal:
      description: Er ging iets mis aan onze kant.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Internal'
    Busy:
      description: >-
        De gegevens konden niet binnen 15 seconden worden gelezen. Probeer
        opnieuw na `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: Een `otb_live_`-token, aangemaakt in het OTB Studio-dashboard.

````

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