Free proxy list API
GET /api/proxy-list returns every working free proxy we have, currently about 3,000, as txt, JSON or CSV. No key, CORS enabled, filterable by country, protocol and anonymity.
hproxy.com/api/proxy-listThe whole live list in one call
One GET returns every working proxy we have, as txt, json or csv. Not a sample and not a teaser: HTTP, HTTPS, SOCKS4 and SOCKS5, all of it, in a single call. No key, no signup. CORS is enabled, so you can call it straight from a browser. Fair-use rate limit of about 60 requests per minute per IP (a clean 429 with Retry-After beyond that). This is the same data behind the free proxy list.
How many is that? Around 3,000 at any moment, because that is how many public proxies on Earth are actually answering right now. It moves every few minutes as proxies die and new ones are found. Read X-Total-Available on the response for the exact number matching your filter, and X-Total-Count for how many came back in this particular response. If the two are equal, you already have everything and there is no next page.
Why you will see 10,000 mentioned below. That is the maximum rows a single response will carry, i.e. a page size, not a cap on what you are allowed to have. With the default call it never comes into play, since the whole live pool is far smaller than one page. It only matters if you add recent=true (see below), which widens the set to roughly 32,000 and therefore takes four pages.
| Parameter | Type | Description |
|---|---|---|
format | txt | json | csv | Response shape. Default txt (one ip:port per line). |
protocol | http | https | socks4 | socks5 | Filter by protocol. Comma-separated allowed (e.g. http,https), which matches a proxy supporting ANY of them. |
country | ISO-3166 alpha-2 | Filter by country, e.g. US, DE, GB. |
anonymity | elite | anonymous | transparent | Filter by anonymity grade. Proxies we have not been able to grade yet are excluded. |
min_uptime_pct | 0 - 100 | Only proxies whose lifetime uptime is at least this. The single most useful filter if you want proxies that stay up. |
max_latency_ms | 1 - 120000 | Only proxies at or below this latency, in milliseconds. |
sort | uptime | Order the whole pool by reliability before paging, so page 1 is the best proxies overall. Omit for the default order (alive first, then fastest). |
limit | 1 - 10000 | Rows per response, not a limit on your total. Default and maximum 10000. The live pool is smaller than this, so on a default call you receive all of it and never need a second request. |
offset | 0+ | Skip this many rows, for paging a set larger than one response. Only needed with recent=true. Default 0. |
recent | true | false | Also include proxies that have gone quiet but answered within the last 48h, taking the set from about 3,000 to about 32,000. This WIDENS the list, it does not freshen it: the extra rows come back with status recently_alive and many are not answering right now. Leave it off for the strictly alive-now pool. |
curl "https://hproxy.com/api/proxy-list?format=json&country=US&protocol=socks5"The json format returns an array of full objects (geo, ASN, latency, uptime and last-checked timestamps; fields the engine hasn't enriched yet are null, never fabricated). txt is one ip:port per line, easiest to pipe into tools. csv is spreadsheet-ready with a header row.
Every row carries how the proxy has actually been behaving, so you can judge it before you use it: status is alive when it is passing checks right now, uptime_pct is its lifetime success rate, uptime_24h and uptime_7d are the recent windows, and verification_count is how many times we have tested it. Filter on those with min_uptime_pct, or hand the ordering to us with sort=uptime. Rows with status: "recently_alive" only ever appear when you pass recent=true, and mean the proxy has stopped answering but was up within the last 48 hours.
Need a hand wiring this up? Email support@hproxy.com. A real person reads every message.