Obtenir la ville d'un internaute passant sur votre site Web grâce à son adresse IP peut s'avérer utile pour afficher du contenu sur une carte, de la disponibilité suivant la distance, etc... Bien que l'API de géolocalisation fournie par le HTML5 soit très intéressante, découvrons le service que propose ipstack.

ipstack est un service utilisé par de grands noms du Web : Activision, Airbnb, Samsung, Microsoft. Grâce à la transmission de l'adresse IP de votre utilisateur à l'API d'ipstack, vous allez être en mesure d'obtenir certaines informations de votre utilisateur. Parmi elles, on retrouve :

  • les données liées à l'adresse IP (type, FAI)
  • les informations de géolocalisation (pays, ville, code postal, longitude, latitude, ...)
  • la devise
  • le fuseau horaire (timezone)
  • différents aspects de la sécurité (proxy, crawler, Tor, ...)

Dans sa version gratuite, l'API d'ipstack met à disposition uniquement les données relatives à la géolocalisation, couvrant plus de 2 millions d'emplacements situés dans plus de 200 000 villes. Vous pouvez faire 10 000 appels à cette API par mois, ce qui est relativement confortable.

L'utilisation de l'API est extrêmement simple. Une fois inscrit à ipstack, vous disposez d'un jeton (access key). Vous devrez passer la valeur de votre jeton dans chaque appel à l'API avec le paramètre access_key :

http://api.ipstack.com/123.123.123.123?access_key=VOTRE_ACCESS_KEY

Voici le retour obtenu en passant une URL de Google :


{
  "ip": "216.58.209.238",
  "type": "ipv4",
  "continent_code": "NA",
  "continent_name": "North America",
  "country_code": "US",
  "country_name": "United States",
  "region_code": "CA",
  "region_name": "California",
  "city": "Mountain View",
  "zip": "94043",
  "latitude": 37.419200000000004,
  "longitude": -122.0574,
  "location": {
    "geoname_id": 5375480,
    "capital": "Washington D.C.",
    "languages": [
      {
        "code": "en",
        "name": "English",
        "native": "English"
      }
    ],
    "country_flag": "http://assets.ipstack.com/flags/us.svg",
    "country_flag_emoji": "