Sabari M Sabari M
Updated date Mar 11, 2021
How To Get Free Geolocation From IP Address using C#

In this blog, we will see how to get geolocation details on a given IP address using Free Api in C#. In a real-world scenario, we may need geolocation details from the user's IP address details for your website. 

IP API - HTTP GET Request

IP API is free and easy to use and integrate with your C# applications. You have to just send HTTP GET request along with the IP address to the below API URL to get geolocation information.

http://ip-api.com/json/206.189.139.240

JSON result from IP API:

{
    "status": "success",
    "country": "India",
    "countryCode": "IN",
    "region": "KA",
    "regionName": "Karnataka",
    "city": "Bengaluru",
    "zip": "560100",
    "lat": 12.9634,
    "lon": 77.5855,
    "timezone": "Asia/Kolkata",
    "isp": "DigitalOcean, LLC",
    "org": "Digital Ocean",
    "as": "AS14061 DigitalOcean, LLC",
    "query": "206.189.139.240"
}

IP Stack - HTTP GET Request

IP Stack API is also free and easy to use with your C# applications. In order to use IP Stack API, you need to pass the API key with the API address. It's an easy process, you can sign up with an IP stack and get your free API key. 

Once you received your API Key, You have to just send HTTP GET request along with the IP address and API key to the below API URL to get geolocation information for the user.

http://api.ipstack.com/199.187.211.62?access_key=<YOUR API KEY>

JSON result from IP Stack API:

{
    "ip": "199.187.211.62",
    "type": "ipv4",
    "continent_code": "NA",
    "continent_name": "North America",
    "country_code": "US",
    "country_name": "United States",
    "region_code": "WA",
    "region_name": "Washington",
    "city": "Seattle",
    "zip": "98168",
    "latitude": 47.490108489990234,
    "longitude": -122.2915267944336,
    "location": {
        "geoname_id": 5809844,
        "capital": "Washington D.C.",
        "languages": [
            {
                "code": "en",
                "name": "English",
                "native": "English"
            }
        ],
        "country_flag": "http://assets.ipstack.com/flags/us.svg",
        "country_flag_emoji": "🇺🇸",
        "country_flag_emoji_unicode": "U+1F1FA U+1F1F8",
        "calling_code": "1",
        "is_eu": false
    }
}

Get geolocation information Using IP API in C#

The below code shows how to retrieve geolocation information from the given IP address using IP API.

using System;
using System.Net.Http;
namespace GetGeoLocation
{
    class Program
    {
        static void Main(string[] args)
        {
            // IP API URL
            var Ip_Api_Url = "http://ip-api.com/json/206.189.139.232"; // 206.189.139.232 - This is a sample IP address. You can pass yours if you want to test          

            // Use HttpClient to get the details from the Json response
            using (HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));                
                // Pass API address to get the Geolocation details 
                httpClient.BaseAddress = new Uri(Ip_Api_Url);
                HttpResponseMessage httpResponse = httpClient.GetAsync(Ip_Api_Url).GetAwaiter().GetResult();
                // If API is success and receive the response, then get the location details
                if (httpResponse.IsSuccessStatusCode)
                {
                    var geolocationInfo = httpResponse.Content.ReadAsAsync<LocationDetails_IpApi>().GetAwaiter().GetResult();
                    if (geolocationInfo != null)
                    {
                        Console.WriteLine("Country: " + geolocationInfo.country);
                        Console.WriteLine("Region: " + geolocationInfo.regionName);
                        Console.WriteLine("City: " + geolocationInfo.city);
                        Console.WriteLine("Zip: " + geolocationInfo.zip);
                        Console.ReadKey();
                    }
                }
            }          
        }
    }  

    public class LocationDetails_IpApi
    {
        public string query { get; set; }
        public string city { get; set; }
        public string country { get; set; }
        public string countryCode { get; set; }
        public string isp { get; set; }
        public double lat { get; set; }
        public double lon { get; set; }
        public string org { get; set; }        
        public string region { get; set; }
        public string regionName { get; set; }
        public string status { get; set; }
        public string timezone { get; set; }
        public string zip { get; set; }
    }
}

Output:

Country: India
Region: Karnataka
City: Bengaluru
Zip: 560100

Get geolocation information Using IP Stack API in C#

The below code shows how to get the geolocation details from the given IP address using IP Stack API.

using System;
using System.Net.Http;

namespace GetGeoLocation
{
    class Program
    {
        static void Main(string[] args)
        {            
            var Ip_Stack_Url = "http://api.ipstack.com/199.188.211.50?access_key=<YOUR API KEY>";  // 199.188.211.50 - This is a sample IP address. You can pass yours if you want to test

            // Use HttpClient to get the details from the Json response
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                // Pass API address to get the Geolocation details 
                client.BaseAddress = new Uri(Ip_Stack_Url);
                HttpResponseMessage response = client.GetAsync(Ip_Stack_Url).GetAwaiter().GetResult();
                // If API is success and receive the response, then get the location details
                if (response.IsSuccessStatusCode)
                {
                    var geolocationInfo = response.Content.ReadAsAsync<LocationDetails_IpStack>().GetAwaiter().GetResult();
                    if (geolocationInfo != null)
                    {
                        Console.WriteLine("Country: " + geolocationInfo.country_name);
                        Console.WriteLine("Region: " + geolocationInfo.region_name);
                        Console.WriteLine("City: " + geolocationInfo.city);
                        Console.WriteLine("Zip: " + geolocationInfo.zip);
                        Console.ReadKey();
                    }
                }
            }
        }
    }

    public class LocationDetails_IpStack
    {
        public string ip { get; set; }
        public string country_code { get; set; }
        public string country_name { get; set; }
        public string region_code { get; set; }
        public string region_name { get; set; }
        public string city { get; set; }
        public string zip { get; set; }        
        public double latitude { get; set; }
        public double longitude { get; set; }        
    }
}

Output:

Country: United States
Region: Missouri
City: Clayton
Zip: 63101

 

ABOUT THE AUTHOR

Sabari M
Sabari M
Software Professional, India

IT professional with 14+ years of experience in Microsoft Technologies with a strong base in Microsoft .NET (C#.Net, ASP.Net MVC, ASP.NET WEB API, Webservices,...Read More

https://www.techieclues.com/profile/alagu-mano-sabari-m

Comments (0)

There are no comments. Be the first to comment!!!