IP Detection
VPN detection API
Whether an IP belongs to a VPN, Tor or another anonymizing network.
Check for a VPN
Parameters
- ipstringpathRequired
IPv4 or IPv6 address.
Response fields
- ipstring
IP address that was checked.
- isVpnboolean
True only for vpn, residential_proxy and tor, never for hosting or relay.
- isTorboolean
True for Tor exit nodes.
- networkClassstring
residential_clean, mobile, hosting, datacenter, vpn, residential_proxy, tor, relay or unknown.
- anonymizedboolean
True when the network hides the person behind it. Hosting counts, except known infrastructure.
- providerstring | null
Network owner, when known.
- vpnProviderstring | null
VPN service on a vpn address (NordVPN, Mullvad...), when known. Starter and above; null on Free.
- riskScoreinteger
Risk from 0 to 100.
- evidencestring[]
Optional. What the class rests on, such as vpn_server_list, relay_range or known_infra.
- purityobject | null
Score breakdown: score, grade, verdict and deductions. Every plan.
- purity.scoreinteger
Cleanliness score from 0 to 100.
- purity.gradestring
S+, S, A, B or C.
- purity.verdictstring
clean, suspect or dirty.
- purity.deductionsarray
Points taken off the score, each with a reason.
- deductionCountinteger
Locked (Free) responses only: how many deductions the withheld purity holds, nothing else about them.
- lockedstring[]
Dotted paths of the fields sent as null on this plan. Absent on Starter and above.
- planRequiredstring
Plan that includes the locked fields. Absent on Starter and above.
curl https://ipscanner.io/v1/vpn/185.220.101.1 \
-H "Authorization: Bearer YOUR_API_KEY"{
"ip": "185.220.101.1",
"isVpn": true,
"isTor": true,
"networkClass": "tor",
"anonymized": true,
"provider": "Tor Exit Node",
"vpnProvider": null,
"riskScore": 100,
"evidence": [
"tor_exit_list"
]
}