API Documentation

Complete reference for ProxyChecker API endpoints, authentication, and code examples

Version 1.0 RESTful API Bearer Authentication

Overview

The ProxyChecker API provides programmatic access to all proxy checking, IP lookup, DNS tools, port scanning, and IPv6 validation features.

Base URL

https://proxychecker.org/api

Request Format

All requests must include the following headers:

Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Accept: application/json

Response Format

All responses are returned in JSON format:

{
    "success": true,
    "data": {
        // Response data
    },
    "message": "Request successful"
}

Authentication

All API requests require Bearer token authentication. You can generate API tokens from your dashboard.

GET /api/user

Get authenticated user information and current plan details.

Example Request
cURL
curl -X GET https://proxychecker.org/api/user \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"
Example Response
{
    "success": true,
    "data": {
        "id": 1,
        "name": "John Doe",
        "email": "[email protected]",
        "plan": "pro",
        "api_calls_used": 1250,
        "api_calls_limit": 10000,
        "rate_limit": {
            "requests_per_minute": 60,
            "requests_per_hour": 1000
        }
    }
}

Proxy Checker API

Check proxy servers for connectivity, anonymity, SSL support, and geolocation.

POST /api/proxy/check

Check a single proxy server with detailed analysis.

Request Parameters
Parameter Type Required Description
proxy string Yes Proxy address in format: host:port or host:port:user:pass
check_ssl boolean No Check SSL/HTTPS support (default: true)
check_anonymity boolean No Check anonymity level (default: true)
check_speed boolean No Measure connection speed (default: true)
check_location boolean No Get proxy geolocation (default: true)
Code Examples
curl -X POST https://proxychecker.org/api/proxy/check \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "proxy": "8.8.8.8:3128",
    "check_ssl": true,
    "check_anonymity": true,
    "check_speed": true,
    "check_location": true
  }'
$client = new \GuzzleHttp\Client();
$response = $client->post('https://proxychecker.org/api/proxy/check', [
    'headers' => [
        'Authorization' => 'Bearer YOUR_API_TOKEN',
        'Content-Type' => 'application/json'
    ],
    'json' => [
        'proxy' => '8.8.8.8:3128',
        'check_ssl' => true,
        'check_anonymity' => true,
        'check_speed' => true,
        'check_location' => true
    ]
]);

$data = json_decode($response->getBody(), true);
import requests

url = 'https://proxychecker.org/api/proxy/check'
headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
}
data = {
    'proxy': '8.8.8.8:3128',
    'check_ssl': True,
    'check_anonymity': True,
    'check_speed': True,
    'check_location': True
}

response = requests.post(url, headers=headers, json=data)
result = response.json()
const response = await fetch('https://proxychecker.org/api/proxy/check', {
    method: 'POST',
    headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        proxy: '8.8.8.8:3128',
        check_ssl: true,
        check_anonymity: true,
        check_speed: true,
        check_location: true
    })
});

const data = await response.json();
Example Response
200 OK
{
    "success": true,
    "data": {
        "proxy": "8.8.8.8:3128",
        "status": "working",
        "response_time": 245,
        "anonymity_level": "elite",
        "ssl_support": true,
        "location": {
            "country": "United States",
            "city": "Mountain View",
            "region": "California",
            "isp": "Google LLC"
        },
        "speed": {
            "download": "45.2 Mbps",
            "upload": "12.3 Mbps",
            "latency": "15ms"
        }
    }
}
POST /api/proxy/check-bulk

Check multiple proxy servers in a single request (max 100 per request).

Request Parameters
Parameter Type Required Description
proxies array Yes Array of proxy addresses (max 100)
Example Request
curl -X POST https://proxychecker.org/api/proxy/check-bulk \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "proxies": [
        "8.8.8.8:3128",
        "1.1.1.1:3128",
        "proxy.example.com:8080:user:pass"
    ]
  }'

IP Lookup API

Get detailed information about IP addresses including geolocation, ISP, and security analysis.

POST /api/ip/lookup

Get detailed information about a single IP address.

Request Parameters
Parameter Type Required Description
ip string Yes IP address to lookup
detailed boolean No Include detailed information (default: false)
security_check boolean No Perform security analysis (default: false)
Example Request
curl -X POST https://proxychecker.org/api/ip/lookup \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ip": "8.8.8.8",
    "detailed": true,
    "security_check": true
  }'
POST /api/ip/lookup-bulk

Lookup multiple IP addresses in a single request (max 100 per request).

Request Parameters
Parameter Type Required Description
ips array Yes Array of IP addresses (max 100)
GET /api/ip/my-ip

Get information about your current IP address.

Example Request
curl -X GET https://proxychecker.org/api/ip/my-ip \
  -H "Authorization: Bearer YOUR_API_TOKEN"

DNS Tools API

Perform DNS lookups, WHOIS queries, and domain analysis.

POST /api/dns/lookup

Perform DNS record lookups for a domain.

Request Parameters
Parameter Type Required Description
domain string Yes Domain name to lookup
type string No DNS record type: A, AAAA, MX, TXT, NS, CNAME, SOA (default: A)
POST /api/dns/lookup-bulk

Lookup DNS records for multiple domains.

