Reportada
"revenue": {
"value": 41315000000,
"origin": "reported",
"fact_id": "f_7d21…",
"concept": "I1010"
}
Apunta al hecho exacto del documento. Se puede abrir el XBRL y verlo.
API HTTP · registros oficiales de la CNMV
Diez ejercicios de cuentas anuales de las cotizadas españolas, servidos por HTTP desde el XBRL que cada emisor deposita por ley ante el regulador. Ingresos, EBITDA, deuda, EPS, flujo de explotación, capex y dividendos — cada cifra con su procedencia dentro.
Peticiones de verdad, desde tu navegador, contra este mismo despliegue.
// Elige un recurso y pulsa Lanzar.
// Si el servicio aún no tiene emisores cargados responderá
// issuer_not_ingested — y eso también es una respuesta honesta.
Una cifra no puede existir sin decir de dónde sale. O apunta al hecho del que salió, o declara la fórmula, o dice por qué está vacía.
"revenue": {
"value": 41315000000,
"origin": "reported",
"fact_id": "f_7d21…",
"concept": "I1010"
}
Apunta al hecho exacto del documento. Se puede abrir el XBRL y verlo.
"gross_profit": {
"value": null,
"reason": "no_existe_en_taxonomia"
}
Lista cerrada: no_existe_en_taxonomia, no_reportado,
no_aplica_al_emisor, error_de_parseo. Un parser
roto y una cifra que España no publica no son el mismo hueco.
"ebitda": {
"value": 13100000000,
"origin": "derived",
"formula": "operating_income
+ d_and_a"
}
Si se calculó, dice con qué. Nada aparece sin explicar cómo llegó ahí.
$0El proveedor anterior servía ceros donde no había dato. Beneficio bruto y resultado de explotación llegaban como ceros perfectamente formados. El problema no era la falta de datos: era que los datos malos parecían buenos.
Aquí un cero sólo existe si viene de un documento, y un hueco es un hueco con motivo escrito.
Los documentos salen de la Información Pública Periódica de la CNMV — el XBRL que cada emisor está obligado por ley a depositar. No de una web scrapeada, ni de un PDF leído con IA.
Los informes ESEF se usan sólo para contrastar: ningún valor servido sale de ahí.
Todo bajo Authorization: Bearer, el catálogo incluido.
GET /v1/issuers
El catálogo: quién hay, qué cobertura tiene cada uno y por qué no hay datos cuando no los hay.
GET /v1/issuers/{id}/annual
La serie anual. {id} es ticker, ISIN o NIF.
GET /v1/issuers/{id}/dividends
Los dividendos con fecha: ex-date y fecha de pago, cada uno con la frase del anuncio de la que salió. En un bloque aparte, los estimados a partir de los años anteriores — que dan ventana, no fecha.
GET /v1/events
El calendario cruzado: qué se paga entre dos fechas, en todos los emisores. ?from=&to=, por defecto los próximos 90 días.
GET /v1/issuers/{id}/facts
Los hechos crudos del XBRL. Reservada: responde 501 hasta que exista.
El catálogo enseña también lo que no funciona. Un catálogo que sólo enseñara lo que funciona sería inútil justo el día que algo falla.
issuer_no_source, permanenteDos 404 distintos, porque permanente y
transitorio no se reintentan igual.
issuer_unknown404Ese identificador no es de ningún emisor conocido.issuer_no_source404Se sabe quién es y nunca tendrá datos aquí. Permanente.issuer_not_ingested404Conocido, con fuente, aún sin cargar. Transitorio: reintentar sirve.unauthorized401Falta la clave o no vale.internal_error500Falló. Nunca un 200 parcial.Se emiten a mano. Este formulario deja tu petición en la bandeja del operador y no concede nada al pulsarlo.