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

# Pesquisar empresas

> CNPJ completo válido realiza pesquisa exata. Outros termos pesquisam empresas pelo nome parcial, com até 10 resultados. A tarifa da pesquisa por nome considera o limite solicitado.



## OpenAPI

````yaml /api-reference/openapi.json post /v3/queries/search_companies
openapi: 3.1.2
info:
  title: API Base39
  version: 3.0.0
  description: >-
    Contratos canônicos Base39 compartilhados entre API e MCP. Campos de negócio
    em snake_case. Valores financeiros em centavos de BRL; montantes de dados
    consultados são textos decimais que preservam a precisão informada. Datas
    cadastrais usam YYYY-MM-DD. As consultas podem debitar o saldo; a repetição
    equivalente na organização é gratuita até meia-noite de São Paulo. O extrato
    informa o consumo. Campos ausentes não significam zero nem aprovação de
    crédito.
servers:
  - url: https://mcp.base39.com.br
    description: API pública Base39, independente do caminho do protocolo MCP.
security:
  - bearer_auth: []
tags:
  - name: Consultas
    description: Consultas canônicas de dados.
  - name: Modelos de relatórios
    description: Modelos de relatório e seus recursos na organização autenticada.
  - name: Saldo e pagamentos
    description: Saldo e extrato da organização autenticada.
paths:
  /v3/queries/search_companies:
    post:
      tags:
        - Consultas
      summary: Pesquisar empresas
      description: >-
        CNPJ completo válido realiza pesquisa exata. Outros termos pesquisam
        empresas pelo nome parcial, com até 10 resultados. A tarifa da pesquisa
        por nome considera o limite solicitado.
      operationId: search_companies
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/search_companies_request'
            examples:
              requisicao:
                summary: Parâmetros da consulta.
                value:
                  query: Empresa Exemplo
                  limit: 1
      responses:
        '200':
          description: >-
            Objeto ou coleção Base39; coleções integrais não possuem
            next_cursor.
          headers:
            Request-Id:
              description: Identificador da requisição para suporte e rastreamento.
              schema:
                type: string
              example: req_example
            Cache-Control:
              description: >-
                As respostas autenticadas não devem ser armazenadas por serviços
                HTTP compartilhados.
              schema:
                type: string
                const: no-store
              example: no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/search_companies_response'
              examples:
                resposta:
                  summary: Exemplo de resposta Base39.
                  value:
                    object: list
                    data:
                      - id: company_0377931857f4ef8e5876e4aa
                        object: company
                        document: '00000000000191'
                        legal_name: Empresa Exemplo Ltda
                        trade_name: Empresa Exemplo Ltda
                        registration_status: ATIVA
                        founded_at: '2026-08-27'
                        legal_nature: SOCIEDADE EMPRESARIA LIMITADA
                        capital: '30000.00'
        '400':
          $ref: '#/components/responses/error_400'
        '401':
          $ref: '#/components/responses/error_401'
        '402':
          $ref: '#/components/responses/error_402'
        '403':
          $ref: '#/components/responses/error_403'
        '404':
          $ref: '#/components/responses/error_404'
        '405':
          $ref: '#/components/responses/error_405'
        '409':
          $ref: '#/components/responses/error_409'
        '413':
          $ref: '#/components/responses/error_413'
        '415':
          $ref: '#/components/responses/error_415'
        '422':
          $ref: '#/components/responses/error_422'
        '425':
          $ref: '#/components/responses/error_425'
        '502':
          $ref: '#/components/responses/error_502'
        '503':
          $ref: '#/components/responses/error_503'
        '504':
          $ref: '#/components/responses/error_504'