Request Parameters
Parameter Type Required Description
domains array Yes Array of domain names (max 50)
type string No DNS record type (default: A)
POST /api/dns/whois

Get WHOIS information for a domain.

Request Parameters
Parameter Type Required Description
domain string Yes Domain name to query

Port Scanner API

Scan ports on remote hosts to check for open services.

POST /api/port/scan

Scan a single port on a host.

Request Parameters
Parameter Type Required Description
host string Yes Host to scan (domain or IP)
port integer Yes Port number (1-65535)
timeout integer No Timeout in seconds (default: 5)
POST /api/port/scan-range

Scan multiple specific ports on a host.

Request Parameters
Parameter Type Required Description
host string Yes Host to scan
ports array Yes Array of port numbers to scan
timeout integer No Timeout per port (default: 3)
POST /api/port/scan-common

Scan common ports using predefined presets.

Request Parameters
Parameter Type Required Description
host string Yes Host to scan
preset string Yes Preset: top100, web, mail, database
timeout integer No Timeout per port (default: 3)

IPv6 Tools API

Test and validate IPv6 addresses and connectivity.

POST /api/ipv6/test

Test IPv6 connectivity to a target.

Request Parameters
Parameter Type Required Description
target string Yes IPv6 target to test
POST /api/ipv6/validate

Validate an IPv6 address format.

Request Parameters
Parameter Type Required Description
ipv6 string Yes IPv6 address to validate
POST /api/ipv6/expand

Expand a compressed IPv6 address to full notation.

Request Parameters
Parameter Type Required Description
ipv6 string Yes Compressed IPv6 address

Usage Analytics API

Track and analyze your API usage, rate limits, and statistics.

GET /api/usage/stats

Get current usage statistics and limits.

Example Request
curl -X GET https://proxychecker.org/api/usage/stats \
  -H "Authorization: Bearer YOUR_API_TOKEN"
GET /api/usage/history

Get historical usage data.

Query Parameters
Parameter Type Required Description
days integer No Number of days to retrieve (default: 30)
GET /api/usage/export

Export usage data in various formats.

Query Parameters
Parameter Type Required Description
format string No Export format: json, csv (default: json)
days integer No Number of days to export (default: 30)

Rate Limits

API rate limits vary based on your subscription plan.

Plan Requests/Minute Requests/Hour Requests/Day
Free 10 100 500
Basic 30 500 5,000
Pro 60 1,000 10,000
Enterprise 120 5,000 50,000
Rate Limit Headers

Each API response includes rate limit information in the headers:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1640995200

Error Codes

Standard HTTP status codes and error responses.

Status Code Error Description
200 OK Request successful
400 Bad Request Invalid request parameters
401 Unauthorized Missing or invalid API token
403 Forbidden Access denied to resource
404 Not Found Resource not found
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error occurred
Error Response Format
{
    "success": false,
    "error": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Maximum 60 requests per minute allowed.",
    "details": {
        "limit": 60,
        "remaining": 0,
        "reset_at": "2024-01-01 12:00:00"
    }
}

Complete Examples

Full working examples for common use cases.

Python: Check Multiple Proxies with Error Handling

import requests
import json

API_TOKEN = 'YOUR_API_TOKEN'
BASE_URL = 'https://proxychecker.org/api'

def check_proxies(proxy_list):
    headers = {
        'Authorization': f'Bearer {API_TOKEN}',
        'Content-Type': 'application/json'
    }
    
    data = {'proxies': proxy_list}
    
    try:
        response = requests.post(
            f'{BASE_URL}/proxy/check-bulk',
            headers=headers,
            json=data,
            timeout=30
        )
        
        if response.status_code == 200:
            result = response.json()
            for proxy_result in result['data']:
                status = proxy_result.get('status', 'unknown')
                proxy = proxy_result.get('proxy')
                print(f'{proxy}: {status}')
        elif response.status_code == 429:
            print('Rate limit exceeded. Please wait.')
        else:
            print(f'Error: {response.status_code}')
            
    except requests.exceptions.RequestException as e:
        print(f'Request failed: {e}')

# Example usage
proxies = [
    '8.8.8.8:3128',
    '1.1.1.1:3128',
    'proxy.example.com:8080'
]

check_proxies(proxies)

Node.js: Port Scanner with Async/Await

const axios = require('axios');

const API_TOKEN = 'YOUR_API_TOKEN';
const BASE_URL = 'https://proxychecker.org/api';

async function scanPorts(host, ports) {
    const config = {
        headers: {
            'Authorization': `Bearer ${API_TOKEN}`,
            'Content-Type': 'application/json'
        }
    };
    
    try {
        const response = await axios.post(
            `${BASE_URL}/port/scan-range`,
            { host, ports, timeout: 3 },
            config
        );
        
        const results = response.data.data;
        results.forEach(port => {
            const status = port.open ? 'OPEN' : 'CLOSED';
            console.log(`Port ${port.port}: ${status}`);
        });
        
    } catch (error) {
        if (error.response?.status === 429) {
            console.log('Rate limit exceeded');
        } else {
            console.error('Error:', error.message);
        }
    }
}

// Example usage
scanPorts('example.com', [80, 443, 22, 3306, 5432]);