Live StatsPricingFAQContactHow it worksFree ProxiesBlog

API Documentation

Everything you need to pull proxies into your own scripts and tools. No account dashboard required — just a key and an HTTP request.

Authentication Get proxy list Parameters Errors Rate limits & IP slots Free tier Code examples

Authentication

Every request needs your personal access key, sent as the key query parameter. You’ll find your key on your order confirmation page or in your panel after purchase — there’s no separate API key or OAuth flow to set up.

Get proxy list

Returns a plain-text list of working proxies, one ip:port per line — ready to feed directly into most scraping libraries and tools without any parsing beyond splitting on newlines.

GEThttps://proxy-labs.net/proxylist.txt
1.2.3.4:8080 5.6.7.8:1080 9.10.11.12:3128

Parameters

ParameterValuesDescription
key required string Your personal access key.
type http, https, socks4, socks5 Protocol filter. Combine multiple with a comma, e.g. socks4,socks5. Omit for all protocols.
anonymity elite, anonymous, transparent Filter by anonymity level. Combine multiple with a comma. Omit for any level.
country ISO country code, e.g. US Restrict results to one country. Omit for all countries.
port25 1 Only return proxies with port 25 (SMTP) open. This filter is served by our SMTP-capable source only, so the list is shorter than usual. Omit otherwise.
limit integer Maximum number of results. Omit or use 0 for unlimited.
# SOCKS5, elite only, US, up to 200 results https://proxy-labs.net/proxylist.txt?key=YOUR_KEY&type=socks5&anonymity=elite&country=US&limit=200

Errors

Errors come back as plain text starting with Error:, with a matching HTTP status code — check the status code programmatically rather than parsing the message text, since wording may be refined over time.

StatusMeaning
400Missing key parameter.
403Invalid, disabled, or expired key — or your IP limit for this key has been reached.
422The port25 filter was requested, but this key has no SMTP-capable source assigned. Contact support or drop the filter.
429Too many requests from this key (see rate limits below). Wait for the number of seconds in the Retry-After header.
502All proxy sources are temporarily unavailable. Retry after the number of seconds in the Retry-After header.

Rate limits & IP slots

Each key is limited to about 3 requests per second (30 requests per 10-second window). Identical requests are also cached for 10 seconds, so polling faster than that returns the same list anyway — refreshing your proxy list every 10–30 seconds is plenty. Requests over the limit get HTTP 429 with a Retry-After header.

Each key also has a fixed number of IP slots (shown on your order page) — the IPs of the machines allowed to actually use the proxies returned, not the proxies themselves. A slot frees up automatically after 24 hours of no requests from that IP, so switching machines occasionally doesn’t require manual action.

Useful response headers: X-Cache (HIT or MISS), X-Sources (how many proxies each of our sources supplied) and X-Sources-Warning — present only when one of our sources was unavailable and the list may be shorter than usual.

Free tier

Don’t have a key yet? A separate, smaller free pool is available with a daily rotating key — get today’s key from our free proxies page or the Telegram bot.

GEThttps://proxy-labs.net/api/free_proxylist.php?key=TODAYS_FREE_KEY&type=https
ParameterValuesDescription
key requiredstringToday’s free key — changes daily.
typehttps, socks5Protocol — the free tier only covers these two.

Code examples

Python (requests)

# pip install requests import requests, random resp = requests.get( "https://proxy-labs.net/proxylist.txt", params={"key": "YOUR_KEY", "type": "socks5", "limit": 100} ) proxy_list = [line for line in resp.text.splitlines() if line.strip()] proxy = random.choice(proxy_list) r = requests.get("https://example.com", proxies={ "http": f"socks5://{proxy}", "https": f"socks5://{proxy}", })

Node.js

// npm install node-fetch const res = await fetch( `https://proxy-labs.net/proxylist.txt?key=YOUR_KEY&type=https&limit=100` ); const text = await res.text(); const proxies = text.split("\n").filter(Boolean); console.log(proxies[0]); // e.g. "1.2.3.4:8080"

cURL

curl "https://proxy-labs.net/proxylist.txt?key=YOUR_KEY&type=socks5&country=US"
Questions about integrating this?
We’re happy to help with anything not covered here.
Contact support →