Introduction
Welcome to the IPFrenzy API. Our API allows you to detect VPNs, proxies, Tor exit nodes, and cloud hosting providers through simple HTTP requests.
Base URL: https://ipf.appsage.co.uk/api
Authentication
All API requests require authentication using an API key. You can generate your API key from your dashboard.
Include your API key in the X-API-Key header with every request.
Example Request
curl -X GET "https://ipf.appsage.co.uk/api/check/8.8.8.8" \
-H "X-API-Key: ips_your_api_key_here" \
-H "Accept: application/json"
Rate Limits
API rate limits vary by subscription plan:
| Plan | Monthly Limit | Rate Limit |
|---|---|---|
| IPFrenzy Premium | 5,000 requests/month | 100 requests/minute |
| IPFrenzy Pro | 50,000 requests/month | 500 requests/minute |
| IPFrenzy Enterprise | 250,000 requests/month | 2,000 requests/minute |
When you exceed the rate limit, you'll receive a 429 Too Many Requests response.
Check IP Address
Check if a single IP address is a VPN, proxy, Tor node, or cloud provider.
GET /api/check/{ip}
Request
curl -X GET "https://ipf.appsage.co.uk/api/check/1.1.1.1" \
-H "X-API-Key: ips_your_api_key_here" \
-H "Accept: application/json"
Response
{
"success": true,
"data": {
"ip": "1.1.1.1",
"is_vpn": false,
"is_proxy": false,
"is_tor": false,
"is_cloud": true,
"is_datacenter": true,
"cloud_provider": "cloudflare",
"country_code": "US",
"asn": 13335,
"asn_org": "Cloudflare Inc.",
"risk_score": 25,
"checked_at": "2025-01-22T10:30:00Z"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
| ip | string | The IP address that was checked |
| is_vpn | boolean | Whether the IP is a known VPN |
| is_proxy | boolean | Whether the IP is a known proxy |
| is_tor | boolean | Whether the IP is a Tor exit node |
| is_cloud | boolean | Whether the IP belongs to a cloud provider |
| is_datacenter | boolean | Whether the IP is from a datacenter |
| cloud_provider | string|null | Cloud provider name if detected |
| country_code | string|null | 2-letter ISO country code |
| asn | integer|null | Autonomous System Number |
| asn_org | string|null | ASN organization name |
| risk_score | integer | Risk score (0-100, higher = riskier) |
Bulk IP Check
Check multiple IP addresses in a single request (up to 100 IPs).
POST /api/check/bulk
Request
curl -X POST "https://ipf.appsage.co.uk/api/check/bulk" \
-H "X-API-Key: ips_your_api_key_here" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"ips": ["8.8.8.8", "1.1.1.1", "185.220.101.1"]
}'
Response
{
"success": true,
"data": {
"total": 3,
"results": [
{
"ip": "8.8.8.8",
"is_vpn": false,
"is_proxy": false,
"is_tor": false,
"is_cloud": true,
"cloud_provider": "google"
},
{
"ip": "1.1.1.1",
"is_vpn": false,
"is_proxy": false,
"is_tor": false,
"is_cloud": true,
"cloud_provider": "cloudflare"
},
{
"ip": "185.220.101.1",
"is_vpn": false,
"is_proxy": false,
"is_tor": true,
"is_cloud": false
}
]
}
}
Error Codes
The API uses standard HTTP response codes to indicate success or failure.
| Code | Meaning |
|---|---|
| 200 | Success - Request completed successfully |
| 400 | Bad Request - Invalid IP address or parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error - Something went wrong on our end |
Error Response Format
{
"success": false,
"error": {
"code": "INVALID_IP",
"message": "The provided IP address is invalid"
}
}
Code Examples
cURL
curl -X GET "https://ipf.appsage.co.uk/api/check/8.8.8.8" \
-H "X-API-Key: ips_your_api_key_here" \
-H "Accept: application/json"
PHP
<?php
$apiKey = 'ips_your_api_key_here';
$ip = '8.8.8.8';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://ipf.appsage.co.uk/api/check/$ip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . $apiKey,
'Accept: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['success']) {
echo "Is VPN: " . ($data['data']['is_vpn'] ? 'Yes' : 'No');
}
?>
Python
import requests
api_key = 'ips_your_api_key_here'
ip = '8.8.8.8'
headers = {
'X-API-Key': api_key,
'Accept': 'application/json'
}
response = requests.get(f'https://ipf.appsage.co.uk/api/check/{ip}', headers=headers)
data = response.json()
if data['success']:
print(f"Is VPN: {data['data']['is_vpn']}")
print(f"Is Tor: {data['data']['is_tor']}")
print(f"Risk Score: {data['data']['risk_score']}")
JavaScript (Fetch API)
const apiKey = 'ips_your_api_key_here';
const ip = '8.8.8.8';
fetch(`https://ipf.appsage.co.uk/api/check/${ip}`, {
headers: {
'X-API-Key': apiKey,
'Accept': 'application/json'
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
console.log('Is VPN:', data.data.is_vpn);
console.log('Is Proxy:', data.data.is_proxy);
console.log('Is Tor:', data.data.is_tor);
console.log('Risk Score:', data.data.risk_score);
}
})
.catch(error => console.error('Error:', error));
Node.js
const axios = require('axios');
const apiKey = 'ips_your_api_key_here';
const ip = '8.8.8.8';
axios.get(`https://ipf.appsage.co.uk/api/check/${ip}`, {
headers: {
'X-API-Key': apiKey,
'Accept': 'application/json'
}
})
.then(response => {
const data = response.data;
if (data.success) {
console.log('Is VPN:', data.data.is_vpn);
console.log('Cloud Provider:', data.data.cloud_provider);
}
})
.catch(error => console.error('Error:', error));
Ready to Get Started?
Sign up and get your API key in seconds. Choose a plan that fits your needs.
View Pricing Plans