Skip to main content

ip-api-io — Official Python client for ip-api.io

PyPI test License: MIT

The official Python client for the ip-api.io IP intelligence platform. One client covers IP geolocation, email validation and verification (syntax, MX, SMTP deliverability), fraud detection and risk scoring, VPN/proxy/Tor detection, disposable email detection, ASN lookup, WHOIS, reverse DNS, MX records and domain age.

Zero dependencies — pure standard library.

Install

pip install ip-api-io

Quickstart

from ipapi_io import IpApiClient

client = IpApiClient(api_key="YOUR_API_KEY")  # free key at https://ip-api.io

# Where is this IP, and is it risky?
info = client.lookup("8.8.8.8")
print(info["location"]["country"])            # "United States"
print(info["suspicious_factors"]["is_vpn"])   # False

risk = client.risk_score("8.8.8.8")
print(risk["score"], risk["risk_level"])      # 0 "low"

email = client.validate_email("user@example.com")
print(email["reachable"], email["disposable"]) # "yes" False

An API key is required — the API rejects keyless requests with 401. Sign up at ip-api.io for a free key.

Documentation

Each guide documents the methods for one capability, with runnable examples and a link to the matching ip-api.io product page:

Methods

Every method maps to one ip-api.io endpoint and its product page:

Method Endpoint Product page
lookup(ip=None) GET /api/v1/ip[/{ip}] IP geolocation
lookup_batch(ips) POST /api/v1/ip/batch (≤100 IPs) Bulk IP lookup
email_info(email) GET /api/v1/email/{email} Email validation
validate_email(email) GET /api/v1/email/advanced/{email} Advanced email validation
validate_email_batch(emails) POST /api/v1/email/advanced/batch (≤100) Email list cleaning
risk_score(ip=None) GET /api/v1/risk-score[/{ip}] Risk score
email_risk_score(email) GET /api/v1/risk-score/email/{email} Fraud detection
ip_reputation(ip) GET /api/v1/ip-reputation/{ip} IP reputation
tor_check(ip) GET /api/v1/tor/{ip} Tor detection
asn(ip) GET /api/v1/asn/{ip} ASN lookup
whois(domain) GET /api/v1/dns/whois/{domain} WHOIS lookup
reverse_dns(ip) GET /api/v1/dns/reverse/{ip} Reverse DNS
forward_dns(hostname) GET /api/v1/dns/forward/{hostname} —
mx_records(domain) GET /api/v1/dns/mx/{domain} MX record lookup
domain_age(domain) GET /api/v1/domain/age/{domain} Domain age checker
domain_age_batch(domains) POST /api/v1/domain/age/batch Domain age checker
rate_limit() GET /api/v1/ratelimit —
usage_summary() GET /api/v1/usage/summary —

All methods return parsed JSON as plain dicts. ipapi_io.types ships TypedDict definitions for editor autocompletion.

Error handling

The client raises typed exceptions and never retries — on 429, RateLimitError.reset tells you when your quota renews:

from ipapi_io import IpApiClient, RateLimitError, AuthenticationError

client = IpApiClient(api_key="YOUR_API_KEY")
try:
    client.lookup("8.8.8.8")
except RateLimitError as e:
    print(f"limit={e.limit} remaining={e.remaining} resets_at={e.reset}")
except AuthenticationError:
    print("invalid API key")

See docs/error-handling.md for the full exception taxonomy.


ip-api-io is the official client for ip-api.io. It is not affiliated with ip-api.com or ipapi.com.

Metadata

Release files for ip-api-io 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ip-api-io 1.0.0
File Size Uploaded
ip_api_io-1.0.0.tar.gz 24.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ip-api-io 1.0.0
File Interpreter ABI Platform
ip_api_io-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.3 kB

Release files / ip_api_io-1.0.0.tar.gz

Download URL ip_api_io-1.0.0.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
99bc48c7e50c3df82d2b22780ba14fcc39f4826b3989d12360c859ab99b8a44e
BLAKE2b-256 checksum
How to use checksums
f8be563ab30ca4a5f24cf232bf01e295d73daa02f8b215273d0f704e419425e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ip_api_io-1.0.0-py3-none-any.whl

Download URL ip_api_io-1.0.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ddc0620d3bd69b9593b95be80142b4baed2ae643340ff6123aec63328c12b2e
BLAKE2b-256 checksum
How to use checksums
0fb2bfa5dba21cbaf9f62285c045f0b11c26df3a7a2fc63e49419895dba703ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page