Indicadores Argentina Empresas API

The Empresas API from Indicadores Argentina — 1 operation(s) for empresas.

GitHub OpenAPI

Operations 1

POST /empresas La ficha de hasta 100 empresas por pedido #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/indicadores-ar:indicadores-ar-empresas-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

indicadores-ar-empresas-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Indicadores Ar Empresas API
  version: '1.1'
  contact:
    email: contacto@indicadores.ar
    url: https://indicadores.ar/api-empresas
  description: 'Operations tagged Empresas across 2 of this provider''s published API definitions: indicadores-ar-openapi.json, openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://indicadores.ar/v1
security:
- apiKey: []
tags:
- name: Empresas
paths:
  /empresas:
    post:
      operationId: fichasDeEmpresasEnLote
      summary: La ficha de hasta 100 empresas por pedido
      description: 'Hasta 100 CUITs por pedido, en JSON (`cuits`) o en CSV (el archivo tal cual, con `content-type: text/csv`). Cada CUIT recibe la MISMA ficha de `/v1/empresa`, con los mismos `campos` y `directorio_al`, y un estado propio: un CUIT que no existe o que no cierra el verificador no corta el lote. Se cobra por CUIT entregado, como si se hubiera pedido de a uno: la base de la ficha más los campos que volvieron con dato. Lo que no se entrega no se cobra, y una consulta repetida de un CUIT tampoco. Con `formato=csv` vuelve una planilla para Excel o para un ERP. Un lote por cuenta a la vez.


        Costo: 1 crédito por CUIT entregado, más los campos adicionales que vuelven con dato (empleados +1, geo +1, beneficiarios +2, estados_contables +2, situacion_historica +1, paritarias +1, score +5, balances_cnv +1, presentaciones_igj +1, registros +1, juicios +1).'
      parameters:
      - name: campos
        in: query
        description: 'Los mismos campos adicionales de `/v1/empresa`, separados por coma, para todas las fichas del lote: empleados (+1), geo (+1), beneficiarios (+2), estados_contables (+2), situacion_historica (+1), paritarias (+1), score (+5), balances_cnv (+1), presentaciones_igj (+1), registros (+1), juicios (+1). También pueden ir en el cuerpo JSON.'
        schema:
          type: string
      - name: directorio_al
        in: query
        description: 'Igual que en `/v1/empresa`: un día AAAA-MM-DD para saber quiénes administraban cada sociedad ese día, sin costo extra. Un día inválido es un 400 que no se cobra.'
        schema:
          type: string
      - name: formato
        in: query
        description: '`json` (por defecto) o `csv`: una planilla con un renglón por CUIT y las columnas que entran en una celda, lista para Excel o para importar en un ERP. También se pide con el header `accept: text/csv`. En CSV sólo se aceptan los `campos` que tienen columna (empleados, geo, score); otro es un 400 `campo_sin_columna_en_csv`, porque se cobraría sin entregarse.'
        schema:
          type: string
          enum:
          - json
          - csv
      - name: separador
        in: query
        description: 'Sólo con `formato=csv`: `;` (por defecto, el que Excel abre en castellano con doble click, con coma decimal) o `,` (con punto decimal).'
        schema:
          type: string
          enum:
          - ;
          - ','
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                cuits:
                  type: array
                  items:
                    type: string
                  description: Hasta 100 CUITs, con o sin guiones. Los repetidos vuelven una vez.
                campos:
                  type: string
                  description: Como el parámetro de la URL; si van los dos, manda el del cuerpo.
                directorio_al:
                  type: string
                  format: date
                  description: Como el parámetro de la URL.
          text/csv:
            schema:
              type: string
              description: 'Hasta 100 CUITs: un CUIT por renglón, o un CSV con una columna `cuit` (separado por coma, punto y coma o tabulador).'
      responses:
        '200':
          description: Un resultado por CUIT. Con formato=csv, la planilla.
          headers:
            x-creditos-cobrados:
              description: Lo que costó el lote (la suma por CUIT).
              schema:
                type: integer
            x-creditos-restantes:
              description: El saldo.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  resumen:
                    type: object
                    properties:
                      pedidos:
                        type: integer
                        description: CUITs distintos del pedido.
                      ok:
                        type: integer
                      no_encontrada:
                        type: integer
                      cuit_invalido:
                        type: integer
                      padron_no_disponible:
                        type: integer
                      creditos_insuficientes:
                        type: integer
                      sin_procesar:
                        type: integer
                      creditos_cobrados:
                        type: integer
                        description: La suma de lo cobrado por CUIT.
                    description: Cuántos CUITs hubo de cada estado y cuánto costó el lote.
                  resultados:
                    type: array
                    items:
                      type: object
                      properties:
                        entrada:
                          type: string
                          description: Lo que llegó, tal cual.
                        cuit:
                          type:
                          - string
                          - 'null'
                          description: Los 11 dígitos; null si la entrada no es un CUIT.
                        estado:
                          type: string
                          enum:
                          - ok
                          - no_encontrada
                          - cuit_invalido
                          - padron_no_disponible
                          - creditos_insuficientes
                          - sin_procesar
                          description: '`ok` (la ficha viaja en `ficha`), `no_encontrada`, `cuit_invalido`, `padron_no_disponible` (no está en nuestro padrón y el fiscal no contestó a tiempo: reintentar), `creditos_insuficientes` (el saldo no alcanzó para este CUIT; se lee a lo sumo lo que paga el saldo y las consultas repetidas, que salen gratis) o `sin_procesar` (el lote no llegó a este CUIT: reintentar). Sólo `ok` se cobra.'
                        motivo:
                          type:
                          - string
                          - 'null'
                          enum:
                          - formato_invalido
                          - digito_verificador
                          - tiempo_del_lote
                          - consulta_demorada
                          - error_interno
                          - null
                          description: 'En `cuit_invalido`: `formato_invalido` (no son 11 dígitos) o `digito_verificador` (no cierra: ese CUIT no existe). En `sin_procesar`: `tiempo_del_lote` (el lote usó su tiempo antes de llegar), `consulta_demorada` o `error_interno`. Null en el resto.'
                        creditos_cobrados:
                          type: integer
                          description: 'Lo que costó esa ficha: la base y los campos que volvieron con dato. 0 si no se entregó o si es una consulta repetida.'
                        campos_sin_cargo:
                          type: array
                          items:
                            type: string
                          description: Los campos pedidos que volvieron vacíos y no se cobraron.
                        consulta_repetida:
                          type: boolean
                          description: 'true si la misma consulta de ese CUIT (mismos campos y `directorio_al`) ya se cobró hace poco por REST, por el lote o por /v1/empresa: no se vuelve a cobrar.'
                        ficha:
                          type:
                          - object
                          - 'null'
                          description: La respuesta de `/v1/empresa` para ese CUIT, idéntica (también la de persona si el CUIT es de una persona). Null salvo en `ok`.
                    description: Un renglón por CUIT, en el orden del pedido.
                  creditos_restantes:
                    type: integer
                    description: El saldo después del lote.
                  consultado_el:
                    type: string
                    format: date-time
            text/csv:
              schema:
                type: string
        '400':
          description: cuits_requeridos, demasiados_cuits (con el máximo), campo_invalido, campo_sin_columna_en_csv (un campo que la planilla no trae, con los que sí), directorio_al_invalido, formato_invalido o separador_invalido. No se cobra.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          $ref: '#/components/responses/NoAutorizado'
        '402':
          description: 'creditos_insuficientes: el saldo no alcanza ni para una ficha y ninguna es una consulta repetida.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '413':
          description: 'pedido_demasiado_grande: el cuerpo pasa el tamaño máximo.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: limite_de_requests_excedido, lote_en_curso (la cuenta ya tiene un lote corriendo) o limite_diario_autoservicio_excedido (con cupo_diario y cuits_que_entran_hoy).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          $ref: '#/components/responses/ErrorInterno'
        '503':
          $ref: '#/components/responses/NoDisponible'
      tags:
      - Empresas
    servers:
    - url: https://indicadores.ar/v1
components:
  responses:
    ErrorInterno:
      description: error_interno. Reintentar; no se cobra.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NoDisponible:
      description: servicio_no_disponible (transitorio, con Retry-After) o padron_no_disponible (el CUIT no está en nuestro padrón y el padrón fiscal no respondió a tiempo) o consulta_demorada (la búsqueda superó su tope de tiempo). Reintentar; no se cobra.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NoAutorizado:
      description: api_key_faltante, api_key_malformada (la key llegó cortada o con otro formato) o api_key_invalida (no existe o fue revocada).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
  securitySchemes:
    apiKey:
      type: apiKey
      name: api-key
      in: header
      description: API key creada en https://indicadores.ar/api-empresas
x-refined-from:
- indicadores-ar-openapi.json
- openapi.json