Copied to clipboard
Your IP Address
IPv4
216.73.216.73
IPv6
Checking...
Location
Columbus, Ohio
Country
πŸ‡ΊπŸ‡Έ United States
ISP
Amazon.com, Inc.
ASN
AS16509
VPN
No
Proxy
No
Tor
No
Hosting
No
Timezone
America/New_York
Coordinates
39.9612, -82.9988

Precise IP geolocation for modern applications

Get accurate location data from any IP address. City-level precision, real-time updates, and all lookups processed in-house for maximum privacy.

100%
In-house processing
193
Countries covered
>10M
External API calls
>15K
Active users
REST API

Simple, private API

All lookups are processed locally using our own geolocation database. No data is sent to third parties.

GET /api/lookup/my Get your own IP info
cURL
curl "https://ipaddress.to/api/lookup/my"
JavaScript
const res = await fetch('https://ipaddress.to/api/lookup/my');
const data = await res.json();
console.log(data);
Python
import requests

data = requests.get('https://ipaddress.to/api/lookup/my').json()
print(data)
PHP
$data = json_decode(
    file_get_contents('https://ipaddress.to/api/lookup/my'),
    true
);
print_r($data);
C#
using var client = new HttpClient();
var json = await client.GetStringAsync("https://ipaddress.to/api/lookup/my");
Console.WriteLine(json);
Go
resp, _ := http.Get("https://ipaddress.to/api/lookup/my")
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
Ruby
require 'net/http'
require 'json'

data = JSON.parse(Net::HTTP.get(URI('https://ipaddress.to/api/lookup/my')))
puts data
Java
HttpClient client = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://ipaddress.to/api/lookup/my")).build();
String body = client.send(req, BodyHandlers.ofString()).body();
System.out.println(body);
Perl
use LWP::Simple;
use JSON;

my $data = decode_json(get('https://ipaddress.to/api/lookup/my'));
print $data->{ip};
Rust
let body = reqwest::get("https://ipaddress.to/api/lookup/my")
    .await?.text().await?;
println!("{}", body);
Response
{
  "success": true,
  "ip": "203.45.167.89",
  "type": "IPv4",
  "country": "United States",
  "country_code": "US",
  "region": "California",
  "city": "San Francisco",
  "latitude": 37.7749,
  "longitude": -122.4194,
  "timezone": "America/Los_Angeles",
  "isp": "Cloudflare, Inc.",
  "asn": "AS13335"
}
GET /api/lookup/{ip_or_hostname} Lookup an IP address or hostname
ip_or_hostname optional
string
IPv4/IPv6 address or hostname. Omit to get your own IP info.
Example
curl "https://ipaddress.to/api/lookup/8.8.8.8"
Response
{
  "success": true,
  "ip": "8.8.8.8",
  "type": "IPv4",
  "rdns": "dns.google",
  "location": {
    "continent": "NA",
    "continent_name": "North America",
    "country": "United States",
    "country_code": "US",
    "state": "California",
    "city": "Mountain View",
    "latitude": 37.422,
    "longitude": -122.085,
    "timezone": "America/Los_Angeles",
    "is_eu_member": false,
    "calling_code": "1",
    "capital": "Washington, D.C.",
    "languages": "English",
    "country_tld": ".us",
    "currency": { "code": "USD", "name": "US Dollar" }
  },
  "asn": {
    "asn": 15169,
    "descr": "Google LLC",
    "country": "US",
    "org": "Google LLC"
  },
  "company": { "name": "Google LLC" },
  "is_vpn": false,
  "is_proxy": false,
  "is_tor": false,
  "is_hosting": false,
  "vpn_provider": null
}
GET /api/whois/{ip_or_domain} WHOIS/RDAP lookup (subdomains auto-stripped to root domain)
query required
string
IP address (v4/v6) or domain name to query
cURL
curl "https://ipaddress.to/api/whois/google.com"
JavaScript
const res = await fetch('https://ipaddress.to/api/whois/google.com');
const data = await res.json();
console.log(data.parsed.registrar); // "MarkMonitor Inc."
Python
import requests

data = requests.get('https://ipaddress.to/api/whois/google.com').json()
print(data['parsed']['registrar'])
PHP
$data = json_decode(
    file_get_contents('https://ipaddress.to/api/whois/google.com'),
    true
);
echo $data['parsed']['registrar'];
C#
using var client = new HttpClient();
var json = await client.GetStringAsync(
    "https://ipaddress.to/api/whois/google.com");
Console.WriteLine(json);
Go
resp, _ := http.Get("https://ipaddress.to/api/whois/google.com")
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
Perl
use LWP::Simple;
use JSON;

