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
    Page Visibility API

    One event that's always been lacking within the document is a signal for when the user is looking at a given tab, or another tab. When does the user switch off our site to look at something else? When do they come back?

  • By
    Designing for Simplicity

    Before we get started, it's worth me spending a brief moment introducing myself to you. My name is Mark (or @integralist if Twitter happens to be your communication tool of choice) and I currently work for BBC News in London England as a principal engineer/tech...

Incredible Demos

Discussion

  1. Šime Vidas

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

    • Tiago Celestino

      You can create to server to get this information.

  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!