Proxy JSON API

For easy access to free proxy lists, our service provides JSON API.

With API users with "Pro Status" can get current lists of tested free proxies with the ability to filter on many parameters, such as response time, speed, geolocation, stability.

API Service Documentation

API endpoints

Current API version: 1.0

Main endpoint: https://proxy-tools.com/api/v1

Localized endpoints:

  • CN: https://cn.proxy-tools.com/api/v1
  • DE: https://de.proxy-tools.com/api/v1
  • ES: https://es.proxy-tools.com/api/v1
  • FR: https://fr.proxy-tools.com/api/v1
  • JP: https://jp.proxy-tools.com/api/v1
  • PT: https://pt.proxy-tools.com/api/v1
  • RU: https://ru.proxy-tools.com/api/v1

Authentication

Authentication method: Bearer Token

Generation of API keys (tokens) is available in account settings for all users with "Pro Status" accounts.

For authentication it is necessary to pass the API key in the request header for each request:

Authorization: Bearer <YOUR_API_KEY>

Methods

GET  /proxies  Get the current free proxies list

Request Parameters (all parameters are optional)

type (integer) - proxy type:

  • 0 - all types (default)
  • 1 - SOCKS4 and SOCKS5
  • 2 - SOCKS5 only
  • 3 - HTTPS only
  • 4 - HTTP and HTTPS

anonymity (integer) - proxy anonymity:

  • 0 - transparent only
  • 1 - elite only
  • 2 - anonymous and elite
  • 3 - distorting

stability (integer) - minimum proxy stability in percentage of successful requests from 0 to 100

speed (integer) - minimum proxy speed:

  • 0 - all
  • 1 - slow
  • 2 - medium
  • 3 - fast

response (numeric) - maximum proxy response time in seconds from 0 to 5.00

geo (string) - proxy geolocation, country code in ISO-3166 format

page (integer) - page number with the query results

limit (integer) - number of proxies per page in response, from 1 to 100 (default is 25)

Example requests

Get only SOCKS5 proxies with a response time of 1.5 seconds or less:

curl 'https://proxy-tools.com/api/v1/proxies?type=2&response=1.5' \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer <YOUR_API_KEY>'
<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://proxy-tools.com/api/v1/proxies?type=2&response=1.5');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Authorization: Bearer <YOUR_API_KEY>',
]);

$response = curl_exec($ch);

curl_close($ch);
import requests

headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer <YOUR_API_KEY>',
}

params = {
    'type': '2',
    'response': '1.5',
}

response = requests.get('https://proxy-tools.com/api/v1/proxies', params=params, headers=headers)
package main

import (
"fmt"
"io/ioutil"
"log"
"net/http"
)

func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://proxy-tools.com/api/v1/proxies?type=2&response=1.5", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("Authorization", "<YOUR_API_KEY>")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}

Get 1 elite proxy US:

curl 'https://proxy-tools.com/api/v1/proxies?anonymity=1&geo=us&limit=1' \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer <YOUR_API_KEY>'
<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://proxy-tools.com/api/v1/proxies?anonymity=1&geo=us&limit=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Accept: application/json',
'Authorization: Bearer <YOUR_API_KEY>',
]);

$response = curl_exec($ch);

curl_close($ch);
import requests

headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer <YOUR_API_KEY>',
}

params = {
    'anonymity': '1',
    'geo': 'us',
    'limit': '1',
}

response = requests.get('https://proxy-tools.com/api/v1/proxies', params=params, headers=headers)
package main

import (
"fmt"
"io/ioutil"
"log"
"net/http"
)

func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://proxy-tools.com/api/v1/proxies?anonymity=1&geo=us&limit=1", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("Authorization", "<YOUR_API_KEY>")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}

Limits

Total limit per account: a maximum 60 requests per minute.