Datos de geolocalización IP (JSON / CSV)

Autor:Lisa Farrell · 2025-11-09

La base de datos de geolocalización IP mapea intervalos IP continuos (ip_from~ip_to) con país/región, división administrativa, ciudad y coordenadas. Se utiliza para segmentación geográfica, cumplimiento y gestión de riesgos, orquestación por cercanía y análisis operativo. Los datos se exportan en dos conjuntos independientes — IPv6 y IPv4 — con los mismos campos y formatos de archivo.

Estructura de datos (descripción de columnas)

  • ip_from VARCHAR(39) NOT NULL: IP inicial (compatible con IPv4/IPv6).
  • ip_to VARCHAR(39) NOT NULL: IP final (compatible con IPv4/IPv6).
  • country_code CHAR(2): ISO 3166-1 Alpha-2 (p. ej., US, CN).
  • region VARCHAR(100): provincia/estado/primer nivel administrativo.
  • city VARCHAR(100): nombre de la ciudad.
  • latitude DECIMAL(9,5): latitud.
  • longitude DECIMAL(9,5): longitud.
SQL de creación (ejemplo MySQL)
CREATE TABLE geoip_ranges (
  ip_from      VARCHAR(39)  NOT NULL,
  ip_to        VARCHAR(39)  NOT NULL,
  country_code CHAR(2),
  region       VARCHAR(100),
  city         VARCHAR(100),
  latitude     DECIMAL(9,5),
  longitude    DECIMAL(9,5),
  PRIMARY KEY (ip_from, ip_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Descarga en línea

Para cada pila (IPv6 / IPv4) se ofrecen tres formatos: JSON (.gz), CSV (.gz), SQL (.gz).

Fuente Tipo Formato Descarga Descripción
IPIN IPv6 JSON (.gz) Descargar Intervalos IPv6 → información geográfica (arreglo JSON).
IPIN IPv6 CSV (.gz) Descargar CSV estándar con encabezado; ideal para ETL/hojas de cálculo.
IPIN IPv6 SQL (.gz) Descargar Incluye creación de tabla e INSERT masivos; importación directa en MySQL.
IPIN IPv4 JSON (.gz) Descargar Intervalos IPv4 → información geográfica (arreglo JSON).
IPIN IPv4 CSV (.gz) Descargar CSV estándar con encabezado; ideal para ETL/hojas de cálculo.
IPIN IPv4 SQL (.gz) Descargar Incluye creación de tabla e INSERT masivos; importación directa en MySQL.

Nota: todas las descargas son archivos .gz. Descomprímelos con gunzip o procésalos directamente en flujo dentro de tu aplicación.

Descarga rápida por línea de comandos

curl

# IPv6
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

wget

# Usar automáticamente el nombre de archivo del servidor (--content-disposition)
# IPv6
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

# Nombre de archivo personalizado + reanudación
wget -c -O ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget -c -O ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget -c -O ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
wget -c -O ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget -c -O ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget -c -O ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

aria2c (multiconexión)

# IPv6
aria2c -x16 -s16 -k1M -o ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'

# IPv4
aria2c -x16 -s16 -k1M -o ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.csv.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.sql.gz  'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'

PowerShell

# IPv6
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz" -OutFile "ipv6_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz"  -OutFile "ipv6_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz"  -OutFile "ipv6_ip_location.sql.gz"

# IPv4
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz" -OutFile "ipv4_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz"  -OutFile "ipv4_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz"  -OutFile "ipv4_ip_location.sql.gz"

Consejo: los archivos descargados son .gz. Puedes descomprimirlos con gunzip o leerlos directamente en flujo dentro de tu programa.

Descripción de formatos

JSON

Arreglo; cada elemento contiene ip_from, ip_to, country_code, region, city, latitude, longitude.

[
  {
    "ip_from": "2400:cb00::",
    "ip_to":   "2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff",
    "country_code": "US",
    "region": "California",
    "city": "Los Angeles",
    "latitude": 34.05460,
    "longitude": -118.24400
  }
]
CSV

La primera línea es el encabezado; los campos con comas o comillas se escapan según RFC 4180.

ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700
SQL

Incluye la creación de la tabla y sentencias INSERT en lote; apto para importación directa en MySQL.

-- Ver la definición de tabla más arriba
INSERT INTO geoip_ranges
(ip_from, ip_to, country_code, region, city, latitude, longitude) VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);

Cómo utilizar (guía rápida)

  1. Elige y descarga, según lo necesites, los archivos IPv6 o IPv4 en JSON / CSV / SQL.
  2. Descomprime e importa en la base de datos (o analiza directamente en tu aplicación).
  3. Implementa estrategias de segmentación y cumplimiento por país/región/ciudad o coordenadas; puedes usar la distancia para orquestación por cercanía (granularidad gruesa).
  4. Programa tareas periódicas (diarias/semanales) para actualizar por sobrescritura y mantener la base al día.

Notas complementarias

  • IPv6/IPv4 usan la misma definición de columnas; solo difiere el espacio de direcciones cubierto.
  • Las coordenadas y divisiones administrativas ofrecen una localización aproximada; no representan una dirección exacta. Respeta la privacidad y el cumplimiento normativo.
  • Para consultas de alto rendimiento, convierte IPv4 a intervalos de enteros de 32 bits; para IPv6, utiliza tries de prefijos/árboles de intervalos o índices especializados.