IP Geolocation API

By  on  

Detecting geolocation information from your user provides you a massive advantage: improved conversion, better segmenting and analytics, and providing more relevant content. There are numerous paid services which will provide geolocation info but they're oftentimes too costly or short of valuable information. I was super impressed with IP Geolocation API, a free geolocation API that provides extra details like languages spoken and currency code!

The URL format for IP Geolocation API is simple:

GET https://api.ipgeolocationapi.com/geolocate/91.213.103.0

The response payload look like:

{
   "continent":"North America",
   "address_format":"{{recipient}}\n{{street}}\n{{city}} {{region_short}} {{postalcode}}\n{{country}}",
   "alpha2":"US",
   "alpha3":"USA",
   "country_code":"1",
   "international_prefix":"011",
   "ioc":"USA",
   "gec":"US",
   "name":"United States of America",
   "national_destination_code_lengths":[  
      3
   ],
   "national_number_lengths":[  
      10
   ],
   "national_prefix":"1",
   "number":"840",
   "region":"Americas",
   "subregion":"Northern America",
   "world_region":"AMER",
   "un_locode":"US",
   "nationality":"American",
   "postal_code":true,
   "unofficial_names":[
      "United States",
      "Vereinigte Staaten von Amerika",
      "États-Unis",
      "Estados Unidos",
      "アメリカ合衆国",
      "Verenigde Staten"
   ],
   "languages_official":[
      "en"
   ],
   "languages_spoken":[  
      "en"
   ],
   "geo":{  
      "latitude":37.09024,
      "latitude_dec":"39.44325637817383",
      "longitude":-95.712891,
      "longitude_dec":"-98.95733642578125",
      "max_latitude":71.5388001,
      "max_longitude":-66.885417,
      "min_latitude":18.7763,
      "min_longitude":170.5957,
      "bounds":{  
         "northeast":{  
            "lat":71.5388001,
            "lng":-66.885417
         },
         "southwest":{  
            "lat":18.7763,
            "lng":170.5957
         }
      }
   },
   "currency_code":"USD",
   "start_of_week":"sunday"
}

A few bits of extra information I appreciate:

  • address_format - Not every country formats their addresses the same way, and knowing the address format helps to ensure a delivery gets there
  • country_code - Useful for phone numbers
  • unofficial_names - Useful in getting localized names for a country
  • languages_official && languages_spoken - Useful for translation purposes.

In short, you get an incredible amount of information based on IP address!

IP Geolocation isn't just specific to IPs -- the API also provides an endpoint to get information about countries:

// https://api.ipgeolocationapi.com/countries/US

{
  "continent": "North America",
  "address_format": "{{recipient}}\n{{street}}\n{{city}} {{region_short}} {{postalcode}}\n{{country}}",
  "alpha2": "US",
  "alpha3": "USA",
  "country_code": "1",
  "international_prefix": "011",
  "ioc": "USA",
  "gec": "US",
  "name": "United States of America",
  "national_destination_code_lengths": [
    3
  ],
  "national_number_lengths": [
    10
  ],
  "national_prefix": "1",
  "number": "840",
  "region": "Americas",
  "subregion": "Northern America",
  "world_region": "AMER",
  "un_locode": "US",
  "nationality": "American",
  "postal_code": true,
  "unofficial_names": [
    "United States",
    "Vereinigte Staaten von Amerika",
    "États-Unis",
    "Estados Unidos",
    "アメリカ合衆国",
    "Verenigde Staten"
  ],
  "languages_official": [
    "en"
  ],
  "languages_spoken": [
    "en"
  ],
  "geo": {
    "latitude": 37.09024,
    "latitude_dec": "39.44325637817383",
    "longitude": -95.712891,
    "longitude_dec": "-98.95733642578125",
    "max_latitude": 71.5388001,
    "max_longitude": -66.885417,
    "min_latitude": 18.7763,
    "min_longitude": 170.5957,
    "bounds": {
      "northeast": {
        "lat": 71.5388001,
        "lng": -66.885417
      },
      "southwest": {
        "lat": 18.7763,
        "lng": 170.5957
      }
    }
  },
  "currency_code": "USD",
  "start_of_week": "sunday"
}

Best of all, IP Geolocation API is open source, so you can inspect the code, run your own server, and even contribute if you wish! Open source FTW!

IP Geolocation API is a very useful tool to help localize, monetize, convert, and provide a great user experience.

Recent Features

  • By
    Responsive Images: The Ultimate Guide

    Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...

  • By
    From Webcam to Animated GIF: the Secret Behind chat.meatspac.es!

    My team mate Edna Piranha is not only an awesome hacker; she's also a fantastic philosopher! Communication and online interactions is a subject that has kept her mind busy for a long time, and it has also resulted in a bunch of interesting experimental projects...

Incredible Demos

Discussion

  1. Šime Vidas

    But how do you get the user’s IP address?

  2. Hristo Chakarov

    Great feature will be if this provides TZ (timezone). Other than that – great tool, 10x for sharing

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!