Catch fraud at sign‑up and checkout
One lookup per request says whether the address is a VPN, a proxy, Tor, a relay or a hosting server, where it is and whose network it's on. Your rules decide what happens next: refuse it, hold it for review, or ask for more.
Tor, relay, location and the network are free, with no key and no cap. The VPN, proxy and hosting flags are on every paid plan. A free account's first 100 lookups each day answer every field.
What people use it for
Free trials and promotions
One person opening account after account from new VPN or proxy exits to keep a trial or a bonus going. Refuse the sign-up, or ask for a card first.
Card testing and chargebacks
Checkouts run through residential and mobile proxy pools so each try looks like a new shopper. Hold the order for review rather than refuse it.
Account takeover
A log-in from a hosting server, or from a country the account has never signed in from. Ask for a second factor before letting it in.
Ban evasion
A banned user back on a new address, usually through a VPN, Tor or a residential proxy.
What the answer says
Free fields answer with a key or without one, with no cap. Paid ones come with every paid plan, and a field your plan doesn't include is left out of the answer, never sent as false.
Every field, plan by plan, is on Pricing, and each one is described in the documentation.
- is_vpn
- A commercial VPN's exit, and which service it isPaid
- is_resproxy
- A residential proxy, with its pool and when we saw itPaid
- is_mobproxy
- A mobile proxy on a carrier's networkPaid
- is_dcproxy
- A datacenter proxyPaid
- is_hosting
- A hosting or cloud provider's serverPaid
- is_tor
- A Tor exit nodeFree
- is_relay
- A privacy relay, such as iCloud Private RelayFree
- location.country
- The country, for a mismatch with the card or the accountFree
- asn, company
- Whose network the address is onFree
Check it at sign-up
Look up the request's address and hold the ones that hide where they come from.
There are SDKs for 12 languages, a CLI and an MCP server. The API has the endpoints and limits.
import { InternetData } from "@internetdata/internetdata";const client = new InternetData({apiKey: process.env.INTERNETDATA_API_KEY,});const r = await client.lookup(req.ip);if (r.isVpn || r.isResproxy || r.isMobproxy|| r.isTor || r.isHosting) {return holdForReview(req);}
Look one up now.
Unlimited answers with no key and no cap, and a free account's first 100 lookups each day answer every field.