BGP and RIR IP Allocations: Why Proxy IP Origin Matters
An RIR IP allocation says who holds a proxy IP, BGP says where it is routed. Learn to audit both with RDAP, RPKI and geofeeds before you buy proxies.

An RIR IP allocation is the registry record naming which organization was handed a block of addresses, while BGP is the routing protocol that announces where that block actually sits on the internet, and a proxy IP's real origin is the gap between those two facts.
That gap is why a pool sold as "UK residential" answers with a German city, why a clean-looking IP inherits blocks it never earned, and why two geolocation vendors return different countries for the same address on the same day. This guide walks the registry and routing layer from the top: what an allocation record contains, what a site owner learns about you in a single RDAP query, why the ASN carries the reputation instead of the individual IP, how BGP relocates address space in practice, and how RPKI and geofeeds let you verify a provider's claims before money changes hands.
The Four Layers of an IP's Identity
Most proxy buyers treat "where is this IP" as one question. It is four, each answered by a different system, and they routinely contradict each other.
| Layer | What it states | Authoritative source | How you check it |
|---|---|---|---|
| Allocation | Which organization holds the block | RIR database (whois / RDAP) | `rdap.arin.net/registry/ip/...` |
| Assignment | Which customer or site uses the sub-block | Child inetnum / NetRange object | RDAP entity and parent records |
| Announcement | Which AS routes it, and from where | Global BGP table (RIS, RouteViews) | RIPEstat, bgp.tools |
| Geolocation | Where a website believes it is | Commercial IP databases | The target's own response |
An address can be allocated to a company registered in London, sub-assigned to a reseller in Cyprus, announced from a Frankfurt point of presence, and geolocated to Amsterdam by one vendor and Frankfurt by another. Nothing here is broken. These are four separate assertions made by four separate parties, and only one of them, the geolocation database, is the one your scraping target reads.
Get comfortable with that hierarchy and most proxy mysteries stop being mysteries.
What an RIR IP Allocation Actually Is
Address space flows down a chain defined by RFC 7020, the Internet Numbers Registry System. IANA sits at the top and holds the IPv4 address space registry, which records which /8 went to which Regional Internet Registry. Each RIR then allocates to Local Internet Registries, usually ISPs and hosting companies, which assign smaller ranges to their own customers.
Two words get used loosely and mean different things in the databases:
- Allocation is space given to an LIR so it can distribute it further. RIPE marks these
ALLOCATED PA. - Assignment is space handed to an end user for their own network. RIPE marks these
ASSIGNED PAorASSIGNED PI, and ARIN usesreallocationandreassignmenton its network objects.
The status field is one of the most useful things on the record. An ASSIGNED PA block whose holder is a hosting company tells you a server network, not a consumer broadband network, no matter what the sales page said.
The other thing to internalize is that free IPv4 ran out a long time ago. IANA's central pool was exhausted on 3 February 2011. ARIN hit zero on 24 September 2015. The RIPE NCC issued its last addresses from the final /8 on 25 November 2019 and has run a waiting list since. Since then almost no new IPv4 gets allocated. It gets transferred and leased, which is exactly why so much proxy space has a registry record that no longer matches who operates it. When you audit a proxy IP, you are usually looking at a block that has changed hands at least once.
Scraping at scale? Skip the blocks.
Fast, unblockable datacentre proxies with unlimited bandwidth.
The Five RIRs and What Their Records Contain
Five registries divide the planet. Each publishes the same core data through two interfaces: legacy whois on port 43, and RDAP over HTTPS with structured JSON.
| RIR | Service region | Operating since | Whois host | RDAP base |
|---|---|---|---|---|
| ARIN | United States, Canada, parts of the Caribbean | 1997 | `whois.arin.net` | [rdap.arin.net/registry/](https://rdap.arin.net/registry/) |
| RIPE NCC | Europe, Middle East, Central Asia | 1992 | `whois.ripe.net` | [rdap.db.ripe.net/](https://rdap.db.ripe.net/) |
| APNIC | Asia-Pacific | 1993 | `whois.apnic.net` | [rdap.apnic.net/](https://rdap.apnic.net/) |
| LACNIC | Latin America, Caribbean | 2002 | `whois.lacnic.net` | [rdap.lacnic.net/rdap/](https://rdap.lacnic.net/rdap/) |
| AFRINIC | Africa | 2005 | `whois.afrinic.net` | [rdap.afrinic.net/rdap/](https://rdap.afrinic.net/rdap/) |
A network record carries roughly this set of fields, with naming differences per registry:
| Field | Meaning | Why a proxy buyer cares |
|---|---|---|
| `inetnum` / `NetRange` | The address range covered | Tells you the block size you share reputation with |
| `netname` | Short label chosen by the holder | Often leaks the truth (`SERVERS`, `HOSTING`, `DSL-POOL`) |
| `org` / `OrgName` | Legal holder of the resource | The company actually accountable for it |
| `country` | Administrative country code | Not a location, see below |
| `status` | Allocation or assignment type | Distinguishes ISP space from end-user space |
| `abuse-c` / `OrgAbuseEmail` | Where complaints go | A hosting abuse desk means hosting space |
| `created` / `last-modified` | Record timestamps | A record edited last week suggests a recent transfer |
| `geofeed` | URL of a self-published location file | The operator's own statement of where the block is |
The country field is administrative, not geographic
This trips up nearly everyone. The RIPE NCC states plainly in its database documentation that the country: attribute on an inetnum is not a reliable indicator of where the network is used. It describes the resource holder's registered country. A UK company can hold a block it deploys entirely in Singapore, and the record will still read country: GB. Treat it as a legal fact about a company, never as a location for the addresses.
Reading an Allocation With RDAP in One Lookup
RDAP replaced whois as the standard interface. The query format is defined in RFC 9082 and the JSON response format in RFC 9083, both published June 2021. You do not need to know which registry holds a block first: IANA publishes a bootstrap file mapping ranges to RDAP servers at data.iana.org/rdap/ipv4.json, and the community redirector at rdap.org follows it for you.
# Bootstrap-aware lookup, works for any IP in any region
curl -s "https://rdap.org/ip/104.16.0.1" | jq '{handle, name, country, type, startAddress, endAddress}'
# Straight to a specific registry when you already know the region
curl -s "https://rdap.arin.net/registry/ip/23.20.0.1" | jq '.name, .type, .cidr0_cidrs'
Pull the accountable parties and the abuse contact out of the entities array:
curl -s "https://rdap.org/ip/45.77.0.1" | jq -r '.entities[]?.roles | join(",")'
curl -s "https://rdap.org/ip/45.77.0.1" | grep -Eio '[a-z0-9._-]+@[a-z0-9.-]+' | sort -u
Legacy whois still works and is sometimes faster to eyeball:
whois -h whois.ripe.net 185.199.108.153 | grep -Ei '^(inetnum|netname|org|country|status|descr|geofeed)'
Here is what a site owner learns about your proxy from that one query, in about 200 milliseconds: the legal holder, the block size, the allocation status, the abuse contact domain, when the record last changed, and any remark naming a reseller. If the abuse address ends in a hosting company's domain and the netname reads VPS-POOL-3, no amount of browser fingerprint patching changes what the record says. Registry data is the cheapest, most stable classification signal a defender has, which is why it feeds directly into how sites score IP reputation.
Why the ASN Carries the Reputation
Individual IPv4 addresses are too numerous and too fluid to track one by one. Reputation systems therefore key on the units that persist: the announcing Autonomous System and the prefix it announces. Spamhaus publishes ASN-DROP at the AS level. Cloudflare firewall rules match ip.geoip.asnum directly. Commercial usage-type feeds label whole ASNs as hosting, ISP, or mobile.
The practical consequence is shared fate. If your proxy sits in a /24 and forty of the other 254 addresses ran a credential-stuffing campaign last month, your address inherits the smell. The RIR record is what tells you how big that blast radius is: a /22 held by an IP broker means 1,024 addresses of shared history, most of which you cannot see. That mechanism is the whole reason subnet diversity is worth paying for, and it is why the datacenter ASN behind a pool predicts block rates better than any single IP's history does.
Registry layer, routing layer, reputation layer. The ASN is where the middle two meet.
How BGP Decides Where an IP Really Lives
The Border Gateway Protocol, specified in RFC 4271, is how networks tell each other which prefixes they can reach. An AS originates a prefix by announcing it to its peers and upstreams, those neighbors propagate it, and every router on the internet ends up with a path back. Two properties of that system matter enormously for proxies.
A prefix lives wherever its announcing routers are. Nothing in BGP references the registry. An operator can take a block allocated through RIPE to a UK entity, plug it into a router in Frankfurt, and announce it there. Packets for that block now terminate in Germany. The RIPE record still says GB. Both statements are true, and only one of them describes where your traffic exits.
The same prefix can be announced from many places at once. Anycast and multi-site deployments announce identical space from Ashburn, Frankfurt and Singapore simultaneously, and the closest announcement wins per client. A more specific announcement also beats a less specific one, so a /24 carved out of a /20 pulls traffic away from the parent regardless of who holds the parent.
Check both facts against RIPEstat's public data API:
# Which AS originates the prefix covering this IP, and which prefix is it?
curl -s "https://stat.ripe.net/data/routing-status/data.json?resource=185.199.108.153" | jq '.data.resource, .data.origins, .data.visibility'
# Everything the routing table knows about an AS, including announced prefixes
curl -s "https://stat.ripe.net/data/announced-prefixes/data.json?resource=AS36459" | jq '.data.prefixes[0:10][].prefix'
For a browser view, bgp.tools and bgp.he.net both show the origin AS, the upstreams, and the peer geography, which is a decent proxy for where a prefix is physically announced. Compare the upstream transit providers to the country the seller claims. A block advertised as Brazilian residential whose only upstreams are two European transit networks is not exiting in Brazil.
Why Your UK Proxy Geolocates to Germany
This is the single most common support ticket in the proxy business, and it has five causes. They stack.
- The prefix is announced from a different country than the registry names. Registry says GB because the holding company is British. The router is in Frankfurt. This is the root cause in most cases.
- Latency triangulation puts it where the packets terminate. Commercial geolocation vendors run measurement probes and infer position from round-trip times. If your exit node answers in 2 ms from a Frankfurt datacenter and 18 ms from London, every probe agrees it is German. The registry never enters the calculation.
- The registry record is stale after a transfer. Post-exhaustion transfers move blocks between organizations and sometimes between RIR regions. Databases that cached the old holder can lag by weeks, so one vendor reports the old country and another the new one.
- No geofeed exists, so vendors guess. When the operator publishes nothing, databases fall back on inference, and inference disagrees.
- Reverse DNS leaks a city and gets parsed. PTR records like
fra-03.pool.example.netare mined for airport and city codes. A hostname containingfra,amsorlhrpulls a vendor's guess toward that city even when the routing says otherwise.
If country accuracy matters to your job, and it does for pricing, retail and geo-targeted collection, you cannot rely on a seller's country label. You have to observe what a real destination reports through the proxy itself.
Geofeeds: The Operator's Own Answer
Here is the layer almost nobody checks, and it is the fastest way to separate a serious network operator from a reseller.
RFC 8805, published August 2020, defines a self-published IP geolocation feed: a plain CSV served over HTTPS where the operator states, per prefix, the country, region and city where that space is actually deployed. RFC 9092, July 2021, defines how to find that file, by putting a geofeed: attribute (or a remarks: Geofeed https://... line) directly in the RIR inetnum object, and how to validate it with an RPKI-signed detached signature.
A geofeed line looks like this:
203.0.113.0/24,GB,GB-LND,London,
198.51.100.0/25,DE,DE-HE,Frankfurt am Main,
The country and region codes are ISO 3166-1 alpha-2 and ISO 3166-2. Major geolocation vendors ingest these feeds, which means the operator effectively declares the location that ends up in the databases your targets query.
Find one straight from the registry record:
# The geofeed URL, if the holder published it
whois -h whois.ripe.net 203.0.113.10 | grep -iE 'geofeed'
# Then read the feed and pull the line covering your prefix
curl -s "https://example-operator.net/geofeed.csv" | grep '^203.0.113.'
Use this as a buying test. Ask a provider for the geofeed URL covering the ranges they are selling you. An operator running its own allocations will send a link within minutes. A reseller who does not control the inetnum object cannot publish one at all, which tells you their country labels are inherited from someone else's registry field and are not maintained by anyone you can call.
IRR Objects and RPKI: Who May Announce a Prefix
Announcing a prefix in BGP does not prove you are entitled to it. Two systems exist to attach authorization to routing, one old and weak, one modern and cryptographic.
Internet Routing Registries hold route and route6 objects that pair a prefix with the AS permitted to originate it. RADB, ALTDB, NTTCOM and the RIR-operated IRRs are the common databases, and transit providers build prefix filters from them. The weakness is authentication: in several non-RIR IRRs, objects can be created with little proof of holdership, and stale objects from a decade ago are common.
RPKI fixes the authorization problem properly. The architecture is specified in RFC 6480, published February 2012. Each RIR issues resource certificates to its members, and a member signs a Route Origin Authorization stating that a given AS may originate a given prefix, up to a stated maximum length. Relying-party validators such as Routinator and rpki-client turn those ROAs into a validated cache that routers consume. RFC 6811 then defines the three outcomes for any announcement:
| RPKI state | Meaning | What it suggests about a proxy prefix |
|---|---|---|
| Valid | A ROA covers this prefix and matches the origin AS | The holder deliberately authorized this AS. Normal and healthy. |
| Invalid | A ROA exists but the origin AS or prefix length does not match | Misconfiguration or unauthorized announcement. Route may be dropped by upstreams. |
| NotFound | No ROA covers this prefix | No cryptographic statement either way. Very common on older space. |
Check any pair in one call:
curl -s "https://stat.ripe.net/data/rpki-validation/data.json?resource=AS15169&prefix=8.8.8.0/24" | jq '.data.status, .data.validating_roas'
Why this belongs in a proxy audit: an Invalid state on a block you are about to rent means large transit networks that enforce origin validation may already be discarding the route, so those addresses are unreachable from parts of the internet you cannot test from your laptop. A NotFound state combined with an origin AS that has no visible relationship to the RDAP holder is the classic fingerprint of loosely brokered space. It works today, and it can vanish the moment a filter tightens or the real holder objects. Neither state is automatically disqualifying. Both are worth pricing in.
Why Geolocation Databases Disagree With Registry Data
The registry and the geolocation vendor answer different questions, with different methods, on different clocks.
| Source | What it actually measures | Typical refresh | Best use |
|---|---|---|---|
| RIR RDAP / whois | Legal holder and administrative country | On change, near real time | Who is accountable, block size, status |
| Geofeed (RFC 8805) | Operator's declared per-prefix city | Operator's own cadence | Ground truth when it exists |
| BGP routing table | Announcing AS, prefix length, upstreams | Seconds | Where the route physically originates |
| MaxMind GeoIP2 | Inferred location from probes and signals | Weekly database releases | What many sites believe |
| IPinfo, IP2Location, DB-IP | Inference plus submitted corrections | Daily to weekly | Cross-checking a second opinion |
No vendor sees the whole picture, so disagreement is the normal state rather than a bug. The rule that follows is simple. Use the registry to learn who controls an address and how much shared history it carries. Use BGP to learn where it is announced from. Use the geofeed when one exists. Then use a live request through the proxy to learn what your specific target believes, because that is the only opinion that decides whether you get served or blacklisted.
A Five Minute Origin Audit for Any Proxy IP
Run this before you commit to a pool. Take three or four sample IPs from a trial, not one, because a pool's worst subnet is what determines your block rate.
Step 1. Identify the holder.
IP=185.199.108.153
curl -s "https://rdap.org/ip/$IP" | jq '{name, country, type, startAddress, endAddress, remarks}'
Look at name and type. A hosting-sounding netname plus an ASSIGNED PA status on a hosting org means datacenter space regardless of the product label.
Step 2. Find the announced prefix and origin AS.
curl -s "https://stat.ripe.net/data/routing-status/data.json?resource=$IP" | jq '.data.origins[].origin, .data.first_seen'
Note the prefix length. A /24 shares your fate with 254 neighbors, a /20 with roughly 4,094.
Step 3. Check RPKI origin validation. Feed the AS and prefix from step 2 into the rpki-validation call shown earlier. Flag anything Invalid.
Step 4. Hunt for a geofeed. Grep the whois output for geofeed. If one exists, read the line covering your prefix and compare the city to what the seller promised.
Step 5. Ask a real destination what it sees, through the proxy. This is the only step that reflects your actual working conditions. With the SparkProxy Scraping API, pin the exit country and fetch a lookup endpoint in one call:
curl -G "https://scrape.sparkproxy.io/api/v1" \
-H "X-API-Key: sk-YOUR_API_KEY" \
--data-urlencode "url=https://ipinfo.io/json" \
--data-urlencode "render_js=false" \
--data-urlencode "premium_proxy=true" \
--data-urlencode "country_code=GB"
premium_proxy=true routes through the residential pool instead of datacenter ranges, and country_code takes an ISO 3166-1 alpha-2 code such as US, GB or DE. Loop it in Python to sample what the exit reports across several countries:
import requests
API = "https://scrape.sparkproxy.io/api/v1"
HEADERS = {"X-API-Key": "sk-YOUR_API_KEY"}
for cc in ("GB", "DE", "US", "JP"):
r = requests.get(
API,
headers=HEADERS,
params={
"url": "https://ipinfo.io/json",
"render_js": "false", # plain HTTP fetch, 1 credit
"premium_proxy": "true", # residential exit
"country_code": cc, # ISO 3166-1 alpha-2
},
timeout=60,
)
seen = r.json()
print(cc, "->", seen.get("country"), seen.get("city"), seen.get("org"))
If you ask for GB and the destination reports DE, you have just reproduced the mismatch from section seven, and steps 1 through 4 tell you which of the five causes produced it.
Step 6. Decide. A pool where the RDAP holder, the announcing AS, the geofeed and the live observation all agree is a pool whose country claims will survive contact with a real target. Anything less, and you should be paying less for it.
What This Changes About Buying Proxies
Sales pages describe pools in marketing terms. Registries and routing tables describe them in verifiable ones. Ask a prospective provider four things and check each yourself: which ASNs the exits announce from, what the RDAP status and holder are on a sample of the ranges, whether a geofeed covers the ranges sold as country-targeted, and what a neutral endpoint reports through the proxy for each country you need.
SparkProxy runs its own datacenter and ISP ranges alongside a residential pool, and the Scraping API's country_code parameter resolves to exits we can point at rather than a registry field we inherited. That is the distinction worth testing, whoever you buy from.
Frequently asked questions
FAQ
An RIR IP allocation is a record in a Regional Internet Registry database showing that a block of IP addresses has been given to a specific organization. IANA delegates address space to the five RIRs (ARIN, RIPE NCC, APNIC, LACNIC, AFRINIC) under RFC 7020, and each RIR publishes its allocations through whois and RDAP so anyone can look up who holds a given range.
Query RDAP, which returns structured JSON per RFC 9082. Run curl -s https://rdap.org/ip/ | jq to get the holder name, allocation status, block boundaries and abuse contact in one request, then cross-check the announcing AS with RIPEstat's routing-status data call to see which network is actually routing it.
Most often because the prefix is allocated to a UK-registered company but announced over BGP from a router in Germany. Geolocation vendors infer position from measured latency and routing, not from the registry country: field, so they report where the packets terminate. Stale transfer records, a missing geofeed, and city codes in reverse DNS produce the same effect.
Indirectly, and it is the strongest single input. BGP determines which network announces a prefix and therefore where traffic to it terminates, and geolocation databases build on that plus latency measurement. The registry allocation does not determine geolocation at all, which is why an RIR record and a geolocation lookup routinely disagree.
RPKI is a certificate system, defined in RFC 6480, that lets an address holder cryptographically authorize which AS may announce its prefixes. Networks enforcing origin validation per RFC 6811 drop announcements marked Invalid, so a proxy range in an Invalid state can be unreachable from parts of the internet without the seller ever noticing.
Not directly, but they can change every input that vendors use. Announcing the prefix from a router in the target country, publishing an RFC 8805 geofeed naming that country, submitting corrections to geolocation vendors, and fixing reverse DNS all move the reported location over days to weeks. A provider who does none of that is simply passing along whatever the databases already guessed.
Get 50% off your first month
Premium datacentre proxies with unlimited bandwidth. Use the code at checkout.
Offer ends soon โ claim it before it's gone
Related articles

What Is MTU and MSS Clamping in Proxy Connections
Small requests work, large ones hang forever? Learn MTU vs MSS, PMTUD black holes, and how MSS clamping fixes stalled proxy and tunnel connections.

The HTTP CONNECT Method Explained
The HTTP CONNECT method at wire level: authority-form request lines, 200 Connection Established, 407 and 502 debugging, and why HTTPS resists inspection.

How Proxy Caching Works: Forward Proxy Cache Explained
How proxy caching works: Cache-Control and ETag revalidation, why an HTTPS CONNECT tunnel cannot be cached, and how a stale hit corrupts scraped data.
