Lee los datos

Última actualización el

La API pública devuelve los hexágonos que dibuja el mapa, para la última actualización o un día guardado, sin posiciones brutas de aviones. El esquema completo está en OpenAPI 3.1.

Ventana más reciente

GET https://api.gpsinterference.com/v1/interference/latest

GET https://api.gpsinterference.com/interference.json es el mismo documento, que usa el mapa. Contiene un día UTC de vuelos, history_date, y se reconstruye una vez al día hacia las 05:00 UTC.

Un día UTC

GET https://api.gpsinterference.com/v1/interference/YYYY-MM-DD

El mapa tal como estaba en la última actualización de ese día UTC (no un recuento solo de los vuelos de esa fecha), con los mismos campos que el resumen más reciente más archive_date y complete. complete es falso mientras el día siga siendo hoy y puede ser reemplazado; un día terminado nunca cambia. Una fecha sin mapa guardado devuelve 404 y {"error":"no archive"}.

GET https://api.gpsinterference.com/v1/interference/days lista todos los días guardados: date, updated y hexes (un recuento), sin polígonos.

Campos del hexágono

CampoSignificado
hId de celda, column_row en la cuadrícula hexagonal Web Mercator.
gAviones distintos en la celda cuyo NACp se mantuvo por encima de 7.
bAviones distintos que informaron NACp 7 o menos al menos una vez en la celda.
pProporción afectada, en porcentaje, con un decimal: 100 × b ÷ (g + b). El color se toma de esta cifra.
cg por debajo del 3 %, y del 3 % al 10 %, r por encima del 10 %, tomado del p redondeado.
polyAnillo de pares [latitude, longitude], en grados.

Las celdas son hexágonos planos en la cuadrícula Web Mercator con un radio de 0,34° de longitud (unos 38 km del centro a la esquina en el ecuador, 22 km a 54°N). Se omiten las celdas con menos de 3 aviones.

bands (resúmenes desde noviembre de 2026) divide los mismos recuentos por altitud barométrica: edges_ft es [5000, 15000, 30000] y hexes contiene cuatro listas, para por debajo de 5.000 ft, 5.000–15.000 ft, 15.000–30.000 ft y por encima de 30.000 ft. Cada entrada es { h, g, b }, con el polígono y la proporción tomados del hexágono del mismo h en la lista principal (p = 100 × b ÷ (g + b), los mismos umbrales para c). Una banda omite las celdas con menos de 3 aviones en esa banda. Un avión que cambia de banda dentro de una celda se cuenta en cada una, así que las cuatro bandas no suman los recuentos principales; los aviones en tierra o sin altitud solo están en los recuentos principales.

Campos de nivel superior: history_date es el día UTC de los vuelos; updated es cuándo se escribió el resumen (UTC); grid es mercator-r0.34; window_minutes es 1440, un día; sources es adsb.lol-globe-history más la versión de adsb.lol con la que se construyó, como adsb.lol-prod-0. A los resúmenes guardados antes de noviembre de 2026 puede faltarles history_date y llevan polled_points, grid_points y failed_points de la antigua recogida en vivo.

Caché, CORS y límites

El resumen más reciente, el día guardado de hoy y el índice de fechas se envían con cache-control: public, max-age=60. Un día terminado se envía con max-age=86400.

El CORS del navegador solo se permite para https://gpsinterference.com y https://www.gpsinterference.com, así que otro sitio web no puede leer el JSON desde los navegadores de sus visitantes; curl y las peticiones desde servidor no se ven afectados. No hay un límite de frecuencia fijo, pero las peticiones muy frecuentes pueden ser limitadas. Los datos cambian una vez al día, así que sigue las cabeceras de caché en lugar de consultar sin parar.

Atribución

Datos de aeronaves del historial global de adsb.lol, compartidos bajo la Open Database License (ODbL). Cita https://gpsinterference.com. Una baja precisión informada no es una interferencia confirmada y no identifica una fuente. Los mosaicos del mapa base son aparte y no forman parte de esta API.

