Residential proxy exits, over a rolling 90 days.
Addresses observed exiting a residential proxy pool, with the provider, the window in which they appeared, how often they appeared, and how many pools resold them.
Schema at a glance.
See documentation →The database's schema and metadata are documented carefully. It is published as CSVGZ.
| ip | provider | first_seen | last_seen | hits | hits_days_pct | providers_num |
|---|---|---|---|---|---|---|
| 138.97.217.21 | netnut | 2026-06-23 | 2026-09-06 | 8 | 2 | 7 |
| 113.188.74.104 | dataimpulse | 2026-08-09 | 2026-08-13 | 17 | 6 | 2 |
| 45.173.157.0 | netnut | 2026-06-15 | 2026-07-31 | 2 | 1 | 2 |
| 191.127.13.37 | netnut | 2026-06-22 | 2026-06-23 | 5 | 1 | 3 |
| 2804:2980:f651:2b00:8a7f:a380:8e43:db1a | anyip | 2026-08-14 | 2026-08-14 | 1 | 1 | 1 |
Downloading it from code.
Database API reference →One call gets you the current Residential Proxy IP build. Every official client wraps it three ways: straight to disk, a time-limited link you hand to your own runner, or bytes in memory. A file written to disk lands only once the whole transfer has arrived, and checksums() returns the published digests to verify it against.
download()downloadUrl()downloadBytes()metadata()checksums()import osfrom internetdata import InternetDataclient = InternetData(os.environ["INTERNETDATA_API_KEY"])# what is in today's build, without moving the filemeta = client.database.metadata("resproxy_ip_90d_v1")client.database.download("resproxy_ip_90d_v1", "csvgz", "./resproxy_ip_90d_v1.csv.gz")sums = client.database.checksums("resproxy_ip_90d_v1", "csvgz")print(meta.updated, meta.entries, sums["sha256"])
Getting your hands on it.
The file is the product. Teams join Residential Proxy IP against traffic they already log, inside their own infrastructure, and never send an address anywhere to get an answer.
Rules and scoring
Join the rows against traffic you already log and score a session on the operator and the confidence, rather than on one boolean.
Account and payment risk
Signals at signup and checkout, where the answer has to be local, immediate and the same every time you evaluate it.
Network and abuse operations
Attribute what is hitting you to the infrastructure behind it, with provider ids that stay stable as ranges rotate.
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 — list what you are licensed for, poll a build, follow the download redirect, verify what landed. Install commands are in the docs.
No loose ends.
How often does this database rebuild?
Every database 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.
Test the real build first.
An evaluation license puts a full current build in your hands — every row, every column, no sampling — so you can measure it against your own traffic before anyone talks about terms.