Developer-first IP Geolocation API

IP Geolocation,
VPN & Proxy Detection API

Pinpoint IP location, detect VPNs and proxies, and validate data in real time with a simple, fast, and developer-friendly API.

Look up any IP address

Plans from €10/month • Cancel anytime

IP Address API Response
78.55.53.58
🇩🇪
Berlin, Germany
Europe/Berlin
Clean IP
ISP
Deutsche Telekom
Country
Germany (DE)
Connection Type
Broadband
Proxy
No
ASN
AS3320
VPN
No
{ } JSON Response

          
        
Trusted by thousands of businesses
Fast JSON API responses
Real-time validation
Simple integration, SDKs & examples
Features

Everything you need from an IP API

One endpoint, comprehensive data — geolocation, threat detection, and network intelligence in a single JSON response.

IP Geolocation

Accurate country, city, region, ZIP code, latitude/longitude, and timezone for any IPv4 or IPv6 address.

VPN & Proxy Detection

Detect VPNs, proxies, Tor nodes, and datacenter traffic in real time to protect your platform from abuse.

Email Validation

Verify email syntax, check disposable providers, and run real-time SMTP reachability tests with one API call.

Fraud Detection

Aggregate threat signals — spam lists, crawlers, datacenters, and known bad actors — into a single risk flag.

ASN & ISP Data

Identify the autonomous system number, ISP name, and organisation behind any IP address.

Real-time Results

Sub-100ms median response time powered by a globally distributed infrastructure with 99.9% uptime SLA.

Developer Experience

Simple REST API — start in minutes

One GET request returns everything: geolocation, threat signals, and network data. Predictable JSON structure, versioned endpoints, no XML, no SOAP.

City, country, region, ZIP, latitude/longitude, and timezone
VPN, proxy, Tor, and datacenter detection in one response
SDKs for JavaScript, Python, PHP, Ruby, Go
Consistent, versioned JSON API — no breaking changes
Read API Reference
Endpoint
GET /api/v1/ip/{ip}?api_key={key}
Example Request
curl "https://ip-api.io/api/v1/ip/78.55.53.58?api_key=YOUR_API_KEY"
Example Response
200
{
  "ip": "78.55.53.58",
  "isp": "Deutsche Telekom AG",
  "asn": "AS3320",
  "suspicious_factors": {
    "is_proxy": false,
    "is_tor_node": false,
    "is_vpn": false,
    "is_threat": false
  },
  "location": {
    "country": "Germany",
    "country_code": "DE",
    "city": "Berlin",
    "latitude": 52.5694,
    "longitude": 13.3753,
    "timezone": "Europe/Berlin"
  }
}
Endpoint
GET /api/v1/ip/{ip}?api_key={key}
Example Request
const res = await fetch(
  "https://ip-api.io/api/v1/ip/78.55.53.58?api_key=YOUR_API_KEY"
);
const data = await res.json();
console.log(data.location.city);           // "Berlin"
console.log(data.suspicious_factors.is_vpn); // false
Example Response
200
{
  "ip": "78.55.53.58",
  "isp": "Deutsche Telekom AG",
  "asn": "AS3320",
  "suspicious_factors": {
    "is_proxy": false,
    "is_tor_node": false,
    "is_vpn": false,
    "is_threat": false
  },
  "location": {
    "country": "Germany",
    "country_code": "DE",
    "city": "Berlin",
    "latitude": 52.5694,
    "longitude": 13.3753,
    "timezone": "Europe/Berlin"
  }
}
Endpoint
GET /api/v1/ip/{ip}?api_key={key}
Example Request
import requests

res = requests.get(
    "https://ip-api.io/api/v1/ip/78.55.53.58",
    params={"api_key": "YOUR_API_KEY"}
)
data = res.json()
print(data["location"]["city"])              # "Berlin"
print(data["suspicious_factors"]["is_vpn"])  # False
Example Response
200
{
  "ip": "78.55.53.58",
  "isp": "Deutsche Telekom AG",
  "asn": "AS3320",
  "suspicious_factors": {
    "is_proxy": false,
    "is_tor_node": false,
    "is_vpn": false,
    "is_threat": false
  },
  "location": {
    "country": "Germany",
    "country_code": "DE",
    "city": "Berlin",
    "latitude": 52.5694,
    "longitude": 13.3753,
    "timezone": "Europe/Berlin"
  }
}
Endpoint
GET /api/v1/ip/{ip}?api_key={key}
Example Request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
  "https://ip-api.io/api/v1/ip/78.55.53.58?api_key=YOUR_API_KEY");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch));
