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