IPOK

Developer API

Free, no auth, CORS-enabled. Just GET the endpoints — JSON in, JSON out.

Endpoints

GET/api/ip?ip={ip}

Full IP check: geo, ASN, purity/risk, native IP, use-case scores, AI availability

GET/api/bgp?asn={asn}&ip={ip}

BGP routing: announced prefix, upstream/downstream ASNs (via RIPEstat)

GET/api/reverse-ip?ip={ip}

Reverse IP: domains hosted on the same IP

Example

# Full IP check: geo, ASN, purity/risk, native IP, use-case scores, AI availability
curl "https://ipok.io/api/ip?ip=1.1.1.1"

# BGP routing: announced prefix, upstream/downstream ASNs (via RIPEstat)
curl "https://ipok.io/api/bgp?asn=AS13335&ip=1.1.1.1"

# Reverse IP: domains hosted on the same IP
curl "https://ipok.io/api/reverse-ip?ip=1.1.1.1"

Key response fields

{
  "geo":   { "ip", "version", "country", "city", "asn", "asName", "isp", "lat", "lon" },
  "ipType":  "residential | hosting | mobile",
  "risk":    0,
  "signals": ["proxy", "hosting", ...],
  "nativeType": "native | broadcast | unknown",
  "scenarios":  [{ "key": "tiktok", "stars": 3, "verdict": "try" }],
  "services":   [{ "key": "chatgpt", "status": "available" }],
  "sources":    [{ "source": "ip-api", "risk": 10, "flags": {} }],
  "rdap?":      { "registry", "country", "registered", "org" }  // optional, omitted if RDAP unavailable
}

Status / errors

200OK
400Bad request: invalid/private IP, missing ip/asn, etc.
502Upstream data source unavailable or timed out

Rate limits & caching

No hard per-key rate limit; effectively bounded by upstream free-tier quotas (some endpoints are edge-cached). Add your own cache for high-volume or commercial use. Errors are { "error": "..." }.

Please use responsibly; add your own cache for high-volume or commercial use.