IP Geolocation API
bigdatacloud · Location
BigDataCloud's IP Geolocation API returns detailed information about the geographical location, ownership and connectivity of the provided IPv4 IP address. This API is powered by patent-pending ‘Next Generation IP Geolocation Technology'. As a result, the API has sub-millisecond response time. You can authenticate the API with the use of API keys provided in your BigDataCloud account. BigDataCloud provides 10K Free queries per month. You can upgrade your package with $2/month per 10K addition
Authentication
Sample Requests
This API returns additional security hazard report in addition to confidence area and locality information.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full?ip=193.114.112.122&key=%7B%7BAPI%20KEY%7D%7D&localityLanguage=en"
import requests
params = {
"ip": "193.114.112.122",
"key": "{{API KEY}}",
"localityLanguage": "en"
}
response = requests.get(
"https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full');
url.searchParams.set('ip', '193.114.112.122');
url.searchParams.set('key', '{{API KEY}}');
url.searchParams.set('localityLanguage', 'en');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full")
q := baseURL.Query()
q.Set("ip", "193.114.112.122")
q.Set("key", "{{API KEY}}")
q.Set("localityLanguage", "en")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full")
uri.query = URI.encode_www_form({
"ip" => "193.114.112.122",
"key" => "{{API KEY}}",
"localityLanguage" => "en"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-full?" . http_build_query([
"ip" => "193.114.112.122",
"key" => "{{API KEY}}",
"localityLanguage" => "en"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Returns list of geocoordinates which represents estimated geolocation confidence area.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence?ip=193.114.112.122&key=%7B%7BAPI%20KEY%7D%7D&localityLanguage=en"
import requests
params = {
"ip": "193.114.112.122",
"key": "{{API KEY}}",
"localityLanguage": "en"
}
response = requests.get(
"https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence');
url.searchParams.set('ip', '193.114.112.122');
url.searchParams.set('key', '{{API KEY}}');
url.searchParams.set('localityLanguage', 'en');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence")
q := baseURL.Query()
q.Set("ip", "193.114.112.122")
q.Set("key", "{{API KEY}}")
q.Set("localityLanguage", "en")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence")
uri.query = URI.encode_www_form({
"ip" => "193.114.112.122",
"key" => "{{API KEY}}",
"localityLanguage" => "en"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/bigdatacloud.net/1.0.0/data/ip-geolocation-with-confidence?" . http_build_query([
"ip" => "193.114.112.122",
"key" => "{{API KEY}}",
"localityLanguage" => "en"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with IP Geolocation API?
IP Geolocation API is a Location API. Developers commonly use location APIs for:
- tracking assets and vehicles in real time
- building delivery and logistics apps
- finding nearby businesses or services
- geo-fencing and location-based notifications
- address validation and autocomplete
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. IP Geolocation API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?