IP Lookup API

The IP Lookup API provides location information for any valid IP address. It works with both IPv4 and IPv6 addresses.



Returns the location of the ip address specified. The response contains both the geographical coordinates (latitude/longitude) as well as the city and country.


address (required) - IP Address to query. Must be in the format A.B.C.D. For example:


X-Api-Key (required) - API Key associated with your account.

Response Fields

address: The IP address of the query

timezone: The time zone related to the IP address

lat premium only: The latitude coordinate of the IP address location

lon premium only: The longitude coordinate of the IP address location

zip premium only: The ZIP code of the IP address location

city premium only: The city where the IP address is located

region: The region name where the IP address is located. In the United States, this is equivalent to the state.

region_code: The region code of the IP address location. In the United States, this is equivalent to the 2-letter state abbreviation.

country: The name of the country where the IP address is located

country_code: The 2-letter country code of the IP address location

is_valid: The validity status of the IP address

isp: The Internet Service Provider associated with the IP address

Sample Request URL

Live Demo!


Sample Response

  "is_valid": true,
  "country": "United States",
  "country_code": "US",
  "region_code": "IL",
  "region": "Illinois",
  "city": "Chicago",
  "zip": "60620",
  "lat": 41.7405,
  "lon": -87.6587,
  "timezone": "America/Chicago",
  "isp": "Comcast Cable Communications, LLC",
  "address": ""

import requests

ip_addr = ''
api_url = 'https://api.api-ninjas.com/v1/iplookup?address={}'.format(ip_addr)
response = requests.get(api_url, headers={'X-Api-Key': 'YOUR_API_KEY'})
if response.status_code == requests.codes.ok:
    print("Error:", response.status_code, response.text)
var ip_addr = ''
    method: 'GET',
    url: 'https://api.api-ninjas.com/v1/iplookup?address=' + ip_addr,
    headers: { 'X-Api-Key': 'YOUR_API_KEY'},
    contentType: 'application/json',
    success: function(result) {
    error: function ajaxError(jqXHR) {
        console.error('Error: ', jqXHR.responseText);
const request = require('request');
var ip_addr = '';
  url: 'https://api.api-ninjas.com/v1/iplookup?address=' + ip_addr,
  headers: {
    'X-Api-Key': 'YOUR_API_KEY'
}, function(error, response, body) {
  if(error) return console.error('Request failed:', error);
  else if(response.statusCode != 200) return console.error('Error:', response.statusCode, body.toString('utf8'));
  else console.log(body)
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import com.fasterxml.jackson.databind.ObjectMapper;

URL url = new URL("https://api.api-ninjas.com/v1/iplookup?address=");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("accept", "application/json");
InputStream responseStream = connection.getInputStream();
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(responseStream);
let ip_addr = "".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let url = URL(string: "https://api.api-ninjas.com/v1/iplookup?address="+ip_addr!)!
var request = URLRequest(url: url)
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "X-Api-Key")
let task = URLSession.shared.dataTask(with: request) {(data, response, error) in
    guard let data = data else { return }
    print(String(data: data, encoding: .utf8)!)
If your programming language is not listed in the Code Example above, you can still make API calls by using a HTTP request library written in your programming language and following the above documentation.