Everything needed to call IP99 — IP risk verdicts with the age of their evidence, plus geolocation and network facts — from your own code, and to find it from an AI agent.
You do not need a package: the API is one GET with no key. The clients here are single files you can copy
if you want typed errors and sane 429 handling without writing them yourself.
| What | Where |
|---|---|
Python client: one file, zero dependencies — copy python/ip99/__init__.py into your project |
python/ |
Node client: one ESM file with types — copy node/index.js and index.d.ts |
node/ |
| Examples: curl, Express, Django, Cloudflare Worker, Go | examples/ |
| Postman collection | postman/ip99.postman_collection.json |
| OpenAPI 3.1 | https://ip99.com/openapi.json |
MCP server for AI agents (ip_risk_lookup) |
https://ip99.com/mcp — listed in the official registry as com.ip99/ip99; notes in mcp/ |
| API reference | https://ip99.com/api |
{ "risk": { "score": 0, "level": "none" }, "evidence_state": "none" }A score of 0 with evidence_state: "none" means no evidence, not "safe". stale means evidence existed and
expired. active means fresh evidence is scoring — step up (second factor, delay, review), don't ban: rotating
residential exits change hands within hours, and the address will belong to somebody else soon. Query at
decision time; never cache a verdict. Every response carries computed_at; risk.signals lists only the signals
that fire (proxy, vpn, dialup_pool, hosting, …) and is absent when nothing does. Per-evidence timestamps
are on the professional endpoint. Contract: https://ip99.com/openapi.json
GET https://ip99.com/v1/ip/{ip} — no key, no signup, 1000 lookups per day per client IP and 60 per minute.
A free account raises the daily allowance; keys go in the X-API-Key header, never in the URL.
- How to detect a proxy, VPN or datacenter IP
- What an IP risk score means, and why 0 is not "safe"
- Residential proxy exits observed this week — weekly data, updated daily
- IP ranges by autonomous system — residential vs datacenter mix per ASN
MIT licensed.