DEV Community

Ashutosh Krishna
Ashutosh Krishna

Posted on • Originally published at ireadblog.com on

Get Location Information of IP Address Using Python

Introduction

We often require to know the location for an IP address or maybe even ours. One other use-case for this is when you want to send login information to users for your website. In this blog, we're going to see how we can know the location of an IP address using Python.

Get your tools ready

To accomplish the goal, we'll be using two APIs mentioned below:

  1. ipify: This API will help us know the IP address from where the request is coming.
  2. ipapi: This API will help us fetch location information for a particular IP address.

To interact with these APIs, we'll be using requests library in Python. If you're new to APIs, make sure you check out this tutorial to learn about them.

You can install this library using the pip command like this:

$ pip install requests
Enter fullscreen mode Exit fullscreen mode

Once the library is installed, we're good to go!

Get Location Information

As we discussed, we'll first fetch our IP address from the first API. Then we'll make use of this IP address to fetch location information for this particular IP address. So,we'll have two functions.

import requests

def get_ip():
    response = requests.get('https://api64.ipify.org?format=json').json()
    return response["ip"]

def get_location():
    ip_address = get_ip()
    response = requests.get(f'https://ipapi.co/{ip_address}/json/').json()
    location_data = {
        "ip": ip_address,
        "city": response.get("city"),
        "region": response.get("region"),
        "country": response.get("country_name")
    }
    return location_data

print(get_location())

Enter fullscreen mode Exit fullscreen mode

In the above code, we have two functions- get_ip() and get_location(). Let's discuss each of them separately.

get_ip() function

As per the API documentation of ipify, we need to make a GET request on https://api.ipify.org?format=json to get a JSON response that looks like this:

{
  "ip": "117.214.109.137"
}
Enter fullscreen mode Exit fullscreen mode

We store this response in a response variable which is nothing but a sort of Python dictionary with one key-value pair. Hence we returned the value of the key ip as response["ip"].

get_location() function

As per the API documentation of ipapi, we need to make a GET request on https://ipapi.co/{ip}/{format}/ to get location information for a particular IP address. {ip} is replaced by the IP address and {format} can be replaced with any of these - json, jsonp, xml, csv, yaml. This function internally calls the get_ip() function to get the IP address and then makes a GET request on the URL with the IP address. This API returns JSON response that looks like this:

{
"ip": "117.214.109.137",
"version": "IPv4",
"city": "Gaya",
"region": "Bihar",
"region_code": "BR",
"country": "IN",
"country_name": "India",
"country_code": "IN",
"country_code_iso3": "IND",
"country_capital": "New Delhi",
"country_tld": ".in",
"continent_code": "AS",
"in_eu": false,
"postal": "823002",
"latitude": 24.7935,
"longitude": 85.012,
"timezone": "Asia/Kolkata",
"utc_offset": "+0530",
"country_calling_code": "+91",
"currency": "INR",
"currency_name": "Rupee",
"languages": "en-IN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc",
"country_area": 3287590,
"country_population": 1352617328,
"asn": "AS9829",
"org": "National Internet Backbone"
}
Enter fullscreen mode Exit fullscreen mode

We get a whole lot of data in the response. You can use whatever works for you. For this tutorial, we'll just be using city, region and country. That's why we created a dictionary called location_data and stored all the data inside it and returned the same.

At last, we call the get_location() function and print the output. Our output will look like this:

{
  "ip": "117.214.109.137", 
  "city": "Gaya", 
  "region": "Bihar", 
  "country": "India"
}
Enter fullscreen mode Exit fullscreen mode

Conclusion

In this blog, we learned how we can interact with web services to get location information for a particular IP address.

Thanks for reading!

Top comments (0)