API Documentation
Complete reference for ProxyChecker API endpoints, authentication, and code examples
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 authenticated user information and current plan details.
Example Request
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.
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
{ "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" } } }
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.
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 }'
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 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.
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) |
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) |
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.
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) |
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) |
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.
Test IPv6 connectivity to a target.
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
target | string | Yes | IPv6 target to test |
Validate an IPv6 address format.
Request Parameters
Parameter | Type | Required | Description |
---|---|---|---|
ipv6 | string | Yes | IPv6 address to validate |
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 current usage statistics and limits.
Example Request
curl -X GET https://proxychecker.org/api/usage/stats \ -H "Authorization: Bearer YOUR_API_TOKEN"
Get historical usage data.
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
days | integer | No | Number of days to retrieve (default: 30) |
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]);