The API returns the location of an IP address (country, region, city, zipcode, latitude, longitude) and the associated timezone in XML, JSON or plain text format. You can find the sample codes below with PHP, Javascript, Ruby, Python and ASP.
There are two different types of API queries, which are country precision API and city precision API.
Perform IP lookup for country information
https://api.ipinfodb.com/v3/ip-country/?key=YOUR_API_KEY&ip=IPV4_OR_IPV6_ADDRESS&format=json
{
"statusCode" : "OK",
"statusMessage" : "",
"ipAddress" : "8.8.8.8",
"countryCode" : "US",
"countryName" : "United States of America"
}
Perform IP lookup for city information
https://api.ipinfodb.com/v3/ip-city/?key=YOUR_API_KEY&ip=IPV4_OR_IPV6_ADDRESS&format=json
{
"statusCode" : "OK",
"statusMessage" : "",
"ipAddress" : "8.8.8.8",
"countryCode" : "US",
"countryName" : "United States of America",
"regionName" : "California",
"cityName" : "Mountain View",
"zipCode" : "94043",
"latitude" : "37.406",
"longitude" : "-122.079",
"timeZone" : "-07:00"
}
Parameter | Required | Default | Value |
---|---|---|---|
key | Yes | API key provided with your free account. | |
ip | No | Client IP | IPv4 or IPv6 address. |
format | No | raw | raw, xml, json |
callback | No | Required when using JSON callback. |
Note: Please use the appropriate API for your needs. You can help us keep the load low on our servers by making sure that:
Below are the examples using all the features of the class in different languages. You can download the PHP class for our API here.
<?php
include 'class.IPInfoDB.php';
// Load the class
$ipinfodb = new IPInfoDB('YOUR_API_KEY');
$results = $ipinfodb->getCity($_SERVER['REMOTE_ADDR']);
// Getting the result
echo "Result
\n";
if (!empty($results) && is_array($results)) {
foreach ($results as $key => $value) {
echo $key . ' : ' . $value . "
\n";
}
}
try (java.util.Scanner s = new java.util.Scanner(new java.net.URL("https://api.ipinfodb.com/v3/ip-city?key={YOUR_API_KEY}&ip={IP_ADDRESS}}").openStream(), "UTF-8").useDelimiter("\\A")) {
System.out.println(s.next());
} catch (java.io.IOException e) {
e.printStackTrace();
}
Dim httpClient As New System.Net.Http.HttpClient
Dim response As String = Await httpClient.GetStringAsync("https://api.ipinfodb.com/v3/ip-city?key={YOUR_API_KEY}&ip={IP_ADDRESS}")
Console.WriteLine($"{response}")
public partial class ipinfodb : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebAPI();
}
private void WebAPI()
{
string myIP = HttpContext.Current.Request.UserHostAddress;
string strQuery;
string key = "";
HttpWebRequest HttpWReq;
HttpWebResponse HttpWResp;
strQuery = "https://api.ipinfodb.com/v3/ip-city/?" + "ip=" + myIP + "&key=" + key + "&format=json";
JavaScriptSerializer serializer = new JavaScriptSerializer();
HttpWReq = (HttpWebRequest)WebRequest.Create(strQuery);
HttpWReq.Method = "GET";
HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
System.IO.StreamReader reader = new System.IO.StreamReader(HttpWResp.GetResponseStream());
string content = reader.ReadToEnd();
dynamic item = serializer.Deserialize<object>(content);
string city = item["cityName"];
string countryc = item["countryCode"];
string countryn = item["countryName"];
string region = item["regionName"];
string lat = item["latitude"];
string longi = item["longitude"];
string timez = item["timeZone"];
string zip = item["zipCode"];
//displaying the result
Response.Write("Welcome Visitors from " + city + "<br />");
Response.Write("Your IP address: " + myIP + "<br />");
Response.Write("Country Code: " + countryc + "<br />");
Response.Write("Country Name: " + countryn + "<br />");
Response.Write("Region Name: " + region + "<br />");
Response.Write("Latitude: " + lat + "<br />");
Response.Write("Longitude: " + longi + "<br />");
Response.Write("Time Zone: " + timez + "<br />");
Response.Write("Zip Code: " + zip + "<br />");
}
}
from requests import get
response = get('https://api.ipinfodb.com/v3/ip-city?key={YOUR_API_KEY}&ip={IP_ADDRESS}').text
print(format(response))
curl -s "https://api.ipinfodb.com/v3/ip-city?key={YOUR_API_KEY}&ip={IP_ADDRESS}"
require "net/http"
response = Net::HTTP.get(URI("https://api.ipinfodb.com/v3/ip-city?key={YOUR_API_KEY}&ip={IP_ADDRESS}"))
puts response
If you use our API to track your website visitors geolocation, we highly recommend that you put the geolocation data in a cookie (or in a database...). This way, you only query our servers for new visitors, not all page view. To achieve this, here is a quick sample in PHP and ASP how to set the country code in a cookie:
<?php
include 'class.IPInfoDB.php';
//Set geolocation cookie
if (!isset($_COOKIE['geolocation'])) {
$ipinfodb = new IPInfoDB('YOUR_API_KEY');
$result = $ipinfodb->getCountry($_SERVER['REMOTE_ADDR']);
if ($result['statusCode'] == 'OK') {
$data = base64_encode(serialize($result));
setcookie('geolocation', $data, time() + 3600 * 24 * 7); // Set cookie for 1 week
}
} else {
$result = unserialize(base64_decode($_COOKIE['geolocation']));
}
var_dump($result);
<%
'Get visitor IP
Dim UserIPAddress
UserIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserIPAddress = "" Then
UserIPAddress = Request.ServerVariables("REMOTE_ADDR")
End If
%>
<%
'Set API key
api_key = "YOUR_API_KEY"
%>
<%
'Get info and print
myxml="https://api.ipinfodb.com/v3/ip-city/?key="&api_key&"&ip=" &UserIPAddress&"&format=xml"
set xml = server.CreateObject("MSXML2.DOMDocument.6.0")
xml.async = "false"
xml.resolveExternals = "false"
xml.setProperty "ServerHTTPRequest", true
xml.load(myxml)
response.write "First result
"
for i=0 to 10
response.write xml.documentElement.childNodes(i).nodename & " : "
response.write xml.documentElement.childNodes(i).text & "
"
NEXT
response.write "
"
%>
We are always trying to improve on our free services and to do so we need to be able to tell who is querying what data and how often. This will enable us to fully optimize our limited resources to providing more stable and reliable service to our users.
This API key is just a random string of characters which uniquely identifies each user. This is how we can track your usage for the purpose of optimizing our resources. Users of our existing APIs need not use this API key but please note that we are in the process of phasing out the old APIs and you will have to use our newer APIs in the future. These new APIs are more optimized for performance and as such we need to be able to allocate resources in an optimal fashion by tracking the usage of the APIs.
This API key is FREE for everyone. You just have to register and a unique API key will be sent to your email address.
Over 99.5% on a country level and around 60% on a city level for the US within a 25 mile radius. You can try a few lookups with our IP locator.
We have multiple servers. They are load-balanced & highly available. Our goal is to have over 99.99% uptime.
Depending on the locales of your server, you might have trouble displaying accent in country, region and city name. Using PHP, you might need to utf8_encode the answer from our API. For other languages, look at the documentation on how to encode in UTF-8.
We do not have a specific daily limit but queries that are at a rate faster than 2 per second will be blocked. If you stay below 2 queries/second everything will be normal. Good programming practices such as not querying our API for all page views (you can store the data in a cookie or a database) will also help not reaching the limit.
If you need to perform more queries in the website, it is better to implement a local database query using IP2Location LITE. It is free for personal or commercial use with attribution required.
Looking for IP geolocation information? Try it for free now!
Register For Free Now