components:
  schemas:
    search_companies_request:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        query:
          type: string
          minLength: 3
          maxLength: 160
          pattern: ^[^{}[\],]*$
          title: CNPJ ou nome
          description: >-
            CNPJ completo para pesquisa exata ou nome parcial de empresa para
            pesquisa por nome.
        limit:
          default: 10
          title: Limite
          description: >-
            Número máximo de resultados, de 1 a 10; na pesquisa por nome,
            determina a tarifa solicitada.
          type: integer
          minimum: 1
          maximum: 10
      required:
        - query
      additionalProperties: false
    search_companies_response:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        object:
          type: string
          const: list
          description: Coleção de objetos Base39.
        data:
          type: array
          items:
            $ref: '#/components/schemas/get_company_response'
          description: Objetos da coleção.
        next_cursor:
          description: Cursor opaco da próxima página; ausente ao final.
          type: string
      required:
        - object
        - data
      additionalProperties: false
    get_company_response:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        id:
          type: string
          minLength: 1
          description: Identificador opaco e estável do objeto Base39.
        object:
          type: string
          const: company
          description: 'Tipo do objeto: empresa.'
        document:
          type: string
          minLength: 1
          description: CPF ou CNPJ informado pela fonte; pode estar mascarado.
        legal_name:
          type: string
          minLength: 1
          description: Razão social.
        trade_name:
          type: string
          description: Nome fantasia.
        registration_status:
          type: string
          description: Situação cadastral, preservada conforme a fonte.
        status_date:
          type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
          description: Data da situação cadastral, em YYYY-MM-DD.
        founded_at:
          type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
          description: Data de abertura, em YYYY-MM-DD.
        legal_nature:
          type: string
          description: Natureza jurídica.
        size:
          type: string
          description: Porte da empresa.
        capital:
          type: string
          pattern: ^-?\d+(?:\.\d+)?$
          description: >-
            Capital social em reais, como texto decimal, preservando a precisão
            informada.
        main_activity:
          type: string
          description: Atividade econômica principal.
        address:
          description: Endereço cadastral, quando informado.
          type: object
          properties:
            street:
              type: string
              description: Logradouro.
            street_type:
              type: string
              description: Tipo de logradouro.
            number:
              type: string
              description: Número do endereço.
            complement:
              type: string
              description: Complemento do endereço.
            neighborhood:
              type: string
              description: Bairro.
            postal_code:
              type: string
              description: Código postal.
            city:
              type: string
              description: Município.
            state:
              type: string
              description: Unidade federativa.
            country:
              type: string
              description: País informado pela fonte.
            active:
              type: boolean
              description: Indica se o endereço está ativo na fonte.
          additionalProperties: false
      required:
        - id
        - object
        - document
        - legal_name
      additionalProperties: false
    error:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - invalid_request_error
                - authentication_error
                - permission_error
                - balance_error
                - api_error
              description: Categoria estável da falha.
            code:
              type: string
              pattern: ^[a-z][a-z0-9_]*$
              description: Código estável da falha para tratamento pela aplicação.
            message:
              type: string
              description: Descrição da falha em português brasileiro.
            param:
              description: Parâmetro relacionado à falha, quando aplicável.
              type: string
          required:
            - type
            - code
            - message
          additionalProperties: false
          description: Falha que impediu a operação.
      required:
        - error
      additionalProperties: false
  responses:
    error_400:
      description: Parâmetros inválidos.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Parâmetros inválidos.
              value:
                error:
                  type: invalid_request_error
                  code: invalid_request
                  message: Revise os parâmetros da requisição.
    error_401:
      description: Autenticação ausente ou inválida.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Autenticação ausente ou inválida.
              value:
                error:
                  type: authentication_error
                  code: unauthorized
                  message: Autenticação necessária.
    error_402:
      description: Saldo insuficiente para a consulta.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Saldo insuficiente para a consulta.
              value:
                error:
                  type: balance_error
                  code: insufficient_balance
                  message: Saldo insuficiente para realizar a consulta.
    error_403:
      description: Acesso não permitido.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Acesso não permitido.
              value:
                error:
                  type: permission_error
                  code: forbidden
                  message: Acesso não permitido.
    error_404:
      description: Operação ou resultado não encontrado.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Operação ou resultado não encontrado.
              value:
                error:
                  type: invalid_request_error
                  code: resource_not_found
                  message: Nenhum registro encontrado.
    error_405:
      description: Método HTTP não permitido.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Método HTTP não permitido.
              value:
                error:
                  type: invalid_request_error
                  code: method_not_allowed
                  message: Método HTTP não permitido para esta operação.
    error_409:
      description: Consulta equivalente em andamento.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
        Retry-After:
          description: Tempo em segundos antes de uma nova tentativa.
          schema:
            type: integer
            minimum: 1
          example: 2
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Consulta equivalente em andamento.
              value:
                error:
                  type: invalid_request_error
                  code: query_in_progress
                  message: Uma consulta equivalente está em andamento.
    error_413:
      description: Corpo da requisição acima do limite permitido para a operação.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Corpo da requisição acima do limite permitido para a operação.
              value:
                error:
                  type: invalid_request_error
                  code: request_too_large
                  message: A requisição excedeu o limite permitido.
    error_415:
      description: O corpo deve usar application/json.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: O corpo deve usar application/json.
              value:
                error:
                  type: invalid_request_error
                  code: unsupported_media_type
                  message: Envie o corpo como application/json.
    error_422:
      description: Integração ou parâmetros específicos indisponíveis.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Integração ou parâmetros específicos indisponíveis.
              value:
                error:
                  type: invalid_request_error
                  code: integration_not_configured
                  message: A integração necessária não está configurada na organização.
    error_425:
      description: Resultado temporariamente indisponível para leitura.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
        Retry-After:
          description: Tempo em segundos antes de uma nova tentativa.
          schema:
            type: integer
            minimum: 1
          example: 2
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Resultado temporariamente indisponível para leitura.
              value:
                error:
                  type: invalid_request_error
                  code: cache_propagating
                  message: O resultado está sendo disponibilizado. Tente novamente.
    error_502:
      description: Resposta inválida ao executar a consulta.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Resposta inválida ao executar a consulta.
              value:
                error:
                  type: api_error
                  code: query_unavailable
                  message: Não foi possível concluir a consulta.
    error_503:
      description: Serviço temporariamente indisponível.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
        Retry-After:
          description: Tempo em segundos antes de uma nova tentativa.
          schema:
            type: integer
            minimum: 1
          example: 2
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Serviço temporariamente indisponível.
              value:
                error:
                  type: api_error
                  code: query_unavailable
                  message: Não foi possível concluir a consulta.
    error_504:
      description: Prazo de execução excedido.
      headers:
        Request-Id:
          description: Identificador da requisição para suporte e rastreamento.
          schema:
            type: string
          example: req_example
        Cache-Control:
          description: >-
            As respostas autenticadas não devem ser armazenadas por serviços
            HTTP compartilhados.
          schema:
            type: string
            const: no-store
          example: no-store
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            erro:
              summary: Prazo de execução excedido.
              value:
                error:
                  type: api_error
                  code: query_timeout
                  message: A consulta excedeu o prazo de execução.
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      description: >-
        Credencial OAuth da Base39 com os escopos profile e user:org:read, ou
        chave de API pertencente à organização. A organização e o autor são
        obtidos da autenticação.

````

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