echo $data->location->city;           // "Berlin"
echo $data->suspicious_factors->is_vpn; // false
Example Response
200
{
  "ip": "78.55.53.58",
  "isp": "Deutsche Telekom AG",
  "asn": "AS3320",
  "suspicious_factors": {
    "is_proxy": false,
    "is_tor_node": false,
    "is_vpn": false,
    "is_threat": false
  },
  "location": {
    "country": "Germany",
    "country_code": "DE",
    "city": "Berlin",
    "latitude": 52.5694,
    "longitude": 13.3753,
    "timezone": "Europe/Berlin"
  }
}
Endpoint
GET /api/v1/ip/{ip}?api_key={key}
Example Request
require 'net/http'
require 'json'

uri = URI('https://ip-api.io/api/v1/ip/78.55.53.58')
uri.query = URI.encode_www_form(api_key: 'YOUR_API_KEY')

res = Net::HTTP.start(uri.hostname, use_ssl: true) { |h| h.get(uri) }
data = JSON.parse(res.body)
puts data['location']['city']              # "Berlin"
puts data['suspicious_factors']['is_vpn']  # false
Example Response
200
{
  "ip": "78.55.53.58",
  "isp": "Deutsche Telekom AG",
  "asn": "AS3320",
  "suspicious_factors": {
    "is_proxy": false,
    "is_tor_node": false,
    "is_vpn": false,
    "is_threat": false
  },
  "location": {
    "country": "Germany",
    "country_code": "DE",
    "city": "Berlin",
    "latitude": 52.5694,
    "longitude": 13.3753,
    "timezone": "Europe/Berlin"
  }
}
Use Cases

Built for real-world applications

From fraud prevention to geo-targeting — IP intelligence that fits your workflow.

Fraud Prevention

Block VPNs, proxies, and Tor exit nodes at login and checkout. Combine with risk scoring to stop fraudulent transactions before they happen.

VPN Detection Proxy Blocking Tor Detection

Geo-targeting

Deliver localised content, pricing, and promotions based on country, city, and timezone. No cookies required — just the visitor's IP.

Country Routing Local Pricing Content Rules

E-commerce Security

Detect suspicious orders from high-risk regions or anonymising services. Combine IP signals with email validation for layered fraud protection.

Risk Scoring Email Validation Order Screening
Why IP-API.io

Simple integration, enterprise reliability

Get started in minutes and scale to millions of requests without changing a line of code.

Simple Integration

One GET request, one JSON response. No SDKs required — works with any language or framework in under 5 minutes.

Real-time Data

Live geolocation, threat databases updated continuously, and sub-100ms response times for latency-sensitive applications.

Enterprise Security

99.9% uptime SLA, HTTPS-only endpoints, and SOC-2 aligned data handling for production workloads at any scale.

Simple Pricing

Plans from €10/month with no hidden fees. Scale your usage as your needs grow and cancel anytime.

Rated 5 out of 5 stars by our customers!

Companies from across the globe have had fantastic experiences using the service. Here's what they have to say.

Andrey E.

CEO, Gimmeproxy

Adrian R.

Project Manager

Lucas N.

Web Developer

Samantha T.

Data Analyst

Miguel C.

Software Engineer

Mark R.

Product Manager

Pricing

Simple, transparent pricing

Start small, scale as you grow. No hidden fees.

Small
€10 /month
100,000 geo IP requests / month
10,000 advanced email validation requests
Syntax & disposable check
Location, threat & time zone data
Email support
99.9% uptime SLA
Get started
Large
€49 /month
1,000,000 geo IP requests / month
100,000 advanced email validation requests
Full validation suite
Role & catch-all detection
SLA & uptime guarantee
All datasets
Custom integrations
Dedicated support
Get started

Ready to improve your email quality?

Start validating email addresses in minutes with a simple API and clear documentation.

> _
curl ip-api.io/api/v1/
email/user@example.com
API