Skip to content
VPNDetection

Stop free-trial abuse at sign-up

A free tier invites a second account, and a third. Look up the address at sign-up, ask VPNs, proxies and hosting servers for a card first, and let everyone else straight in.

Unlimited lookups, no key needed · Sign up to try every field, no card
New sign-ups
Example
  • dev@acme.example
    198.51.100.44
    ISPOffice networkTrial started
  • k9x2@mail.example
    203.0.113.19
    VPNMullvadCard required
  • bot-7731@mail.example
    192.0.2.55
    HostingHetznerBlocked
  • sam@studio.example
    203.0.113.140
    RelayiCloud Private RelayTrial started

What it stops

  • Trial farming

    One person starting a new trial each week, each from a new VPN exit.

    Caught byis_vpnis_resproxy
  • Fake sign-ups

    Accounts made by scripts on hosting servers to spam, scrape or resell.

    Caught byis_hostingis_dcproxy
  • API key farming

    Free keys collected across accounts to multiply a free quota.

    Caught byis_resproxyis_vpn
  • AI credit abuse

    Free AI credits farmed across accounts, and sign-ups through a VPN from countries your model provider doesn't serve.

    Caught byis_vpnlocation.country

The fields that decide it

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

  • is_vpn
    A commercial VPN. A paid plan names which one.Unlimited
  • is_relay
    iCloud Private Relay or a company gateway such as Zscaler: let these through.Unlimited
  • is_hosting
    A hosting server: a script, unless it's also a relay.Paid plans
  • is_resproxy
    A home connection resold as a proxy, which makes one farm look like many people.Paid plans

Where to check

  1. 01

    At sign-up

    Look up the address before the trial starts. Ask a VPN, a proxy or a hosting server for a card or a work email, and let everyone else straight in.

  2. 02

    When a key is made

    Check again when a free API key is created, where one person farms quotas across accounts. Several keys made from proxy addresses in a day are usually one person, whatever the emails say.

  3. 03

    At checkout

    Look up the address before a card is charged, since card testers like a free-trial checkout too. Hold a payment from a datacenter proxy or Tor until it clears.

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 startTrial(account) {
const r = await client.lookup(account.ip);
// Proxies and hosting answer on a paid plan.
if ((r.isHosting && !r.isRelay) || r.isDcproxy) {
return refuse(account);
}
if (r.isVpn || r.isTor) {
return requireCard(account);
}
}
signup.mjsnpm install vpndetection
On this page

Will it block people on a company VPN?

Company web gateways such as Zscaler come back as is_relay, not is_vpn, and most are on hosting networks too, so let is_relay through before a hosting check. Commercial VPNs are named on every paid plan, so a rule can single one out.

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.