Free proxies.
Only the ones that work.
Every proxy in the pool gets tested end to end every 2½ minutes: a real request goes through it to our own judge over HTTP, HTTPS, SOCKS4 and SOCKS5. Only proxies that passed the latest check are listed. Download them with one curl, in the format you need.
Alive proxies, last 24 hours
one point per check roundShow as table
| Round finished | Alive | http | https | socks4 | socks5 |
|---|
Get the list
Pick what you want. The URL underneath always returns the current list, so save the link, not the file.
– proxies match
Click a row to copy it| Proxy | Protocols | Country | Anonymity | Latency | Speed | Uptime | Alive for | Exit IP |
|---|
API
Every list is a plain URL, so curl -O saves it under its own name (socks5.txt, latest.json, …). There are no keys and no rate limits. Lists change every round, so fetch them again rather than keeping old files.
# every alive proxy, ip:port per line
curl -O https://proxy.nitaimaarek.com/latest.txt
# one protocol per file
curl -O https://proxy.nitaimaarek.com/socks5.txt
curl -O https://proxy.nitaimaarek.com/http.json
# filters go in the query string. Quote the URL, or your shell eats the ? and &
curl -O "https://proxy.nitaimaarek.com/latest.json?http=0&country=US,DE&max_ms=1500"
# one random working proxy, straight into another command
curl -x "$(curl -s https://proxy.nitaimaarek.com/random?protocol=socks5)" https://example.com
Lists
| /latest | every alive proxy |
| /http | plain HTTP proxies |
| /https | proxies that tunnel HTTPS (CONNECT) |
| /socks4 /socks5 | SOCKS proxies; /socks gives both |
| /random | one random alive proxy, as a URI |
| /api/stats | pool statistics and 24 h history, JSON |
Formats
Pick one with a file extension or with type=. /latest?type=json and /latest.json return the same thing.
| txt | 1.2.3.4:8080 (the default) |
| uri | socks5://1.2.3.4:1080, one line per protocol |
| json | full details, wrapped with updated/count |
| jsonl | one JSON object per line |
| csv | with a header row |
| proxychains | socks5 1.2.3.4 1080 lines (.conf) |
Filters
| protocol=http,socks5 | only these protocols |
| http=0 | drop a protocol (http=1 keeps only it). Also https, socks4, socks5 |
| country=US,DE | exit country, ISO code; !CN excludes |
| anonymity=elite | elite, anonymous, transparent; comma-separate for several |
| max_ms=1500 | latency ceiling, ms |
| min_speed=1000 | measured download speed, kbps |
| min_uptime=90 | % of checks passed in the last 24 h |
| distinct=1 | one proxy per exit IP |
| sort=latency | or speed, uptime, alive, random |
| limit=50 | at most N proxies |
| dl=1 | make browsers download instead of show |
Typos fail loudly with a 400 that says what's wrong. They never silently return an unfiltered list.
How it checks
- Every 2½ minutes the whole pool is walked, up to 1,024 probes at a time, from one server in Paris.
- Each protocol is actually used. HTTP gets a real GET. HTTPS gets a CONNECT to port 443 followed by a verified TLS handshake, so proxies that intercept TLS fail. SOCKS4 and SOCKS5 get their handshakes. Every probe then fetches a one-time token from our judge, and a proxy counts as alive only if that token comes back. A login page or a fake “200 OK” never passes.
- Anonymity is measured, not copied from a source list. The judge looks at what the proxy added to the request. If our address shows up, the proxy is transparent. If there are proxy headers (Via, X-Forwarded-For…) but no address, it's anonymous. If there's nothing, it's elite. HTTPS and SOCKS tunnels can't add headers, so they are always elite.
- Latency is the round trip for one request through the proxy. Speed is a 256 KiB download, re-measured every 10 minutes. Exit IP is the address the judge actually saw. It's often not the proxy's own address.
- Dead proxies back off. They're retried every round for 30 minutes, every 10 minutes for 6 hours, then hourly, and dropped after 48 hours of silence. New candidates come from the ProxyScrape feed every 30 minutes.