API
One HTTP endpoint for the IP verdict: residential, hosting, CDN, VPN or Tor — with the evidence that produced it.
OpenAPI
Machine-readable spec (OpenAPI 3.1): /openapi.json — {12 paths / 14 operations / 12 schemas. Useful for codegen, Postman import or SDK work.
Rate limits
Every API response carries X-RateLimit-Limit and X-RateLimit-Remaining (per client IP, per minute). On 429 you also get Retry-After in seconds:
HTTP/1.1 429 Too Many Requests X-RateLimit-Limit: 120 X-RateLimit-Remaining: 0 Retry-After: 1
Authentication
Single lookups are free and rate-limited to 120 requests/min per IP. Batch verification and higher limits use a license key:
- Header:
Authorization: Bearer <key> - Query:
?key=<key>
Keys are issued after checkout and visible on your order page or in the sidebar of the checker.
Error responses
All errors are JSON: { "error": { "code": "...", "message": "..." } }.
| Status | code | When |
|---|---|---|
| 400 | missing_ip | ip query parameter is absent |
| 400 | invalid_ip | The value is not a valid IPv4/IPv6 address |
| 401 | bad_key | License key is unknown or expired |
| 429 | rate_limited | More than 120 requests/min from one IP |
| 404 | not_found | Unknown endpoint |
An address that is well-formed but outside our dataset returns 200 with "found": false. IPv6 is supported for country and ASN (via DB-IP Lite). City-level data, cloud ranges, DROP and the Tor list are currently IPv4-only, so those fields stay empty on IPv6.
Endpoints
| Method | Path | Purpose | Quota |
|---|---|---|---|
| GET | /api/v1/lookup?ip=8.8.8.8 | Single IP verdict, geolocation, ASN, evidence | free · 120/min |
| GET | /api/v1/me | Your current public IP (no quota consumed) | free |
| POST | /api/v1/verify | Batch verify (up to 50 Pro / 100 Studio) | counts quota |
| GET | /api/v1/quota | Remaining daily quota for your key or visitor id | free |
| GET | /api/v1/health | Service status and data freshness | free |
Official SDK
Zero-dependency JavaScript client (Node 18+, Deno, Bun, browsers):
npm i ipask
import ipask from 'ipask';
const r = await ipask.lookup('45.32.11.8');
console.log(r.verdict, r.network.asn_type, r.network.org);
Source (MIT): github.com/ipask-net/ipask-sdk
Example
curl -s "https://ipask.net/api/v1/lookup?ip=45.32.11.8"
{
"ip": "45.32.11.8",
"location": { "country": "JP", "city": "Minamishinagawa", "timezone": "Asia/Tokyo" },
"network": {
"asn": 20473,
"org": "VULTR",
"asn_brand": "Vultr",
"asn_type": "hosting",
"asn_type_label": "Hosting / datacenter",
"usage_type": "DCH"
},
"security": {
"is_datacenter": true, "is_proxy": false, "is_vpn": false, "is_tor": false,
"risk_score": 62, "risk_level": "high",
"native_ip": false, "proxy_type": null
}
}
Batch request
curl -s -X POST "https://ipask.net/api/v1/verify" -H "Authorization: Bearer $IPASK_KEY" -H "content-type: application/json" -d '{"ips":["45.32.11.8","73.162.0.1","1.1.1.1"]}'
Response: { count, results, quota: { used, limit, remaining } }. Duplicates are removed; invalid entries are reported in invalid.
Try it
Type an IP and call the API from this page.
// response appears here
Code examples
Same call in three languages.
# curl
curl -s "https://ipask.net/api/v1/lookup?ip=8.8.8.8"
// Node 18+
const r = await fetch('https://ipask.net/api/v1/lookup?ip=8.8.8.8');
const data = await r.json();
console.log(data.network.asn_type_label);
# Python
import requests
r = requests.get('https://ipask.net/api/v1/lookup', params={'ip': '8.8.8.8'}, timeout=10)
print(r.json()['security']['risk_score'])
OpenAPI spec: /openapi.json · Check your quota: /api-usage/ · Service status: /status
Get a free API key
One key per IP every 24 hours, about 1,000 requests per month. No email needed.
—
Use it as Authorization: Bearer <key> or ?key=<key>. Limits: 34 lookups/day, 10 per batch.
Errors
| Status | code | Meaning |
|---|---|---|
| 400 | invalid_ip | The address is not a valid IPv4/IPv6 literal. |
| 401 | bad_key | License key missing, unknown, or expired. |
| 429 | quota_exceeded | Daily quota or rate limit reached. |
| 503 | data_unavailable | Databases are loading or temporarily unavailable. |
Limits
| Plan | Per day | Batch size |
|---|---|---|
| Free | 10 | 10 |
| Pro ¥39 / mo | 500 | 50 |
| Studio ¥99 / mo | 2000 | 100 |
Quota resets at 00:00 UTC. Compare plans → · Live status →