Every Tor exit node, rebuilt every day.
The public Tor exit set, refreshed daily so a node that left the network yesterday is not still blocking a customer today.
Schema at a glance.
See documentation →The database's schema and metadata are documented carefully. Multiple formats are available, including CSVGZ and MMDB.
| start_ip | end_ip | confidence | last_seen |
|---|---|---|---|
| 46.4.103.35 | 46.4.103.35 | high | 2026-09-08 |
| 188.97.91.218 | 188.97.91.218 | high | 2026-09-08 |
| 46.232.251.191 | 46.232.251.191 | high | 2026-09-08 |
| 91.199.197.75 | 91.199.197.75 | high | 2026-09-08 |
| 2620:18c:0:192::e0:170 | 2620:18c:0:192::e0:170 | high | 2026-09-08 |
Downloading it from code.
Database API reference →One call gets you the current Tor IP build. Every official client wraps it three ways — straight to disk, a signed link you hand to your own runner, or bytes in memory — and each verifies the published checksum before it hands the build back.
download(path)url(expires)bytes()build()formatsince(build)from vpndetection import Clientclient = Client(os.environ["VPNDETECTION_API_KEY"])db = client.database("tor_ip_v1", format="csvgz")db.download("tor_ip_v1.csv.gz") # to diskurl = db.url(expires=3600) # signed linkblob = db.bytes() # in memorydb.build().published # last build
Getting your hands on it.
Where Tor IP earns its place in a risk stack — and what each of these decisions needs from the data rather than from a score.
Apply the policy you actually want
Some products welcome Tor and some cannot accept it. Either way the decision should be explicit rather than accidental.
Avoid stale blocks
Exit nodes churn constantly. A daily rebuild means yesterday's node stops being punished today.
Small enough to embed
At 109 KB compressed the whole set fits anywhere, including edge workers.
An official client for every major language.
All SDKs on GitHub →Twelve official clients for the languages you ship in, each wrapping the database endpoints as well as the lookup — list what you are licensed for, poll a build, follow the download redirect. Install commands are in the docs.
No loose ends.
How often does this dataset rebuild?
Every dataset publishes its own cadence and its last build date. The proxy datasets additionally carry a rolling 90-day observation window, so first seen and last seen are relative to that window.
Start without signing up.
Paste it into a terminal — no account needed. 1k daily allowance per user, answering ip and is_vpn.
{"ip": "45.83.91.1","is_vpn": true}