Quick answer
How do I check which ISP my proxy IP belongs to?
Request https://api.ipify.org through the proxy to get the exit IP, then query RIPEstat's prefix overview for that IP directly, without the proxy. The answer lists the announcing ASN and its holder, such as AS7922 for Comcast. With Broadband Proxies, compare it with the asn- you set; plans start at $2.63 for 1 GB (October 2026). No KYC; crypto only.
Three steps to verify an ISP-targeted IP
Get the exit IP through the proxy
Call an IP echo service such as api.ipify.org with your targeted username. Use the same session ID as your real check if you use sticky mode.
Look up the IP's network directly
Call RIPEstat's prefix-overview for that IP, without the proxy. It returns the prefix and the ASN or ASNs announcing it, with holder names.
Compare and log
Store time (UTC), username filters, exit IP and announcing ASN with each result. If the ASN differs, rotate and keep the evidence for support.
How do I do it in Python?
This version uses only the Python standard library. Replace USERNAME and PASSWORD with your proxy credentials and change the filters.
import json
import urllib.request
USER = "USERNAME-country-us-state-il-city-chicago-asn-7922" # Comcast in Chicago
PROXY = f"http://{USER}:[email protected]:7777"
via_proxy = urllib.request.build_opener(
urllib.request.ProxyHandler({"http": PROXY, "https": PROXY}))
ip = via_proxy.open("https://api.ipify.org", timeout=30).read().decode().strip()
# RIPEstat is called directly, not through the proxy
url = ("https://stat.ripe.net/data/prefix-overview/data.json"
f"?resource={ip}&sourceapp=asn-check")
data = json.load(urllib.request.urlopen(url, timeout=30))["data"]
asns = [(a["asn"], a["holder"]) for a in data.get("asns", [])]
print(ip, data.get("resource"), asns)
if 7922 not in [a for a, _ in asns]:
print("Different ASN: rotate and keep this line for support")How do I do it in Node.js?
Node's built-in fetch does not take a proxy option, so this example uses the undici package (npm install undici) for the proxied request.
import { ProxyAgent, fetch } from 'undici';
const user = 'USERNAME-country-us-state-ny-city-new_york-asn-701'; // Verizon Fios
const agent = new ProxyAgent({
uri: 'http://gw.broadbandproxies.com:7777',
token: 'Basic ' + Buffer.from(`${user}:PASSWORD`).toString('base64'),
});
const ip = (await (await fetch('https://api.ipify.org', { dispatcher: agent })).text()).trim();
const res = await fetch(`https://stat.ripe.net/data/prefix-overview/data.json?resource=${ip}&sourceapp=asn-check`);
const { data } = await res.json();
console.log(ip, data.resource, (data.asns || []).map((a) => `AS${a.asn} ${a.holder}`));Is there a one-line check with curl?
Yes. The first command goes through the proxy, the second does not.
IP=$(curl -s -x http://gw.broadbandproxies.com:7777 \
-U "USERNAME-country-us-state-tx-city-dallas-asn-11427:PASSWORD" https://api.ipify.org)
curl -s "https://stat.ripe.net/data/prefix-overview/data.json?resource=$IP&sourceapp=asn-check"Why might the ASN not match what I asked for?
- Regional or parent ASN. Charter announces former Time Warner Cable areas on regional ASNs; a Spectrum IP in Dallas may show AS11427 while you asked for AS20115. Both are Charter.
- Recent merger. Former Quantum Fiber homes may show Lumen's AS209 although AT&T owns them since February 2, 2026.
- More-specific announcements. A customer or partner network can announce part of an ISP's range. RIPEstat then lists two ASNs for the prefix.
- A different network. Rarely, the IP really belongs to another ISP. Rotate, and send the logged line to [email protected].
Geolocation is a separate question: a city lookup can disagree with the ZIP or city you targeted near city limits. Check it with the geolocation service your target site is likely to use.
Which public lookups can I use?
RIPEstat's Data API is free and documented, and asks heavy users to add a sourceapp parameter. Hurricane Electric's BGP Toolkit (bgp.he.net) shows an ASN's prefixes and peers in a browser. PeeringDB lists networks' public peering details and often a friendlier name. ARIN's whois gives the registration record. Keep lookups at a polite rate: one per exit IP is enough.
Checking a proxy's ASN: FAQ
Should I query RIPEstat through the proxy?
No. Query it directly. Routing data does not depend on where you ask from, and sending lookups through the proxy wastes traffic you pay for: Usage counts all data sent and received through the proxy (upload and download, headers included). 1 GB = 1,000,000,000 bytes. Connection attempts that fail before reaching the target are not counted.
How much traffic does a check use?
Very little: the api.ipify.org reply is a few hundred bytes plus TLS overhead, so thousands of checks fit in 1 GB. The RIPEstat call goes direct and uses none of your proxy traffic.
Can I check IPv6 exits the same way?
RIPEstat accepts IPv6 addresses too. Broadband Proxies documents IPv4 exits; if you ever receive an IPv6 address, the same lookup works.
Is this code tested?
The snippets were checked for syntax (Python py_compile, node --check) on 2026-10-18. They call only api.ipify.org and RIPEstat, which allow this kind of use. Replace the credentials before running them.
What should I send support if the ASN is wrong?
The time in UTC, the full username without the password, the exit IP and the RIPEstat result. Never send your account number or proxy password. Email replies within 12 hours, 7 days a week.
Sources (3)
- RIPEstat Data API documentation — RIPE NCC (2026-10-18)
- ipify API — ipify (2026-10-18)
- undici ProxyAgent — Node.js undici (2026-10-18)