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
    How to Create a RetroPie on Raspberry Pi – Graphical Guide

    Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices.  While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo...

  • By
    An Interview with Eric Meyer

    Your early CSS books were instrumental in pushing my love for front end technologies. What was it about CSS that you fell in love with and drove you to write about it? At first blush, it was the simplicity of it as compared to the table-and-spacer...

Incredible Demos

  • By
    Check All/None Checkboxes Using MooTools

    There's nothing worse than having to click every checkbox in a list. Why not allow users to click one item and every checkbox becomes checked? Here's how to do just that with MooTools 1.2. The XHTML Note the image with the ucuc ID -- that...

  • By
    Animated AJAX Record Deletion Using Dojo

    I'm a huge fan of WordPress' method of individual article deletion. You click the delete link, the menu item animates red, and the item disappears. Here's how to achieve that functionality with Dojo JavaScript. The PHP - Content & Header The following snippet goes at the...

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!