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

# Search companies

> Finds companies by name. A match is deliberately thin: pick the one you mean and fetch its profile by enterprise number. Legal, commercial, Dutch and French names are all searched.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/companies
openapi: 3.0.3
info:
  title: OTB Studio API
  version: 1.0.0
  description: >-
    The Belgian company register over REST: search, profiles, ownership, filed
    financials and mandates. Every route needs an `otb_live_` token, and every
    served reply is charged in credits for the datapoints it carries.
servers:
  - url: https://api.otbstudio.ai
security:
  - token: []
tags:
  - name: Companies
    description: One company register, read five ways.
paths:
  /v1/companies:
    get:
      tags:
        - Companies
      summary: Search companies
      description: >-
        Finds companies by name. A match is deliberately thin: pick the one you
        mean and fetch its profile by enterprise number. Legal, commercial,
        Dutch and French names are all searched.
      operationId: searchCompanies
      parameters:
        - name: q
          in: query
          required: true
          description: The name to search for.
          schema:
            type: string
          example: noordkaap
        - name: limit
          in: query
          required: false
          description: >-
            How many matches to return, 1 to 25. A missing, zero, negative or
            larger value gives 10.
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: The matches, best first. An empty list when nothing matched.
          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/SearchReply'
              example:
                companies:
                  - enterpriseNumber: BE0734567835
                    name: Noordkaap Warehousing
                    employees: 214
                    statusCode: AC
                  - enterpriseNumber: BE0712345630
                    name: Noordkaap Logistics
                    employees: 187
                    statusCode: AC
        '400':
          description: '`q` is missing or blank.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryRequired'
        '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: What this reply cost, in credits.
      schema:
        type: integer
    X-Credits-Remaining:
      description: The balance after this reply.
      schema:
        type: integer
    Retry-After:
      description: Seconds to wait before trying again.
      schema:
        type: integer
  schemas:
    SearchReply:
      type: object
      additionalProperties: false
      required:
        - companies
      properties:
        companies:
          type: array
          items:
            $ref: '#/components/schemas/Match'
    QueryRequired:
      type: object
      additionalProperties: false
      required:
        - code
      properties:
        code:
          type: string
          enum:
            - query_required
    Match:
      type: object
      additionalProperties: false
      required:
        - enterpriseNumber
        - name
      properties:
        enterpriseNumber:
          type: string
          description: The key for every other route.
        name:
          type: string
          description: >-
            The name that matched, which is not always the one you know the
            company by.
        employees:
          type: number
          description: >-
            Average full-time equivalents over the newest accounting period, not
            headcount. It is not a whole number.
        statusCode:
          type: string
          description: The raw KBO/BCE status code, such as `AC` for active.
    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
  responses:
    Unauthorized:
      description: >-
        No token, or a token that is not valid. `missing_token` when there is no
        `Authorization: Bearer` header, `invalid_token` when the token is
        unknown, revoked or of the wrong kind.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    PaymentRequired:
      description: >-
        The organisation has no plan, its balance is empty, or the balance does
        not cover this reply. When the reply was too expensive, the headers say
        what it would have cost and what is left.
      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: >-
        The organisation is over its rate (10 calls a second, bursts of 20) or
        has 4 calls running. Retry after `Retry-After`.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimited'
    Internal:
      description: Something failed on our side.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Internal'
    Busy:
      description: The data could not be read within 15 seconds. Retry after `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: An `otb_live_` token, minted in the OTB Studio dashboard.

````

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