IPASK ← Back

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:

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": "..." } }.

StatuscodeWhen
400missing_ipip query parameter is absent
400invalid_ipThe value is not a valid IPv4/IPv6 address
401bad_keyLicense key is unknown or expired
429rate_limitedMore than 120 requests/min from one IP
404not_foundUnknown 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

MethodPathPurposeQuota
GET/api/v1/lookup?ip=8.8.8.8Single IP verdict, geolocation, ASN, evidencefree · 120/min
GET/api/v1/meYour current public IP (no quota consumed)free
POST/api/v1/verifyBatch verify (up to 50 Pro / 100 Studio)counts quota
GET/api/v1/quotaRemaining daily quota for your key or visitor idfree
GET/api/v1/healthService status and data freshnessfree

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

StatuscodeMeaning
400invalid_ipThe address is not a valid IPv4/IPv6 literal.
401bad_keyLicense key missing, unknown, or expired.
429quota_exceededDaily quota or rate limit reached.
503data_unavailableDatabases are loading or temporarily unavailable.

Limits

PlanPer dayBatch size
Free1010
Pro ¥39 / mo50050
Studio ¥99 / mo2000100

Quota resets at 00:00 UTC. Compare plans → · Live status →

Need more than 10 checks a day? Compare plans →