Dados de geolocalização de IP (JSON / CSV)

Autor:Lisa Farrell · 2025-11-09

A base de dados de geolocalização de IP mapeia intervalos contínuos de IP (ip_from ~ ip_to) para país/região, divisão administrativa, cidade e coordenadas (lat./long.). É usada em cenários de roteamento por região, conformidade e gestão de riscos, orquestração por proximidade e análise operacional. Os dados são exportados em dois conjuntos independentes — IPv6 e IPv4 — com os mesmos campos e o mesmo formato de arquivo.

Estrutura de dados (descrição das colunas)

  • ip_from VARCHAR(39) NOT NULL: IP inicial (compatível com IPv4/IPv6).
  • ip_to VARCHAR(39) NOT NULL: IP final (compatível com IPv4/IPv6).
  • country_code CHAR(2): ISO 3166-1 Alpha-2 (ex.: US, CN).
  • region VARCHAR(100): província/estado/primeiro nível administrativo.
  • city VARCHAR(100): nome da cidade.
  • latitude DECIMAL(9,5): latitude.
  • longitude DECIMAL(9,5): longitude.
SQL de criação (exemplo 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;

Download online

Para cada pilha (IPv6 / IPv4) oferecemos três formatos: JSON (.gz), CSV (.gz), SQL (.gz).

Fonte Tipo Formato Download Descrição
IPIN IPv6 JSON (.gz) Baixar Intervalos IPv6 → informações geográficas (array JSON).
IPIN IPv6 CSV (.gz) Baixar CSV padrão com cabeçalho; ideal para ETL/planilhas.
IPIN IPv6 SQL (.gz) Baixar Inclui criação de tabela e INSERT em lote; importação direta no MySQL.
IPIN IPv4 JSON (.gz) Baixar Intervalos IPv4 → informações geográficas (array JSON).
IPIN IPv4 CSV (.gz) Baixar CSV padrão com cabeçalho; ideal para ETL/planilhas.
IPIN IPv4 SQL (.gz) Baixar Inclui criação de tabela e INSERT em lote; importação direta no MySQL.

Observação: todos os downloads são arquivos .gz. Descompacte com gunzip ou processe diretamente como fluxo na sua aplicação.

Download rápido via linha de comando

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 automaticamente o nome do arquivo do 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'

# Nome personalizado + retomada
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 (multithread)

# 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"

Dica: os arquivos baixados estão em .gz. Use gunzip ou uma ferramenta de extração, ou leia-os diretamente como fluxo no seu programa.

Descrição dos formatos

JSON

Array; cada item contém 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

A primeira linha é o cabeçalho; campos com vírgulas/aspas são escapados conforme a 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

Inclui a criação da tabela e instruções INSERT em lote; apropriado para importação direta no MySQL.

-- Consulte a definição de tabela acima
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);

Como usar (guia rápida)

  1. Escolha e baixe, conforme a necessidade, os arquivos IPv6 ou IPv4 em JSON / CSV / SQL.
  2. Descompacte e importe para o banco de dados (ou faça o parsing diretamente no aplicativo).
  3. Implemente políticas de roteamento e conformidade por país/região/cidade ou coordenadas; é possível considerar distância para orquestração por proximidade (granularidade grossa).
  4. Agende tarefas periódicas (diárias/semanais) para atualização por sobrescrita e mantenha a base sempre atualizada.

Informações adicionais

  • IPv6/IPv4 usam a mesma definição de colunas; apenas o espaço de endereços coberto é diferente.
  • Coordenadas e divisões administrativas oferecem localização aproximada; não representam um endereço exato. Respeite privacidade e conformidade.
  • Para consultas de alto desempenho, converta IPv4 em intervalos de inteiros de 32 bits; para IPv6, use tries de prefixos/árvores de intervalos ou índices especializados.