How to Read an IP Address RDAP Response
An IP address lookup returns the registration record for a network range, not a single host. Learn how to identify that range, follow its allocation hierarchy and find the contacts associated with it.
On this page
An IP address RDAP response describes the most-specific registered network containing the address you queried. It can identify the returned range, the Regional Internet Registry that supplied the record, organizations and contacts associated with the registration, and the record’s place in a larger allocation hierarchy.
It does not describe the device currently using the address. It is also not, by itself, a geolocation, routing or attribution result.
This guide focuses only on the RDAP ip network object. For domain fields such as nameservers, registrar statuses and DNSSEC, use the separate guide to reading a domain RDAP response. To retrieve the JSON from a terminal first, see how to query an RDAP server with cURL.
Quick answer: Confirm that
objectClassNameisip network, then check whether the queried address falls betweenstartAddressandendAddress. Usecidr0_cidrswhen present for CIDR notation,parentHandleand links for allocation context, andentitieswith theirrolesto identify registrants and abuse contacts. Treatcountry,statusand organization names as registration metadata, not proof of physical location, active routing or responsibility for traffic.
The fields to check first
| Question | Field or section |
|---|---|
| What kind of object was returned? | objectClassName |
| Which registered range contains the address? | startAddress and endAddress |
| Is it IPv4 or IPv6? | ipVersion |
| How is the range expressed as prefixes? | cidr0_cidrs, when the cidr0 extension is used |
| What identifies the registration? | handle and name |
| What kind of registration is it? | type |
| Is there a larger enclosing registration? | parentHandle and links |
| Which organizations and contacts are associated? | entities and roles |
| When did the registry record change? | events |
| What qualifications apply? | notices, remarks and rdapConformance |
RFC 9083 allows many registration-data members to be omitted under server policy. The NRO RDAP profile used by RIR services applies stronger requirements to core network fields and cidr0 support, but clients should still tolerate policy-based omissions, older responses and non-RIR implementations. Registration structure, authorization and supported extensions all affect the final shape.
A simplified IP-network response
The following example is illustrative and intentionally shortened. It uses the documentation-only 192.0.2.0/24 range and fictional identifiers and contact details.
{
"rdapConformance": [
"rdap_level_0",
"cidr0"
],
"objectClassName": "ip network",
"handle": "NET-192-0-2-0-1",
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.255",
"ipVersion": "v4",
"name": "EXAMPLE-NET",
"type": "DIRECT ALLOCATION",
"country": "US",
"parentHandle": "NET-192-0-0-0-0",
"cidr0_cidrs": [
{
"v4prefix": "192.0.2.0",
"length": 24
}
],
"status": [
"active"
],
"entities": [
{
"objectClassName": "entity",
"handle": "ORG-EXAMPLE",
"roles": ["registrant"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Example Network Operator"]
]
],
"entities": [
{
"objectClassName": "entity",
"handle": "ABUSE-EXAMPLE",
"roles": ["abuse"],
"vcardArray": [
"vcard",
[
["version", {}, "text", "4.0"],
["fn", {}, "text", "Abuse Desk"],
["email", {}, "text", "abuse@example.test"]
]
]
}
]
}
],
"events": [
{
"eventAction": "registration",
"eventDate": "2020-01-15T00:00:00Z"
},
{
"eventAction": "last changed",
"eventDate": "2026-06-10T12:30:00Z"
}
],
"links": [
{
"value": "https://rdap.example.test/ip/192.0.2.42",
"rel": "self",
"href": "https://rdap.example.test/ip/192.0.2.0",
"type": "application/rdap+json"
}
]
}
If the request was for 192.0.2.42, this response says that the registration system matched it to the range from 192.0.2.0 through 192.0.2.255. The response is about that network registration as a whole.
Why one address returns a network
The standardized IP lookup path accepts either an individual address or a CIDR prefix:
ip/{IP address}
ip/{CIDR prefix}/{prefix length}
An address can sit inside several levels of registration. A large block may be allocated to an RIR member, with a smaller block assigned or reallocated to a customer beneath it. RFC 9082 defines the lookup target as the most-specific, or smallest, registered network that completely contains the query.
That is why querying one address commonly returns hundreds or thousands of addresses. The response is not claiming that every address in the range belongs to one device or performs the same function. It identifies the closest matching registration object known to that service.
For a CIDR query, the result must completely encompass the submitted prefix. A more-specific registration that covers only part of the requested prefix is not a complete match for that query.
Confirm the object type and source
Start with objectClassName. For a successful IP-network lookup, the top-level value should be:
"objectClassName": "ip network"
This distinguishes the result from a domain, entity or Autonomous System Number object. It also tells a parser which object-specific members to expect.
Next, record the service that returned the response. RDAP clients discover authoritative services through IANA’s separate IPv4 and IPv6 bootstrap registries. Those registries route broad address allocations to the appropriate RIR service.
Do not infer the authoritative RIR from the response’s country field. Use the bootstrap result, redirect chain and final response URL as retrieval provenance. Retain a self link when present, but verify that its authority is consistent with the responding service instead of assuming the link is authoritative. Keep the retrieval time when preserving evidence.
Read startAddress and endAddress as a range
The two most important network-specific members are:
startAddress: the first address in the registered rangeendAddress: the last address in the registered range
Verify that the address you queried falls inclusively between them. This catches wrong endpoints, stale client state and responses accidentally associated with another request.
For IPv4, the values use dotted-decimal notation. IPv6 responses use textual IPv6 addresses and generally follow the compressed representation recommended by RFC 5952. Compare addresses numerically after parsing them; do not compare IPv6 strings lexicographically because equivalent addresses can have different textual forms.
The returned range may not align with one CIDR prefix. RDAP models a network with explicit start and end addresses because some registrations are “off-bit” ranges that require more than one CIDR block to represent exactly.
Use cidr0_cidrs when it is present
The registered cidr0 extension adds cidr0_cidrs, an array that expresses the returned range as one or more CIDR prefixes. Its use is announced in rdapConformance:
{
"rdapConformance": ["rdap_level_0", "cidr0"],
"cidr0_cidrs": [
{
"v4prefix": "192.0.2.0",
"length": 24
}
]
}
IPv4 entries use v4prefix; IPv6 entries use v6prefix. In both cases, length is the prefix length.
Treat the array as a complete set, not as a list from which to select the first item. An off-bit registration can need several entries. Outside profiles that require cidr0, a base RDAP response can expose its network boundaries without cidr0_cidrs. A client that needs CIDR notation can calculate an exact minimal decomposition from startAddress and endAddress, but it must not assume the range is one prefix.
The extension identifier and structure are registered in the IANA RDAP Extensions registry and defined in the NRO’s CIDR Expressions in RDAP specification.
Interpret handle, name, type and ipVersion
These fields identify and classify the registration:
handleis a registry-unique identifier for the network object. It is useful when correlating records from the same service, but it is not a universal Internet-wide ID.nameis the registry’s label for the network. It may resemble an organization or service name, but clients should not use it as the sole organization identifier.typedescribes the kind of network registration. Its vocabulary can reflect RIR policy and data models, so values should be displayed as supplied rather than forced into one universal enum.ipVersionis normallyv4orv6and should agree with both address boundaries.
Examples of type values encountered in live services include labels for allocations, assignments and provider-aggregatable space. Their exact wording is not consistent enough to infer the same contractual relationship from every RIR response.
Treat country as registration metadata
When supplied, country is a two-letter country code associated with the network record. It is not a precise IP geolocation result.
An address can be announced globally, used through anycast, assigned to infrastructure in another jurisdiction, carried through a VPN or used by a customer somewhere else. Registry policy and the history of the allocation can also affect which country code appears.
Use a dedicated, appropriately licensed geolocation source when physical or commercial geolocation is required, and state the uncertainty of that source. Do not silently convert RDAP’s country value into a city, user location or legal jurisdiction.
Some responses announce the geofeed1 extension and provide a link with the geofeed relationship defined by RFC 9877. That link points to a separate operator-published geolocation feed. It still requires independent retrieval and validation, and it does not establish the location of an individual device.
Follow the allocation hierarchy
parentHandle identifies a larger registration that encloses the current network. It provides context for delegated address space:
parent allocation
-> member or provider allocation
-> customer assignment
The most-specific result is normally the best starting point for operational investigation, but the parent can explain which upstream organization or RIR member received the larger block.
Look for a link whose relationship indicates an enclosing resource. A service may use the generic up relation or the RIR-specific rdap-up relation standardized by RFC 9910. That specification also defines rdap-down, rdap-top and rdap-bottom for other directions through an RIR hierarchy. These links are optional, so their absence does not prove that no parent or child registration exists.
Do not construct a parent URL by guessing from the handle: entity and network handles are registry-specific, and not every service exposes hierarchy through identical links.
A parent record is not automatically the correct abuse destination. Use the entities and roles on the most-specific record first, then follow authoritative links or parent context when the response lacks a usable contact.
Identify organizations by entity role
The entities array contains organizations, groups or individuals associated with the network. Select them by their roles, never by array position.
Roles commonly useful in an IP-network response include:
registrant: the entity associated with the registrationadministrative: an administrative contacttechnical: a technical or operational contactabuse: the contact designated for abuse reports
An entity can contain more entities. For example, a registrant organization may contain separate technical and abuse contacts. Other services return an abuse entity directly in the network’s top-level entities array. A robust client therefore needs to traverse nested entities instead of examining only one level.
Contact information is often represented in vcardArray, the jCard form of vCard. Read properties by name, such as fn, org, email and tel; do not depend on a fixed order. The domain-response guide has a detailed explanation of how to read vcardArray.
Find and use the abuse contact carefully
To locate an abuse contact:
- Walk the network’s
entitiesrecursively. - Find entities whose
rolesarray containsabuse. - Read their jCard email, telephone and organization properties.
- Check the entity’s remarks and links for the operator’s preferred reporting method.
- Preserve the network handle, queried address, timestamps and relevant logs in the report.
An abuse contact is a reporting destination. Its presence does not prove that the entity sent, authorized or knew about the traffic under investigation. Addresses can be reassigned, shared through carrier-grade NAT, used by cloud customers, relayed by proxies or spoofed in protocols that permit source-address spoofing.
Follow the operator’s stated reporting process and disclose only the evidence needed to investigate the incident. Registration data can include personal or operational contact information and should not be republished without a legitimate reason.
Read events as registry events
Each item in events combines an eventAction with an eventDate. Common actions include:
registration: when the object was registered in that registration systemlast changed: when the registration data was last changedlast update of RDAP database: when the service’s RDAP data was refreshed
These timestamps describe the registry record. They do not show when an address first carried traffic, when a route was announced, when a server was deployed or when an incident occurred.
Select events by eventAction, not by their position. Dates use an Internet date-and-time format and can include a UTC Z suffix or an explicit offset.
Do not equate active with routed or reachable
The status array describes the state of the registered object. An active network record does not prove that:
- the prefix is currently visible in BGP;
- the queried address responds to traffic;
- reverse DNS exists;
- a particular organization is currently using every address; or
- the prefix has a valid Route Origin Validation state under RPKI.
Those questions require separate sources: BGP route collectors, Route Origin Authorizations and validation state, DNS queries, network measurements or the operator’s own telemetry.
Interpret every returned status and preserve unknown values. Registered status meanings are maintained in the IANA RDAP JSON Values registry, but their operational significance still depends on the object and registry policy.
Read notices, remarks, links and extensions
These sections qualify the rest of the result:
noticesapply to the service or complete response. They can contain terms of use, filtering statements, inaccuracy-reporting instructions and rate-limit information.remarksapply to the object containing them. They can explain the purpose of the range, contact policy, missing data or truncation.linksconnect the object to canonical, parent, related or alternate resources. Interpret links byrelandtype, not by array position.rdapConformanceidentifies the base specification and extensions used to build the response.
Clients should ignore extension members they do not understand rather than reject the complete response. At the same time, do not assign meaning to an extension field until its identifier and specification are known.
A self link is useful for identifying the object’s RDAP representation, but it remains an assertion in the response. Verify its authority against the responding service before using it as a cache key; RFC 9083 warns against caching an object when the self link’s authority differs from the server that returned it. An alternate link may point to another representation, including a registry’s older WHOIS-oriented API. It should not be assumed to contain the same fields or access policy as the RDAP response.
Expect differences among RIR services
ARIN, RIPE NCC, APNIC, LACNIC and AFRINIC all serve Internet number registration data, but compliant responses do not have to be visually identical.
Differences can include:
- entity nesting and which roles are exposed;
- the wording used in
type; - whether
country,parentHandleor optional events appear; - which links describe hierarchy or related records;
- contact publication and redaction policy;
- registered extensions announced in
rdapConformance; and - service-specific notices and remarks.
Build parsers around the object model, not one RIR’s sample. Tolerate missing optional members, process arrays without assuming order, recurse through entities and preserve unknown extensions for later inspection.
What an IP RDAP response cannot tell you
An IP-network response is registration evidence. On its own, it cannot establish:
- A device’s physical location. The country code is not precise geolocation.
- The current route origin. Registration and BGP routing are separate systems.
- Whether the prefix is routed. An active registration can exist without a visible route.
- The current end user. Providers can dynamically assign, share or reallocate addresses.
- The hostname. Reverse DNS requires a separate PTR query and may still be absent or misleading.
- Who generated specific traffic. Registration identifies associated parties and contacts, not the actor behind an event.
- Legal ownership. RIR records describe registration and allocation relationships; legal rights can require additional evidence and jurisdiction-specific analysis.
For an investigation, correlate RDAP with timestamped network logs, BGP data, RPKI validation, DNS, application records and information supplied by the relevant operator. Keep the retrieval time because registrations and contacts can change.
A practical reading order
Use this sequence when reviewing an IP response:
- Record the queried address, final RDAP URL and retrieval time.
- Confirm
objectClassNameisip network. - Verify the address falls between
startAddressandendAddress. - Read every entry in
cidr0_cidrswhen the extension is present. - Record the network
handle,name,typeandipVersion. - Use
parentHandleand authoritative links to understand allocation context. - Traverse entities recursively and select them by role.
- Read events by action and statuses as registration state.
- Review notices, remarks and
rdapConformancefor qualifications. - Correlate routing, geolocation, DNS and traffic claims with separate sources.
This reduces a large response to four operational questions: Which registered range matched? Where does it sit in the allocation hierarchy? Which contacts are associated with it? What does the record not prove?
Frequently asked questions
Does RDAP show who owns an IP address?
RDAP shows the organizations and contacts associated with a network registration. “Owner” can imply legal title or current operational control, neither of which should be inferred from one field. Describe the returned entity by its role and preserve the registry source.
Why did one IP address return an entire network?
IP addresses are registered in ranges. The RDAP lookup returns the most-specific registered network that completely contains the queried address, so startAddress and endAddress usually cover more than one address.
Is the country field an IP geolocation result?
No. It is registration metadata supplied under the registry’s data model and policy. It does not reliably identify the physical location of a device, user or packet source.
Can RDAP tell me which ASN is currently announcing the address?
Not portably from the base IP-network object. Some services publish extensions or related data, but current route origin is a routing question. Check live BGP data and validate relevant RPKI information separately, then use the guide to reading an ASN RDAP response to interpret the registration for the resulting AS number.
What if cidr0_cidrs is missing?
Use startAddress and endAddress, which express the network boundaries in the base object. If another system requires prefixes, calculate an exact CIDR decomposition rather than assuming the range is one block.
Why is the abuse contact nested inside another entity?
RDAP permits entities to contain entities. An organization associated as the registrant can contain contacts with administrative, technical or abuse roles. Traverse the entity tree and identify each object by roles.
Are IPv4 and IPv6 responses interpreted differently?
The reading process is the same. The address syntax, ipVersion value and v4prefix or v6prefix member differ, but both object types describe explicit start and end boundaries, entities, events, links and other shared RDAP structures.
Read a live IP response
Run an IP address lookup and compare the compact result with the raw RDAP JSON. Start with the returned range, then inspect the entity hierarchy, events, notices and extensions.
The formal IP-network object is defined in RFC 9083, and IP query behavior is defined in RFC 9082. IANA publishes the authoritative IPv4 and IPv6 RDAP bootstrap registries.