Documentación Ver secciones Cerrar
Nivel gratuito (DAT-FREE)
La versión del API que responde preguntas sobre la data sin entregar la data: por entidad, si existe, si está vigente, un puñado de booleanos y conteos en rangos. Nunca un nombre de tercero, un monto, una fecha, un documento.
Llave gratuita en dos minutos. Correo y contraseña; sin tarjeta. La llave dura 90 días y cualquier compra la vuelve permanente.
Crear mi llave gratuitaPara qué sirve
Con una llave gratuita obtienes el id de Panadata de una entidad y sabes qué hay detrás; los registros cuestan créditos. Alcanza para validar una regla de compuerta sobre un RUC o una cédula, pre-chequear un proveedor, priorizar una lista de 300 filas por señales o probar el JSON mientras construyes. No alcanza, a propósito, para operar una cartera.
Cuatro reglas: respuestas, no registros (todo campo es un booleano, un rango o un año); cada campo apunta a un SKU pagado (DAT-FREE es el menú, el precio está en Precios); mismo meter, mismo id en todos los niveles; y lo que hace el MCP lo hace el API, con el mismo nivel de acceso y la misma respuesta.
Los cuatro niveles
| Nivel | Quién | Qué devuelve | Límite |
|---|---|---|---|
| 0. Sin llave | cualquiera: cualquier sesión de Claude, Cursor o ChatGPT vía el MCP público; cualquier request HTTP a api.panadata.net sin cabecera |
resolve con ids enmascarados (una fila); existe, vigente, suspendida, tipo, año y el menú (codigos_con_datos) |
presupuesto global de 1,000 consultas/día para todo el nivel (reinicia a las 00:00 de Panamá); una entidad por llamada, sin lote |
| 1. Llave gratuita | email verificado (teléfono opcional) | la ficha DAT-FREE completa: booleanos y rangos | 500/mes y 30/día (1,000/mes y 100/día con dominio corporativo), lote 10; los contadores reinician a las 00:00 UTC |
| 2. Sandbox US$95 | quien paga | registros completos, 95 créditos, llave permanente | por saldo |
| 3. Packs | Piloto / Barrido / Programa | registros a volumen, lote 100, estimador | por pack |
El nivel 0 da el menú pero no los booleanos: un agente sin llave aprende «Panadata tiene datos judiciales, inmobiliarios y de comercio sobre esta sociedad, constituida en 1914 y vigente». Los booleanos detrás cuestan un email confirmado. Los registros cuestan créditos.
La ficha DAT-FREE
GET /v5/entities/{id}?include=DAT-FREE cuesta 0 créditos. Ejemplo para una organización, con llave gratuita (respuesta real de producción):
{
"id": "pa_own_4629361", "country": "panama",
"nombre": "CERVECERÍA NACIONAL HOLDING, S.A.",
"nivel": "DAT-FREE",
"existe": true, "vigente": true, "suspendida": false,
"tipo": "organizacion", "anio_constitucion": 1914,
"directores": "10+",
"tiene_judicial": true, "moroso_css": false, "contrata_con_estado": false,
"en_planilla_estatal": false,
"inmuebles": "3-9", "comercio_exterior": true, "noticias": true,
"codigos_con_datos": ["DAT-ASSET","DAT-BIZ","DAT-BUSINESS","DAT-DOC","DAT-NEWS","DAT-REALESTATE","DAT-REGISTRY","DAT-RISK","DAT-TRADE"],
"actualizado": "2026-09",
"siguiente_paso": {"para_ver_los_registros": "https://platform.panadata.net/docs/precios", "tokens_dat_core": 0.66}
}
Sin llave (nivel 0) la ficha se reduce a id, country, nombre, nivel, existe, vigente, suspendida, tipo, anio_constitucion, codigos_con_datos, actualizado y siguiente_paso; los booleanos y rangos aparecen con llave gratuita. Para una persona natural la ficha es la misma menos directores, contrata_con_estado y comercio_exterior (y con vigente, suspendida y anio_constitucion en null, que son atributos de sociedad), con tiene_judicial, moroso_css, en_planilla_estatal, inmuebles y noticias como campos principales. Un booleano o un rango en null significa «no computado», no «no tiene».
Hoy la ficha no trae score ni pep_local: entran cuando exista el Operating Score calibrado 0–100 y la bandera PEP a nivel de entidad. Los booleanos y rangos se calculan sobre los mismos contadores que DAT-CORE ya carga; codigos_con_datos es la lista de códigos del catálogo que devolverían registros para esa entidad (nunca incluye DAT-ALL).
| Campo | Forma | SKU pagado detrás |
|---|---|---|
| existe, vigente, suspendida | booleanos | DAT-CORE |
| tipo | persona / organizacion / fundacion | DAT-CORE |
| anio_constitucion | año (solo el año) | DAT-CORE |
| directores | rango 0 / 1-2 / 3-9 / 10+ | DAT-CORE (nombres y cargos) |
| tiene_judicial | booleano | DAT-RISK (expedientes judiciales; o su átomo cuando exista) |
| moroso_css | booleano | DAT-RISK (morosos CSS; o su átomo cuando exista) |
| contrata_con_estado | booleano | DAT-PROC (licitaciones) / DAT-CGR (Contraloría) |
| en_planilla_estatal | booleano | DAT-PAYROLL |
| inmuebles | rango 0 / 1-2 / 3-9 / 10+ | DAT-REALESTATE |
| comercio_exterior | booleano | DAT-TRADE |
| noticias | booleano | DAT-NEWS |
| codigos_con_datos | lista de códigos DAT que devolverían datos | cada uno |
| actualizado | mes/año del índice (YYYY-MM) | — (el dato en vivo se pide con POST /v5/entities/{id}/update) |
Los códigos de la tabla son los del catálogo vigente. Los créditos de cada SKU están en Precios y en vivo en GET https://api.panadata.net/v5/catalog (gratis).
Límites
| Límite | Valor | Por qué |
|---|---|---|
| Nivel 0, por llamada | una entidad por llamada: resolve de una fila y una ficha por request; el lote, las búsquedas y los sub-recursos exigen llave (403 public_tier_locked) | suficiente para que un agente responda una pregunta; insuficiente para una lista |
| Nivel 0, global | 1,000 consultas/día para todo el nivel (HTTP directo + MCP público); se reinicia a las 00:00 America/Panama (UTC−5); 429 public_budget_exhausted con reset_at y enlace a la llave gratuita al agotarse | el techo lo elegimos nosotros; conservador hasta ver tráfico real |
| Entidades por mes (nivel 1) | 500 por cuenta verificada (cada fila de resolve, cada ficha DAT-FREE o CHK-BIN y cada id de /entities/batch cuentan juntos; dry_run no cuenta); se reinicia el día 1 a las 00:00 UTC | una muestra de 300 filas o 10 al día en micro-producción caben; una cartera no |
| Con dominio corporativo verificado | 1,000 | premia al comprador probable sin regalar volumen |
| Por día (nivel 1) | 30 (100 con dominio corporativo); se reinicia a las 00:00 UTC; el 429 free_tier_limit llega solo si la llamada no cabe (used + filas > limit) y trae used, remaining, requested, reset_at (ISO 8601) y Retry-After | que los 500 no se gasten en una tarde sobre una lista |
| Tasa | 1 request/segundo con ráfaga de 5 (plan de uso del API Gateway; 429 sin cuerpo JSON) | una muestra de 300 tarda cinco minutos; molesto, pero gratis |
| Lote (resolve/batch) | 10 filas sin with_presence (400 free_tier_batch_rows por encima) | el batch grande es para packs |
| Vigencia de la llave | 90 días sin compra (401 key_expired al vencer); cualquier compra (Sandbox US$95 en adelante) la vuelve permanente | evita llaves zombis y cuentas fábrica |
| Verificación | email confirmado, sin dominios de correo temporal; teléfono opcional, una cuenta gratuita por teléfono | frena el sharding de cuentas |
| Estimador (resolve/batch con with_presence: true) | solo agregados (summary + summary.presence, sin results[]); 5,000 filas/mes gratis, hasta 100 filas por llamada; no cobra ni cuenta contra los 30/día y 500/mes; más, por Ventas (402 estimator_rows_exhausted) | no devuelve dato por entidad; es la herramienta para cotizar un barrido: cuántas filas resuelven y qué códigos tienen datos |
Estimador. Con llave gratuita POST /v5/resolve/batch con with_presence: true devuelve solo agregados: {country, count, estimator: true, summary{rows, resolved_exact, ambiguous, unresolved, invalid, homonyms_p50/p90/max, presence{DAT-…: n}}, note}, sin results[], sin ids ni candidatos. Hasta 100 filas por llamada; las filas válidas descuentan de la cuota del estimador (5,000/mes, 402 estimator_rows_exhausted al agotarse), nunca de los 30/día ni de los 500/mes. Sirve para cotizar un barrido: cuántas filas resuelven y qué códigos tienen datos. La resolución fila por fila es el resolve/batch pagado, o el gratuito sin with_presence (10 filas, dentro del cupo). Con llave pagada la misma llamada devuelve results[] por fila más summary.presence.
Cabeceras y cupo. Toda respuesta del nivel 1 (2xx y 429) trae X-Panadata-Tier: free, X-Panadata-Free-Remaining-Today y X-Panadata-Free-Remaining-Month (el estimador suma X-Panadata-Free-Estimator-Rows-Remaining). El 429 free_tier_limit llega solo cuando used + filas > limit y dice used, remaining y requested (un lote de 7 sí pasa con 23/30) junto con reset_at y una cabecera Retry-After en segundos. Un identificador con formato irreconocible sale como outcome: invalid en el lote (no cuenta ni cobra) y como 400 invalid_identifier en POST /v5/resolve, que además acepta top (1..10).
Zonas horarias. Los contadores del nivel 1 (30 o 100/día, 500 o 1,000/mes, estimador) se cortan por día y mes UTC; el reset_at de los 429 es la próxima medianoche o el próximo día 1 en UTC. El presupuesto global del nivel 0 se corta a medianoche de Panamá (America/Panama, UTC−5, sin horario de verano). Son dos calendarios distintos: a las 03:00Z del día 22 el nivel 1 ya está en su día 22 y el nivel 0 sigue en su día 21.
dry_run=1 es gratis en los tres niveles. Sin llave, con llave gratuita o con saldo, cualquier ruta cobrable con ?dry_run=1 devuelve {dry_run, would_charge, product_codes, credits} para cualquier código pedido (también los pagados), sin cobrar y sin consumir contadores ni presupuesto: una llave gratuita puede cotizar ?include=DAT-ALL&dry_run=1 antes de cargar créditos. El candado free_tier_code_locked aplica solo a la llamada real. En el detalle, ?inline_limit=1..100 (default 10) acota las listas de cada sección para cualquier llave; DAT-FREE no lleva listas, así que no le afecta.
El dry_run de una llave gratuita cotiza en entidades, no en créditos. Esa llave nunca paga, así que su cotización trae would_charge: "0" y credits: 0, más un bloque free_tier con lo que la llamada real le haría al cupo. Leer los contadores no los incrementa: cotizar nunca cuenta. Las cifras de primer nivel son las del período del presupuesto y month trae las del mes:
budget:daily(el cupo de 30/día y 500/mes, o 100 y 1,000 con dominio corporativo) oestimator(resolve/batchconwith_presence, que descuenta filas del estimador, 5,000/mes, y no toca el cupo diario).counts_as: cuántas entidades o filas contaría la llamada real (las filas inválidas cuentan 0).period,used,limityremainingdan el estado del período.would_exceed:truecuando el día o el mes no alcanzan, exactamente cuando la llamada real recibiría el 429. En ese caso llegan tambiénexceeded_period,would_status(429, o 402 para el estimador),codeyreset_at.locked: trueconlocked_codes: el código pedido está fuera del nivel gratuito. La cotización conserva el precio en créditos (lo que costaría con saldo) y la llamada real sería 403free_tier_code_locked, sin contar nada.- Si los contadores no se pueden leer,
used,remainingywould_exceedvienen ennull; la respuesta sigue siendo 200. El dry_run también trae las cabecerasX-Panadata-Free-Remaining-TodayyX-Panadata-Free-Remaining-Month.
Ejemplo ilustrativo: un POST /v5/resolve/batch?dry_run=1 de 8 filas con 23 de 30 entidades usadas hoy.
{"dry_run": true, "would_charge": "0", "credits": 0, "product_codes": ["DAT-RESOLVE"],
"free_tier": {"budget": "daily", "counts_as": 8, "period": "day", "used": 23, "limit": 30, "remaining": 7,
"month": {"used": 141, "limit": 500, "remaining": 359},
"would_exceed": true, "exceeded_period": "day", "would_status": 429, "code": "free_tier_limit",
"reset_at": "2026-09-24T00:00:00+00:00", "upgrade_url": "https://platform.panadata.net/facturacion"}}
Cuando se agota: 429 con code: free_tier_limit (nivel 1: period, limit, used, remaining, requested + Retry-After) o code: public_budget_exhausted (nivel 0), ambos con reset_at y upgrade_url (con llave, la página de compra https://platform.panadata.net/facturacion; sin llave, esta misma página, https://platform.panadata.net/docs/dat-free); cuando se pide un código fuera del nivel: 403 con code: free_tier_code_locked, locked_codes y free_tier_codes; una llave vencida: 401 con code: key_expired. El MCP lee esos campos y muestra el paso siguiente en vez de un error. Los cuerpos completos están en la guía de Errores.
Sin llave: el mismo request por API y por MCP
Las dos operaciones del nivel 0 responden en https://api.panadata.net sin cabecera de autenticación (platform.panadata.net es este portal, no el API). Cada tool del MCP tiene su ruta HTTP y devuelve lo mismo; si un día una tool solo existe en el MCP, es un bug. Para conectar un agente sin llave:
claude mcp add --transport http panadata https://mcp.panadata.net/mcp
1. Resolver una entidad
API — POST /v5/resolve
curl -X POST 'https://api.panadata.net/v5/resolve' \
--header 'Content-Type: application/json' \
--data '{"name": "Cerveceria Nacional"}'
MCP — tool resolve_entity
resolve_entity({"name": "Cerveceria Nacional"})
Candidatos con nombre, tipo, identificador enmascarado (8-***-2264, 155***-2-2016), confidence, matched_on y exact_homonyms; una fila por llamada. Con llave gratuita, además resolve/batch hasta 10 filas; con saldo, el identificador completo y lote de 100.
2. Leer la ficha DAT-FREE
API — GET /v5/entities/{id}
curl 'https://api.panadata.net/v5/entities/pa_own_4629361?include=DAT-FREE'
MCP — tool get_entity
get_entity({"id": "pa_own_4629361", "include": ["DAT-FREE"]})
Sin llave: existe, vigente, suspendida, tipo, año, menú, actualizado y siguiente_paso, con las cabeceras X-Panadata-Tier: public y X-Panadata-Public-Budget-Remaining. Con llave gratuita (Authorization: Bearer pk_…): la ficha completa de arriba; sin include la ficha DAT-FREE es la respuesta por defecto de una llave sin saldo. Con saldo: los códigos que el menú anuncia.
Qué no devuelve, aunque nos cueste poco
- Nombres de terceros. Ni directores, ni dueños, ni acreedores, ni contrapartes. Solo el nombre de la entidad resuelta.
- Montos. Ni valores de propiedades, ni salarios, ni valores de contratos.
- Fechas más allá del año de constitución y del mes de actualización.
- Conteos exactos. «Tiene 4 propiedades» es un hecho sobre una persona; «tiene 3–9» es una señal.
- Identificadores completos en
resolve. - Búsquedas. Ningún endpoint que devuelva una lista de entidades a partir de criterios. Siguen pagados.
- Activos por id.
pa_finca_,pa_ph_,pa_nave_,pa_marca_,pa_imp_…: propietarios, titulares y montos son registros (403free_tier_code_locked).pa_gov_sigue abierto. - Listas internacionales (DAT-SCREEN), documentos, dockets, OCR, dato en vivo, red de control, historial.
Cuando necesites los registros
La ficha dice qué hay; leerlo cuesta créditos. El Sandbox de US$95 da el JSON completo y una llave permanente; los packs, volumen y lote de 100. Ver precios.