Skip to main content

Single IP

The most common pattern: classify one IP at a time.
is_vpn, is_proxy, is_residential_proxy, is_tor, is_hosting, is_cdn, is_relay are the boolean fields most fraud pipelines use.
Suspected labels never set the booleans. classification can return corroboration-only labels — suspected_vpn, its legacy spelling vpn_suspect (same meaning, written by an older ingestion path), and suspected_proxy — for IPs where traffic patterns resemble VPN/proxy behavior but we lack confirmed protocol evidence. By design, suspected_vpn / vpn_suspect return is_vpn: false (and set no other boolean). If your integration reads only the top-level classification, treat any suspected_* / *_suspect value as advisory — gate on the booleans (or on by_primary_category semantics) for block/allow decisions, and use confidence to tune how much weight a suspect label gets. For reference, is_vpn: true corresponds exactly to classification in vpn, commercial_vpn, corporate_vpn, vpn_concentrator, or vpn_hosting — confirmed VPN endpoints only; tor and relay have their own dedicated booleans.

Batch

For lists of IPs (Starter tier and above), batch endpoint cuts latency dramatically:
Up to 100 IPs per request. Each result has the same shape as the single-IP endpoint. Order matches input.

High-volume

If you’re checking >1 M IPs/day, don’t use the API one-at-a-time — use the bulk export for nightly mirroring and hit local storage. If real-time is required at scale, use the MMDB download: sub-millisecond local lookups with no rate limits, refreshed hourly on your side via cron. The trade-off is lag (your mirror is at most an hour stale).

What to do with unknown

classification: "unknown" means we have no high-confidence label for this IP. Don’t treat unknown as either clean or suspicious — treat it as “no data.” Common in:
  • Brand new ranges (recently allocated by a RIR)
  • Sparse cellular ranges with infrequent observations
  • Ranges deliberately excluded from our scanning (per opt-out requests)
Most production callers fall through unknown to their next signal (behavioral, device, payment risk).