Citar los datos

Cita el día guardado que usaste: el mapa más reciente cambia cada día, pero un día guardado no.

APA

GPSInterference.com. (2026). GPS interference hexagon data [Data set]. https://gpsinterference.com/docs

Un día guardado:

GPSInterference.com. (2026). GPS interference hexagon data, 25 October 2026 [Data set]. https://api.gpsinterference.com/v1/interference/2026-10-25

BibTeX

@dataset{gpsinterference_2026,
  author       = {{GPSInterference.com}},
  title        = {GPS Interference Hexagon Data},
  year         = {2026},
  publisher    = {GPSInterference.com},
  url          = {https://gpsinterference.com/docs},
  note         = {Built from ADS-B flight tracks from adsb.lol globe history, available under the Open Database License (ODbL). Low reported accuracy (NACp 7 or lower) is not confirmed jamming. For one UTC day, use https://api.gpsinterference.com/v1/interference/YYYY-MM-DD}
}

Ejemplos

curl -sS "https://api.gpsinterference.com/v1/interference/latest"
curl -sS "https://api.gpsinterference.com/v1/interference/2026-10-25"

En JavaScript, en este sitio o en un servidor:

const res = await fetch("https://api.gpsinterference.com/v1/interference/latest");
if (!res.ok) throw new Error(String(res.status));
const data = await res.json();
// data.hexes[i] is { h, g, b, p, c, poly }

La metodología explica cómo se hacen los recuentos.

Incrustar el mapa

El mapa en vivo es libre de incrustar. Pega esto donde deba aparecer:

<iframe src="https://gpsinterference.com/embed" width="640" height="400"
        style="border:0;width:100%;max-width:960px" loading="lazy"
        title="Live GPS interference map"></iframe>
<p>Live map: <a href="https://gpsinterference.com/">GPS Interference</a></p>

Configúralo abajo y copia el código, o añade tú mismo las opciones.

Opciones

Añade cualquiera de estas a https://gpsinterference.com/embed, unidas con &:

OpciónValoresQué hace
regionbaltic-sea, eastern-europe, black-sea, eastern-mediterranean, middle-east, east-asia, finland, estonia, latvia, lithuania, kaliningrad, poland, norway, romania, turkey, cyprus, israel, lebanon, south-korea, sweden, denmark, germany, iceland, united-kingdom, ukraine, belarus, moldova, bulgaria, georgia, armenia, azerbaijan, greece, egypt, iran, iraq, syria, jordan, saudi-arabia, united-arab-emirates, qatarSe abre en esa región, ajustada al tamaño del marco.
bboxsouth,west,north,eastSe abre en cualquier zona, en grados, por ejemplo bbox=30,-120,40,-105.
lat, lon, zoomnúmerosSe abre en un centro y un zoom en lugar de una zona.
lock1Mantiene a los lectores dentro de la zona: pueden desplazarse y hacer zoom dentro de ella, pero no alejarse.
styledark (por defecto), light, streets, satelliteEl mapa sobre el que se asientan los hexágonos: oscuro, un mapa claro y limpio para páginas blancas, calles, o satélite con fronteras y nombres de lugares. Mapas de MapTiler.
nameson, off (por defecto)Nombres de lugares en el mapa.
altall (por defecto), low, mid, high, cruiseMuestra solo los aviones de una banda de altitud: por debajo de 5.000 ft, 5.000–15.000 ft, 15.000–30.000 ft o por encima de 30.000 ft (barométrica). Los días guardados antes de registrar altitudes muestran todos los aviones.
controlsonMuestra los interruptores de estilo, nombres y altitud, para que los lectores puedan cambiarlos.
dateYYYY-MM-DDMuestra un día guardado en lugar del mapa más reciente, para una historia sobre ese día.