Skip to content
VPNDetection

Know where your customers really connect from

A country check trusts the address it's given, and a VPN or a proxy puts a customer in a country they're not in. Look up the address at onboarding, log-in and payout, and send the masked ones to further checks.

Unlimited lookups, no key needed · Sign up to try every field, no card
Onboarding and payouts
Example
  • Applicant A-1093
    203.0.113.61
    VPNProton VPNExtra verification
  • Log-in, J. Moreno
    198.51.100.23
    ISPHome broadbandAllowed
  • Payout, account 7731
    192.0.2.201
    TorHeld
  • Log-in, account 2210
    192.0.2.33
    Datacenter ProxyBlocked

What it stops

  • Sanctions evasion

    A customer in a restricted country who looks local through a VPN, which a country check alone misses.

    Caught byis_vpnlocation.country
  • Fake applicants

    Synthetic identities opened in bulk from proxy pools and hosting servers.

    Caught byis_resproxyis_hosting
  • Account takeover

    Stolen log-ins tried from residential proxies, so each attempt looks like a home user.

    Caught byis_resproxyis_tor
  • Bonus abuse

    Sign-up and referral rewards claimed again and again from new VPN exits.

    Caught byis_vpnis_dcproxy

The fields that decide it

The four a rule here reads most, each marked with the plan that answers it.

  • location.country
    The address's country. On a VPN exit, it's the VPN's country, not the customer's.Unlimited
  • is_vpn
    A commercial VPN. A paid plan names which one.Unlimited
  • is_relay
    iCloud Private Relay or a company gateway such as Zscaler, kept apart from VPNs.Unlimited
  • is_resproxy
    A home connection resold as a proxy, which hides a log-in among real users.Paid plans

Where to check

  1. 01

    Onboarding

    Look up the address before KYC trusts the country on the application. A VPN or a proxy there goes to document checks or a manual review, and an ordinary address goes straight through.

  2. 02

    Log-in

    Step up a log-in that comes through a residential proxy, a datacenter proxy or Tor, with a one-time code or a device check. Account takeover runs through proxy pools so that each try looks like a home user.

  3. 03

    Payouts

    Hold a withdrawal, or a change of payout details, sent from an anonymizer until someone looks at it. It's the last point before money leaves, and the cheapest place to be sure.

Start free, then add every field

The same rule runs with no key and with one. Without a key the paid fields are left out of the answer, so the second check waits for your upgrade.

  1. 1

    Call it with no key

    Unlimited

    The snippet runs as it is: the VPN, Tor and relay flags, the location and the network, with no daily or monthly cap.

  2. 2

    Sign up for a key

    No card

    Your account's first 100 lookups each day answer every field, so you can try the paid half of the rule on real traffic.

  3. 3

    Upgrade for every lookup

    From $19 a month

    Every paid plan answers every field on every lookup, proxies, hosting and the operator behind each flag, and up to 1,000 addresses a batch.

import { VPNDetection } from "vpndetection";
// No key needed. With one, every field answers.
const client = new VPNDetection({ apiKey: process.env.VPNDETECTION_API_KEY });
export async function screenApplicant(applicant) {
const r = await client.lookup(applicant.ip);
if (r.isVpn || r.isTor) {
return requireDocumentCheck(applicant);
}
// Proxies and hosting answer on a paid plan.
if (r.isResproxy || r.isDcproxy) {
return sendToReview(applicant, r);
}
}
onboarding.mjsnpm install vpndetection
On this page

Can this be our sanctions control?

Not on its own. It tells you when an address hides its country, which is a reason to check further: keep your sanctions screening, and treat a masked address as unverified.

00 · Unlimited

Unlimited lookups, no sign-up.

Paste it into a terminal. Any address answers its VPN, Tor and relay flags, where it is and which network announces it, with no daily or monthly cap.

curl "https://api.vpndetection.io/146.70.116.130"
{
"ip": "146.70.116.130",
"is_vpn": true,
"is_relay": false,
"is_tor": false,
"location": {
"country": "AT", ...
},
"asn": { "asn": 9009, ... }
}
01 · Sign up

Try every field, free.

Your first 100 lookups each day answer every field, the evidence behind each flag included.
The rest answer as Unlimited, with no cap.
No card and no sales call: the key is issued on signup.
A paid plan answers every field on every lookup.