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 schema and metadata are in the docs. 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 |
The operators behind the IDs.
provider is an ID that holds from build to build. Residential Proxy Provider resolves each one to the provider's name and homepage, whether we track its addresses and whether it has gone defunct. Join it on provider.
| id | name | url | active | note | defunct |
|---|---|---|---|---|---|
| brightdata | Bright Data | https://brightdata.com/ | t | f | |
| oxylabs | Oxylabs | https://oxylabs.io/ | t | f | |
| soax | SOAX | https://soax.com/ | f | f |
What each flag rests on.
Every flag arrives with the operator behind it, how strongly it is supported and when it was last observed, and for proxy pools how persistent the address has been.
providerlast_seenfirst_seenhitshits_days_pctproviders_num45.83.91.1
An address seen on 63% of the last 90 days is a standing pool member, and one seen once is noise. The columns are in the file, so your customers can tell them apart.
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, 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"])
Where it occurs.
Residential Proxy IP holds 68,010,615 IPv4 addresses in the latest build. These are the countries and networks with the most of them; each opens its own page, as does every IP range.
By country
Of the 68,010,615 IP Geolocation places.
By network
Each /24 counted for the AS announcing most of it.
- AS36947Telecom Algeria2,065,097 · 3.04%
- AS12389PJSC Rostelecom1,657,063 · 2.44%
- AS8452Telecom Egypt1,643,330 · 2.42%
- AS36903Office National des Postes et Telecommunications ONPT (Maroc Telecom) / IAM1,555,764 · 2.29%
- AS8151Uninet S.A. de C.V.1,249,721 · 1.84%
- AS45899VNPT Corp1,165,611 · 1.71%
- AS6057Administracion Nacional de Telecomunicaciones1,030,519 · 1.52%
- AS9121Turk Telekomunikasyon Anonim Sirketi904,759 · 1.33%
- AS9829National Internet Backbone885,589 · 1.30%
- AS4134CHINANET-BACKBONE861,510 · 1.27%
Getting your hands on it.
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 and consistent.
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're licensed for, poll a build, follow the download redirect and verify what landed. Install commands are in the docs.
What does a row tell us?
One address seen exiting a residential proxy pool in the window, the provider that sold it, the first and last day it appeared, how many times, the share of days it appeared on, and how many providers resold it.
Which window should we use?
90 days is the widest net. The 1, 7, 14, 30 and 60-day windows are the same observations over shorter spans, for when an address seen two months ago is too old to act on.
How do we read hits and hits_days_pct?
hits counts the observations in the window and hits_days_pct is the share of its days the address appeared on. An address seen most days is a standing exit; one seen once may have joined a pool for an afternoon.
How often is it rebuilt?
Daily. The metadata call answers when the current build landed and how many rows it holds, before you fetch it.
Which formats does a build ship in?
Gzipped CSV. The 1, 7 and 14-day windows ship an MMDB as well.
How do we get it?
Under a Standard or Redistribution license, quoted per database. Get a quote names Residential Proxy IP to us, and Request evaluation puts the full current build in your hands to test first. Download sample asks us for a slice of it.
Is there a lookup API?
No. You download Residential Proxy IP and query it in your own systems, so nothing is metered and no address leaves them. Each build comes from the database API, or to your webhook or your own storage. One address at a time, its page on this site shows what Residential Proxy IP holds for it.
What if a row looks wrong?
Send it to us and we'll tell you what we hold on it, when we last saw it and how. Corrections land in the next build.
Test the real build first.
An evaluation license puts a full current build in your hands, with no sampling, so you can measure it against your own traffic before anyone talks about terms.