Referencia de la API v1 · solo lectura
Acceso programático a los hechos corroborados del terremoto de Venezuela del 24 de junio de 2026 —daños estructurales, puntos de acopio y necesidades— cada uno con su procedencia. Pública, sin autenticación, libre para usar y citar bajo CC-BY-4.0.
1 · Resumen
Esta API expone, de forma programática y de solo lectura, el conjunto de datos que alimenta el mapa de crisisvenezuela.org tras el terremoto del 24 de junio de 2026. Cada registro es un hecho corroborado de una de tres categorías:
- daño — un reporte de daño o colapso estructural (un edificio, una estructura).
- acopio — un punto o centro de recolección de ayuda.
- necesidad — una solicitud de un recurso (agua, medicinas, rescate…).
¿Para quién? Periodistas, ONG, desarrolladores de mapas/dashboards, y —especialmente— los equipos de los propios sitios que originan los datos, que pueden consumir la API sin reingestar su propia información gracias a la procedencia por registro (ver excluir_fuente).
URL base:
https://crisisvenezuela.org/api/v1/facts
Sin autenticación · CORS abierto (Access-Control-Allow-Origin: *) · respuestas cacheadas en CDN · especificación legible por máquina en /api/v1/openapi.json (OpenAPI 3.1). Licencia de los datos: CC-BY-4.0.
Los nombres de parámetros y de campos están en español; se mantienen en inglés solo los términos técnicos universales: bbox, offset y los valores de formato (json | geojson | csv).
2 · Inicio rápido
Una sola petición que devuelve datos de inmediato (los 1000 hechos más recientes, JSON):
curl https://crisisvenezuela.org/api/v1/factsLa respuesta es un sobre con metadatos y un arreglo datos:
{
"meta": {
"cantidad": 1000,
"total": 1342,
"generado": "2026-06-27T18:00:00.000Z",
"licencia": "CC-BY-4.0",
"atribucion": "crisisvenezuela.org + fuentes originales",
"consulta": { "limite": 1000, "offset": 0, "formato": "json" }
},
"datos": [
{
"id": "chacao-2879654398988377755",
"categoria": "daño",
"nivel": "colapso_total",
"estructura": "Edificio San Judas Tadeo",
"municipio": "Chacao",
"estado": "Miranda",
"zona": "El Rosal",
"lat": 10.497, "lon": -66.853,
"coord_origen": "explicita",
"descripcion": "Colapso total del edificio, hay personas atrapadas bajo los escombros.",
"tipo_necesidad": null,
"atrapados": true,
"n_fuentes": 3,
"fuentes": [
{ "fuente": "terremotovenezuela.com", "url": "https://terremotovenezuela.com/edificio/..." },
{ "fuente": "elnacional.com", "url": "https://www.elnacional.com/..." }
],
"fecha": "2026-06-26T14:02:00Z",
"primera_vez": "2026-06-24T22:10:00Z"
}
]
}3 · Modelo de datos
Cada elemento de datos (y cada properties en GeoJSON, y cada fila en CSV) es un hecho con estos campos:
| Campo | Tipo | Significado, valores y advertencias |
|---|---|---|
id | string | Identificador estable del hecho: slug del municipio + huella SimHash del texto. Se mantiene mientras el hecho no cambie; úsalo como clave para actualizar o deduplicar en tu lado. |
categoria | string | Tipo de hecho: daño (daño/colapso estructural), acopio (punto de recolección de ayuda) o necesidad (solicitud de un recurso). |
nivel | string · null | Solo para daño: colapso_total, severo, parcial o dano (genérico). Se infiere del texto con reglas. null en acopio/necesidad. |
estructura | string · null | Nombre específico del edificio/estructura cuando se identificó (p. ej. Edificio San Judas Tadeo). null si el reporte es a nivel de zona y no nombra una estructura. |
municipio | string | Municipio (nombre legible). Puede venir vacío en hechos sin municipio asignado. |
estado | string | Estado / entidad federal. Si el hecho no lo trae, se completa con el estado del municipio según el gazetteer. |
zona | string | Zona, sector o referencia local (barrio, urbanización, avenida). Texto libre; puede estar vacío. |
lat, lon | number · null | Coordenadas WGS84. null si el hecho no está geolocalizado. La precisión depende de coord_origen (ver §6). |
coord_origen | string | Procedencia de lat/lon: explicita (precisa), geocodificada (aproximada) o "" (desconocida/sin coords). Detalle en §6. |
descripcion | string | El hecho resumido en una frase, normalizado por IA a partir del o los posts originales. |
tipo_necesidad | string · null | Solo para necesidad: recurso solicitado — agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro. null en otras categorías. |
atrapados | boolean | true si el texto menciona personas atrapadas / bajo escombros. Indicio, no confirmación oficial — verifícalo antes de actuar. |
n_fuentes | integer | Número de fuentes distintas que confirman el hecho (deduplicadas por url; si no hay url, por autor). 1 = un solo reporte; mayor = más corroborado. Igual a la longitud de fuentes. |
fuentes | array | Procedencia: lista de { fuente, url, kind } deduplicada. fuente = nombre/handle limpio; url = enlace al post original (puede ser ""); kind = tipo de fuente (official/news/...). Úsala para dar crédito y para deduplicar contra tus propios datos. |
confianza | object | Modelo de confianza: 3 ejes + insignia Verificado / Reportado / Sin verificar. Contiene badge; reliability (fiabilidad de la fuente); credibility (corroboración, con independent_origins = orígenes independientes, descartando agregadores y reposts); damage (nivel de daño, solo daño). Metodología completa: /docs/trust. |
fecha | string ISO 8601 | Última vez que se vio/actualizó el hecho. Es el campo de orden (más reciente primero) y contra el que filtra desde. |
primera_vez | string ISO 8601 | Primera vez que se detectó el hecho. |
4 · Cómo se construyen los datos
Transparencia sobre la naturaleza y los límites del dato. El pipeline tiene cuatro etapas:
- Agregación de fuentes públicas. Leemos prensa, redes sociales y plataformas ciudadanas (p. ej. terremotovenezuela.com, acopiove, RedQuipu y reportes ciudadanos). Cada ítem conserva su URL de origen.
- Triaje y normalización por IA. Un modelo de lenguaje decide si el reporte es relevante, lo clasifica (daño / acopio / necesidad), extrae municipio, estado, zona, estructura y tipo de necesidad, y resume el hecho en una frase en español. Lo irrelevante o en otro idioma se descarta.
- Geolocalización. Si el reporte trae coordenadas (o la fuente las publica en su catálogo) se usan directamente (
coord_origen=explicita). Si no, la IA extrae un nombre de lugar y un geocodificador OSM / Nominatim lo resuelve a un punto (coord_origen=geocodificada, aproximado). - Corroboración y deduplicación. El mismo hecho contado por varias fuentes se fusiona en un solo registro con SimHash (huella del texto): «4 edificios colapsaron en Chacao» dicho de cinco maneras cuenta una vez, con
n_fuentes=5. Se conserva la fuente más creíble como primaria y todas las fuentes enfuentes[].
5 · Fuentes (de dónde vienen los datos)
El conjunto agrega fuentes públicas de tres tipos —redes sociales y fediverso, prensa, y catálogos estructurados del ecosistema— y las corrobora entre sí. Esta es la vista general: cada registro lleva su lista exacta de orígenes en el campo fuentes, así que el detalle hecho por hecho vive en cada registro, no aquí.
Puedes filtrar por origen con fuente y excluir_fuente, y exigir corroboración —varias fuentes para un mismo hecho— con min_fuentes. Los conteos de abajo son aproximados (se mueven en vivo) y se solapan: un hecho reportado por una red social y por la prensa cuenta en ambas filas —eso es justamente la corroboración—, así que no suman el total de ~10.800 hechos.
| Tipo de fuente | Fuente | Registros | Detalle |
|---|---|---|---|
| Redes sociales / Fediverso (~7.900) | X / Twitter (x.com) | ~6.900 | La corriente más grande; búsquedas en vivo más cuentas curadas. |
Instagram (instagram.com) | ~200 | Cuentas y reels. | |
| Mastodon / Fediverso | ~600 | Repartido entre mastodon.social, mstdn.social, mastodon.world, masto.ai, mas.to, vzla.masto.host y otras instancias; incluye fed.brid.gy, que puentea publicaciones de Bluesky. | |
| Prensa / noticias (~3.650) | Google News RSS (news.google.com) | ~3.600 | A su vez agrega medios como Reuters, AP, BBC, El Nacional, La Patilla, Efecto Cocuyo, etc. |
| GDELT | — | Monitoreo global de noticias. | |
| Otros medios sueltos | — | Cabeceras individuales fuera de los agregadores. | |
| Catálogos estructurados (plataformas aliadas) | terremotovenezuela.app | ~814 | Edificios y estructuras con daños. |
acopiove.org | — | Catálogo de centros de acopio y refugios (Venezuela y diáspora). A su vez agrega sub-fuentes que acreditamos por nombre: acopiovzla.com, RefugioVE, @JulietaOsorior, Venezuela Conecta, La Mega, ayudavenezuela.help, entre otras. | |
RedQuipu (redquipu.com) | — | Red de iniciativas. | |
Reporta Venezuela (zonasafectadasvenezuela.app) | — | Zonas afectadas, refugios y acopios. |
fuentes de cada hecho.6 · Procedencia de coordenadas (coord_origen)
No todas las coordenadas son iguales. El campo coord_origen te dice de dónde salieron lat/lon, para que sepas cuánto confiar en su precisión y puedas filtrar:
- explicita
- Las coordenadas vinieron con el dato: del catálogo de la fuente original (p. ej.
terremotovenezuela.comoacopiove) o indicadas explícitamente en el post. Alta precisión — apuntan al lugar real del hecho. - geocodificada
- No venían con el dato: el pipeline las derivó. La IA extrajo un nombre de lugar (barrio, urbanización, municipio) y un geocodificador OSM / Nominatim lo resolvió a un punto. Son aproximadas: pueden caer en el centroide del área o estar desplazadas algunos cientos de metros. Corregimos manualmente los errores conocidos cuando los detectamos.
- "" (vacío)
- Sin procedencia conocida o sin coordenadas (
lat/lonennull).
coord_origen=explicita. Para cobertura amplia (panorama general) usa ambas. Nunca trates una coordenada geocodificada como una dirección exacta.# Solo hechos con coordenadas precisas, en GeoJSON listo para un mapa
curl "https://crisisvenezuela.org/api/v1/facts?coord_origen=explicita&formato=geojson"7 · Filtros
Todos los parámetros son opcionales y combinables (se aplican en conjunto, tipo AND). Las listas van separadas por comas. Un valor inválido en categoria, bbox, desde, formato o en los enteros devuelve 400 con {"error": "…"}; los parámetros desconocidos se ignoran. Recuerda codificar la URL (espacios → %20, ñ → %C3%B1).
| Parámetro | Tipo | Valores / descripción | Ejemplo |
|---|---|---|---|
categoria | lista | daño · acopio · necesidad. Valor fuera de esa lista → 400. | ?categoria=acopio,necesidad |
estado | lista | Estado/entidad federal. Sin distinción de mayúsculas; coincidencia exacta. | ?estado=Miranda |
municipio | lista | Municipio. Sin distinción de mayúsculas; coincidencia exacta. | ?municipio=Chacao |
nivel | lista | Solo daño: colapso_total · severo · parcial · dano. | ?nivel=colapso_total,severo |
tipo_necesidad | lista | Solo necesidad: agua, comida, medicinas, insumos, voluntarios, sangre, rescate, refugio, ropa, otro. | ?tipo_necesidad=agua,medicinas |
coord_origen | lista | explicita (precisas) · geocodificada (aproximadas). Ver §6. | ?coord_origen=explicita |
fuente | lista | Conserva solo registros con al menos una fuente coincidente. Coincide por nombre y por subcadena del dominio (p. ej. terremotovenezuela.com). | ?fuente=elnacional.com |
excluir_fuente | lista | Anti-circular. Descarta registros cuyas fuentes estén todas en la lista; el registro sigue apareciendo si además tiene otra fuente. Ver nota abajo. | ?excluir_fuente=terremotovenezuela.com |
bbox | 4 números | Caja geográfica minLon,minLat,maxLon,maxLat. Solo registros con coordenadas dentro. Inválido → 400. | ?bbox=-67.5,10.0,-66.5,10.7 |
desde | ISO 8601 | Solo registros con fecha ≥ este instante. Inválido → 400. Ideal para sondeo incremental. | ?desde=2026-06-25T00:00:00Z |
min_fuentes | entero | Número mínimo de fuentes distintas (n_fuentes). Útil para quedarte solo con hechos muy corroborados. | ?min_fuentes=2 |
limite | entero | Máximo de registros. Por defecto 1000; tope 5000 (se recorta). | ?limite=100 |
offset | entero | Registros a saltar (paginación). Por defecto 0. | ?limite=100&offset=100 |
formato | texto | json (por defecto) · geojson · csv. Ver §8. | ?formato=geojson |
anti-circular excluir_fuente en detalle
Si mantienes uno de los sitios fuente, excluye tus propios datos para no reingestar lo tuyo y evitar bucles de retroalimentación. La regla es deliberada: un hecho solo se descarta si todas sus fuentes están en la lista de exclusión; si además lo confirma una fuente independiente, el hecho permanece (no pierdes corroboración externa).
# "Soy terremotovenezuela.com: dame todo MENOS lo que solo provengo yo"
curl "https://crisisvenezuela.org/api/v1/facts?excluir_fuente=terremotovenezuela.com"Más ejemplos
filtros Acopios en el Distrito Capital, máximo 50:
curl "https://crisisvenezuela.org/api/v1/facts?categoria=acopio&estado=Distrito%20Capital&limite=50"necesidades Solicitudes de agua o medicinas, muy corroboradas (≥2 fuentes), desde una fecha:
curl "https://crisisvenezuela.org/api/v1/facts?categoria=necesidad&tipo_necesidad=agua,medicinas&min_fuentes=2&desde=2026-06-25T00:00:00Z"8 · Formatos de salida
Elige con formato:
- json (por defecto)
- Sobre
{ "meta": {…}, "datos": [ Hecho, … ] }.metaincluyecantidad(en esta página),total(tras filtros, antes de paginar),generado,licencia,atribucionyconsulta(eco de los parámetros aplicados). Content-Type:application/json. - geojson
FeatureCollection(RFC 7946) con solo los registros geolocalizados. Cada feature tienegeometry.coordinates = [lon, lat]y el hecho completo (sinlat/lon) enproperties.metava como miembro extranjero informativo. Content-Type:application/geo+json. Ideal para Leaflet, Mapbox, QGIS, etc.- csv
- Tabla con cabecera; una fila por hecho. Las fuentes se aplanan a una columna
fuentescon el formatonombre(url);nombre(url). Incluye BOM UTF-8 para abrir limpio en Excel. Content-Type:text/csv.
# GeoJSON de una zona, listo para pintar en un mapa
curl "https://crisisvenezuela.org/api/v1/facts?formato=geojson&bbox=-67.5,10.0,-66.5,10.7"
# CSV de daños desde una fecha (da%C3%B1o = "daño" codificado para URL)
curl "https://crisisvenezuela.org/api/v1/facts?categoria=da%C3%B1o&desde=2026-06-25T00:00:00Z&formato=csv"9 · Procedencia y atribución
Cada hecho conserva en fuentes[] todas sus fuentes distintas (nombre + URL). Esto cumple dos funciones:
- Deduplicar contra tus datos. Antes de ingerir un hecho, revisa sus
fuentes/url: si ya lo tienes (o es tuyo), omítelo. Combínalo conexcluir_fuentepara filtrarlo del lado del servidor. - Dar crédito. Al reutilizar, cita la fuente original cuando corresponda, además de crisisvenezuela.org.
10 · Límites y uso justo
- Caché. Cada respuesta trae
Cache-Control: public, max-age=60, s-maxage=120; el CDN absorbe consultas repetidas. Los datos se refrescan en vivo, con un retraso de hasta ~1–2 min. - Paginación.
limitetope 5000 por petición; usaoffsetpara recorrer, odesdepara traer solo lo nuevo. - Descargas masivas → usa los volcados estáticos. No martilles el endpoint de consulta. Para el conjunto completo o cargas frecuentes, sirve el CDN directamente:
- /facts.json — el conjunto completo (los mismos registros que esta API).
- /colapsos.json · /colapsos.csv — solo estructuras colapsadas/dañadas con nombre.
- Solo lectura. La API únicamente sirve
GET(yOPTIONSpara CORS). Otros métodos devuelven405.
11 · Versionado
La ruta lleva la versión mayor: /api/v1/…. Política de estabilidad de v1:
- Cambios aditivos no rompen. Podemos agregar campos nuevos a los registros o nuevos parámetros opcionales sin cambiar de versión; tu cliente debe ignorar lo que no conozca.
- Cambios incompatibles → nueva versión. Renombrar/eliminar campos o cambiar el significado de uno existente se publicaría como
/api/v2;v1seguiría disponible durante una transición. - Contrato legible por máquina: /api/v1/openapi.json (OpenAPI 3.1) — genera clientes o valida contra él.