VPN & Proxy Detection API
Classify IP addresses as VPN, proxy, datacenter, residential, or Tor exit nodes.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/vpn/ip/{ip} | Check a single IP |
| POST | /api/v1/vpn/ip/batch | Check up to 100 IPs |
Try It
Example Request
bash
curl -H "X-API-Key: wxa_yourkey" https://wxaintel.wxapros.com/api/v1/vpn/ip/1.2.3.4
Example Response
json
{
"ip": "1.2.3.4",
"classification": "vpn",
"provider": "NordVPN",
"confidence": 0.92,
"source": "proxy_enum",
"firstSeen": null,
"lastSeen": null,
"observationCount": 47
}Classification Values
| Value | Meaning |
|---|---|
| vpn | Commercial VPN service |
| proxy | HTTP/SOCKS proxy |
| datacenter | Cloud/hosting provider |
| residential | Residential ISP (clean) |
| residential_proxy | Residential proxy network |
| tor | Tor exit node |
| relay | Apple Private Relay / iCloud Relay |
| unknown | Not in database |
Batch Request
bash
curl -X POST -H "X-API-Key: wxa_yourkey" \
-H "Content-Type: application/json" \
-d '{"ips": ["1.2.3.4", "5.6.7.8"]}' \
https://api.wxaintel.com/api/v1/vpn/ip/batchResponse Codes
| Status | Description |
|---|---|
| 200 | Success |
| 401 | Missing or invalid API key |
| 403 | Key doesn't have required scope |
| 429 | Rate limit exceeded |
| 502 | Backend service unavailable |
Code Examples
python
import requests
response = requests.get(
"https://api.wxaintel.com/api/v1/vpn/ip/1.2.3.4",
headers={"X-API-Key": "wxa_yourkey"}
)
data = response.json()
print(f"{data['ip']}: {data['classification']} ({data['confidence']:.0%})")javascript
const response = await fetch(
"https://api.wxaintel.com/api/v1/vpn/ip/1.2.3.4",
{ headers: { "X-API-Key": "wxa_yourkey" } }
);
const data = await response.json();
console.log(`${data.ip}: ${data.classification} (${Math.round(data.confidence * 100)}%)`);