my $data = decode_json(get('https://ipaddress.to/api/whois/google.com'));
print $data->{parsed}{registrar};
Response (domain)
{
  "success": true,
  "query": "google.com",
  "type": "domain",
  "found": true,
  "parsed": {
    "domain_name": "GOOGLE.COM",
    "registrar": "MarkMonitor Inc.",
    "registrar_url": "https://rdap.markmonitor.com/rdap/domain/GOOGLE.COM",
    "registrar_iana_id": "292",
    "creation_date": "1997-09-15T04:00:00Z",
    "expiry_date": "2028-09-14T04:00:00Z",
    "updated_date": "2026-05-11T18:51:14Z",
    "status": ["client delete prohibited", "client transfer prohibited"],
    "nameservers": ["ns1.google.com", "ns2.google.com"],
    "dnssec": "unsigned",
    "abuse_email": "[email protected]",
    "abuse_phone": "tel:+1.2086851750"
  },
  "source": "rdap",
  "duration_ms": 342
}
GET /api/dns/{type}/{domain} DNS propagation checker across 40 global servers
type required
string
DNS record type: A, AAAA, CNAME, MX, NS, TXT, SOA, PTR, SRV, CAA
domain required
string
Domain to query (e.g., google.com)
server optional
string
Query a single DNS server IP instead of all 40. Pass as query param: ?server=8.8.8.8
cURL
curl "https://ipaddress.to/api/dns/a/google.com"
JavaScript
const res = await fetch('https://ipaddress.to/api/dns/mx/google.com');
const reader = res.body.getReader();
// Streams NDJSON β€” one result per line per server
Python
import requests, json
r = requests.get('https://ipaddress.to/api/dns/ns/google.com', stream=True)
for line in r.iter_lines():
    print(json.loads(line))

Response is NDJSON (streaming). Each line is a JSON object: start, result (Γ—40 servers), then done with propagation summary.

GET /api/resolve/{hostname} Resolve hostname to IP addresses
hostname required
string
Hostname to resolve (e.g., github.com)
cURL
curl "https://ipaddress.to/api/resolve/github.com"
JavaScript
const res = await fetch('https://ipaddress.to/api/resolve/github.com');
const data = await res.json();
console.log(data.a); // ["140.82.121.3"]
Python
import requests

data = requests.get('https://ipaddress.to/api/resolve/github.com').json()
for ip in data['a']:
    print(ip)
PHP
$data = json_decode(
    file_get_contents('https://ipaddress.to/api/resolve/github.com'),
    true
);
print_r($data['a']); // IPv4 addresses
C#
using var client = new HttpClient();
var json = await client.GetStringAsync(
    "https://ipaddress.to/api/resolve/github.com");
Console.WriteLine(json);
Go
resp, _ := http.Get("https://ipaddress.to/api/resolve/github.com")
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
Perl
use LWP::Simple;
use JSON;

my $data = decode_json(get('https://ipaddress.to/api/resolve/github.com'));
print join("\n", @{$data->{a}});
Response
{
  "success": true,
  "hostname": "github.com",
  "a": ["140.82.121.3"],
  "aaaa": [],
  "cname": [],
  "reverse": {
    "140.82.121.3": "lb-140-82-121-3-iad.github.com"
  },
  "total_ips": 1,
  "has_ipv4": true,
  "has_ipv6": false,
  "duration_ms": 87
}
GET /api/score/{ip_or_hostname} IP fraud risk score with threat indicators
ip_or_hostname optional
string
IP address or hostname to score. Use "my" or omit for your own IP.
cURL
curl "https://ipaddress.to/api/score/91.246.179.201"
JavaScript
const res = await fetch('https://ipaddress.to/api/score/91.246.179.201');
const data = await res.json();
console.log(data.score, data.risk, data.vpn_provider);
// 74 "critical" "ExpressVPN"
Python
import requests

data = requests.get('https://ipaddress.to/api/score/91.246.179.201').json()
print(f"Score: {data['score']}/100 ({data['risk']})")
print(f"VPN: {data['vpn_provider']}")
PHP
$data = json_decode(
    file_get_contents('https://ipaddress.to/api/score/91.246.179.201'),
    true
);
echo $data['score'] . ' β€” ' . $data['risk'];
Response
{
  "success": true,
  "ip": "91.246.179.201",
  "score": 74,
  "risk": "critical",
  "vpn_provider": "ExpressVPN",
  "rdns": null,
  "location": {
    "country": "United States",
    "country_code": "US",
    "city": "Fargo",
    "currency": { "code": "USD", "name": "US Dollar" }
  },
  "asn": { "asn": 137409, "org": "GSL Networks Pty LTD" },
  "company": { "name": "GSL Networks Pty LTD", "type": "hosting" },
  "checks": {
    "vpn_detected": true,
    "vpn_asn": true,
    "hosting_asn": true,
    "tor_exit": false,
    "blocklist_listed": true,
    "blocklist_count": 4,
    "has_rdns": false
  },
  "factors": [
    { "name": "VPN Provider ASN", "impact": "high", "detail": "Identified as ExpressVPN" },
    { "name": "Threat Intelligence", "impact": "high", "detail": "IP found on 4 critical-severity threat intelligence feed(s)" }
  ],
  "duration_ms": 45
}
Try it live

API Playground

Test all APIs directly in your browser.

Live Testing
Ready
β€”
// Click "Run Test" or a preset to make a request