Données de géolocalisation IP (JSON / CSV)

Auteur:Lisa Farrell · 2025-11-09

La base de données de géolocalisation IP associe des intervalles IP continus (ip_from ~ ip_to) à un pays/région, une division administrative, une ville et des coordonnées (lat./long.). Elle s’emploie pour la répartition géographique du trafic, la conformité et gestion des risques, l’orchestration de proximité et l’analyse opérationnelle. Les données sont exportées en deux ensembles indépendants — IPv6 et IPv4 — avec des champs et des formats de fichiers identiques.

Schéma des données (description des colonnes)

  • ip_from VARCHAR(39) NOT NULL : IP de début (compatible IPv4/IPv6).
  • ip_to VARCHAR(39) NOT NULL : IP de fin (compatible IPv4/IPv6).
  • country_code CHAR(2) : code ISO 3166-1 Alpha-2 (p. ex. US, CN).
  • region VARCHAR(100) : province/État/premier niveau administratif.
  • city VARCHAR(100) : nom de la ville.
  • latitude DECIMAL(9,5) : latitude.
  • longitude DECIMAL(9,5) : longitude.
SQL de création (exemple 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;

Téléchargement en ligne

Chaque pile (IPv6 / IPv4) est disponible en trois formats : JSON (.gz), CSV (.gz), SQL (.gz).

Source Type Format Téléchargement Description
IPIN IPv6 JSON (.gz) Télécharger Intervalle IPv6 → informations géographiques (tableau JSON).
IPIN IPv6 CSV (.gz) Télécharger CSV standard avec en-tête, pratique pour ETL/tableurs.
IPIN IPv6 SQL (.gz) Télécharger Inclut la création de table et des INSERT en lot ; import direct MySQL.
IPIN IPv4 JSON (.gz) Télécharger Intervalle IPv4 → informations géographiques (tableau JSON).
IPIN IPv4 CSV (.gz) Télécharger CSV standard avec en-tête, pratique pour ETL/tableurs.
IPIN IPv4 SQL (.gz) Télécharger Inclut la création de table et des INSERT en lot ; import direct MySQL.

Remarque : tous les téléchargements sont des archives .gz. Décompressez avec gunzip ou traitez le flux directement dans votre application.

Téléchargement rapide en ligne de commande

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

# Utiliser automatiquement le nom de fichier du serveur (--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'

# Nom de fichier personnalisé + reprise
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 (multi-flux)

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

Astuce : les fichiers obtenus sont des archives .gz. Utilisez gunzip ou un outil d’extraction, ou lisez-les directement en flux dans votre programme.

Description des formats

JSON

Tableau ; chaque élément contient 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

Première ligne : en-tête ; les champs contenant des virgules/guillemets sont échappés selon la 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

Inclut la création de table et des INSERT en lot, pour un import direct dans MySQL.

-- Voir la définition de table ci-dessus
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);

Guide d’utilisation (prise en main)

  1. Sélectionnez et téléchargez, selon le besoin, les fichiers IPv6 ou IPv4 en JSON / CSV / SQL.
  2. Décompressez et importez dans votre base (ou parsez directement dans l’application).
  3. Appliquez des stratégies de répartition et de conformité par pays/région/ville ou coordonnées ; vous pouvez utiliser la distance pour une orchestration de proximité (granularité grossière).
  4. Mettez en place des tâches planifiées (quotidiennes/hebdomadaires) pour des mises à jour par écrasement et garder la base à jour.

Informations complémentaires

  • IPv6 et IPv4 partagent la même définition de colonnes ; seul l’espace d’adresses couvert diffère.
  • Les coordonnées et divisions administratives permettent une localisation approximative, sans constituer une adresse précise ; respectez les exigences de confidentialité et de conformité.
  • Pour des requêtes hautes performances, convertissez IPv4 en intervalles d’entiers 32 bits ; pour IPv6, utilisez des tries de préfixes/arbres d’intervalles ou des index spécialisés.