RDAP RIR search: Registration Data Access Protocol (RDAP) Regional Internet Registry (RIR) Search
How to search for IP address and autonomous system registrations using the standard RDAP protocol.
Harrison, T. and J. Singh, "Registration Data Access Protocol (RDAP) Regional Internet Registry (RIR) Search", RFC 9910, DOI 10.17487/RFC9910, January 2026, <https://www.rfc-editor.org/info/rfc9910>.
@misc{rfc9910,
series = {Request for Comments},
number = 9910,
howpublished = {RFC 9910},
publisher = {RFC Editor},
doi = {10.17487/RFC9910},
url = {https://www.rfc-editor.org/info/rfc9910},
author = {T. Harrison and J. Singh},
title = {{Registration Data Access Protocol (RDAP) Regional Internet Registry (RIR) Search}},
pagetotal = 26,
year = 2026,
month = jan,
} RFC text
Contents
Internet Engineering Task Force (IETF) T. Harrison
Request for Comments: 9910 APNIC
Category: Standards Track J. Singh
ISSN: 2070-1721 ARIN
January 2026
Registration Data Access Protocol (RDAP) Regional Internet Registry
(RIR) Search
Abstract
The Registration Data Access Protocol (RDAP) is used by Regional
Internet Registries (RIRs) and Domain Name Registries (DNRs) to
provide access to their resource registration information. The core
specifications for RDAP define basic search functionality, but there
are various search options related to IP addresses, IP prefixes, and
Autonomous System Numbers (ASNs), which are provided by RIRs via
their WHOIS services, but for which there is no corresponding RDAP
functionality. This document extends RDAP to support those search
options.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9910.
Copyright Notice
Copyright (c) 2026 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Revised BSD License text as described in Section 4.e of the
Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents
1. Introduction
1.1. Conventions Used in This Document
2. Basic Searches
2.1. Path Segments
2.2. IP Network Search
2.3. Autonomous System Number Search
3. Relation Searches
3.1. Path Segments
3.2. Relation Search
3.2.1. Definitions
3.2.2. Relations
3.2.2.1. Single-Result Searches
3.2.2.2. Multiple-Result Searches
3.3. Status
3.4. Link Relations
4. Responding to Searches
4.1. Single-Result Searches
4.2. Multiple-Result Searches
5. Reverse Search
6. RDAP Conformance
7. Operational Considerations
8. Privacy Considerations
9. Security Considerations
10. IANA Considerations
10.1. RDAP Extensions Registry
10.1.1. rirSearch1
10.1.2. ips
10.1.3. autnums
10.1.4. ipSearchResults
10.1.5. autnumSearchResults
10.2. Link Relations Registry
10.2.1. rdap-up
10.2.2. rdap-down
10.2.3. rdap-top
10.2.4. rdap-bottom
10.2.5. rdap-active
10.3. RDAP Reverse Search Registry
10.3.1. fn
10.3.2. handle
10.3.3. email
10.3.4. role
10.4. RDAP Reverse Search Mapping Registry
10.4.1. fn
10.4.2. handle
10.4.3. email
10.4.4. role
11. References
11.1. Normative References
11.2. Informative References
Acknowledgements
Authors' Addresses
1. Introduction
The Registration Data Access Protocol (RDAP) [RFC7480] is used by
Regional Internet Registries (RIRs) and Domain Name Registries (DNRs)
to provide access to their resource registration information. The
core specifications for RDAP define basic search functionality, but
this is limited to domains, nameservers, and entities. No searches
were defined for IP networks or autonomous system numbers. In an
effort to have RDAP reach feature parity with the existing RIR WHOIS
[RFC3912] services in this respect, this document defines additional
search options for IP networks and autonomous system numbers.
While this document is written in terms of RIRs and DNRs for the sake
of consistency with earlier RDAP documents such as [RFC9082] and
[RFC9083], the functionality described here may be used by any RDAP
server operator that hosts Internet Number Resource (INR) objects.
1.1. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Indentation and whitespace in examples are provided only to
illustrate element relationships and are not required features of
this specification.
"..." in examples is used as shorthand for elements defined outside
of this document, as well as to abbreviate elements that are too
long.
2. Basic Searches
2.1. Path Segments
The new resource type path segments for basic search (similar to the
searches defined in [RFC9082] and [RFC9083]) are:
'ips': Used to identify an IP network search using a pattern to
match one of a set of IP network attributes.
'autnums': Used to identify an autonomous system number search using
a pattern to match one of a set of autonomous system number
attributes.
A search pattern matches a value where it equals the string
representation of the value, or where it is a match for the value in
accordance with the use of the asterisk ('*', ASCII value 0x2A)
character for partial string matching as defined in Section 4.1 of
[RFC9082]. For most searches, '*' may be used to match trailing
characters only, and may appear in a search only once: see the
previously mentioned section for a complete definition of the
relevant behaviour.
Section 4.1 of [RFC9082] describes the use of a trailing domain label
suffix in a partial string search. It is not necessary that servers
support this type of search pattern for the basic searches defined in
this document, since those searches do not relate to domain name
members.
2.2. IP Network Search
Syntax: ips?handle=<handle search pattern>
Syntax: ips?name=<name search pattern>
Searches for IP network (see Section 5.4 of [RFC9083]) information by
handle are specified using the form:
ips?handle=XXXX
XXXX is a search pattern representing an IP network identifier whose
syntax is specific to the registration provider. The following URL
would be used to find information for IP networks with handles
matching the "NET-199*" pattern:
https://example.com/rdap/ips?handle=NET-199*
Searches for IP network (see Section 5.4 of [RFC9083]) information by
name are specified using the form:
ips?name=XXXX
XXXX is a search pattern representing an IP network identifier that
is assigned to the network registration by the registration holder.
The following URL would be used to find information for IP networks
with names matching the "NET-EXAMPLE-*" pattern:
https://example.com/rdap/ips?name=NET-EXAMPLE-*
2.3. Autonomous System Number Search
Syntax: autnums?handle=<handle search pattern>
Syntax: autnums?name=<name search pattern>
Searches for autonomous system number (see Section 5.5 of [RFC9083])
information by handle are specified using the form:
autnums?handle=XXXX
XXXX is a search pattern representing an autonomous system number
identifier whose syntax is specific to the registration provider.
The following URL would be used to find information for autonomous
system numbers with handles matching the "AS1*" pattern:
https://example.com/rdap/autnums?handle=AS1*
Searches for autonomous system number (see Section 5.5 of [RFC9083])
information by name are specified using the form:
autnums?name=XXXX
XXXX is a search pattern representing an autonomous system number
identifier that is assigned to the autonomous system number
registration by the registration holder. The following URL would be
used to find information for autonomous system numbers with names
matching the "ASN-EXAMPLE-*" pattern:
https://example.com/rdap/autnums?name=ASN-EXAMPLE-*
3. Relation Searches
This section defines searches and link relations for finding objects
and sets of objects with respect to their position within a
hierarchy.
3.1. Path Segments
The variables used in the path segments in this section include:
<relation>: a relation type, as defined in Section 3.2.2 of this
document.
<IP address>: an IP address, as defined in Section 3.1.1 of
[RFC9082].
<CIDR prefix>: the first address of a Classless Inter-Domain Routing
(CIDR) block, as defined in Section 3.1.1 of [RFC9082].
<CIDR length>: the prefix length for a CIDR block, as defined in
Section 3.1.1 of [RFC9082].
<domain name>: a fully qualified domain name, as defined in
Section 3.1.3 of [RFC9082].
<autonomous system number or range>: an autonomous system number, as
defined in Section 3.1.2 of [RFC9082], or two such numbers
separated by a single hyphen ('-', ASCII value 0x2D), where the
second number is greater than the first.
<resource type search path segment>: a search path segment
corresponding to an Internet Number Resource (INR) object class
(i.e., an IP network address or range, autonomous system number or
number range, or reverse domain name).
<object value>: a value used to identify an object for the purposes
of a relation search relative to that object. One of <IP
address>, <CIDR prefix> and <CIDR length> pair, <domain name>, or
<autonomous system number or range>, depending on the type of
search that is being performed.
<status>: an object status value, as defined in Section 4.6 of
[RFC9083].
The new resource type path segments for relation search (similar to
the searches defined in [RFC9082] and [RFC9083]) are:
'ips/rirSearch1/<relation>/<IP address>': Used to identify an IP
network search using a relation and an IP address to match a set
of IP networks.
'ips/rirSearch1/<relation>/<CIDR prefix>/<CIDR length>': Used to
identify an IP network search using a relation and an IP address
range to match a set of IP networks.
'autnums/rirSearch1/<relation>/<autonomous system number or
range>': Used to identify an autonomous system number search using a
relation and a single ASN or an ASN range to match a set of ASN
objects.
'domains/rirSearch1/<relation>/<domain name>': Used to identify a
reverse domain search using a relation and a reverse domain name
to match a set of reverse domains.
3.2. Relation Search
Syntax: <resource type search path
segment>/rirSearch1/<relation>/<object value>[?status=<status>]
The relation searches defined in this document rely on the syntax
described above. Each search works in the same way for each object
class.
The rirSearch1 path segment is used in the relation search URLs in
order to provide a single namespace for those searches, and so that
other searches can be defined underneath the top-level resource type
search path segments.
3.2.1. Definitions
An INR object value may have a "parent" object and one or more
"child" objects. The "parent" object is the next-least-specific
object that exists in the relevant registry, while the "child"
objects are the next-most-specific objects that exist in the relevant
registry. For example, let's say there is a registry with the
following IP network objects:
+--------------+
| 192.0.2.0/24 |
+--------------+
/ \
+--------------+ +----------------+
| 192.0.2.0/25 | | 192.0.2.128/25 |
+--------------+ +----------------+
/ / \
+--------------+ +----------------+ +----------------+
| 192.0.2.0/28 | | 192.0.2.128/26 | | 192.0.2.192/26 |
+--------------+ +----------------+ +----------------+
/
+--------------+
| 192.0.2.0/32 |
+--------------+
Figure 1: Example Registry Objects
For this example registry, the INR object value to parent/child
object relationships are:
+==================+================+
| INR object value | Parent object |
+==================+================+
| 192.0.2.0/32 | 192.0.2.0/28 |
+------------------+----------------+
| 192.0.2.0/28 | 192.0.2.0/25 |
+------------------+----------------+
| 192.0.2.64/26 | 192.0.2.0/25 |
+------------------+----------------+
| 192.0.2.128/26 | 192.0.2.128/25 |
+------------------+----------------+
| 192.0.2.192/26 | 192.0.2.128/25 |
+------------------+----------------+
| 192.0.2.0/25 | 192.0.2.0/24 |
+------------------+----------------+
| 192.0.2.128/25 | 192.0.2.0/24 |
+------------------+----------------+
| 192.0.2.0/24 | N/A |
+------------------+----------------+
Table 1: Parent Objects
+==================+================================+
| INR object value | Child objects |
+==================+================================+
| 192.0.2.0/24 | 192.0.2.0/25, 192.0.2.128/25 |
+------------------+--------------------------------+
| 192.0.2.0/25 | 192.0.2.0/28 |
+------------------+--------------------------------+
| 192.0.2.128/25 | 192.0.2.128/26, 192.0.2.192/26 |
+------------------+--------------------------------+
| 192.0.2.64/26 | N/A |
+------------------+--------------------------------+
| 192.0.2.128/26 | N/A |
+------------------+--------------------------------+
| 192.0.2.192/26 | N/A |
+------------------+--------------------------------+
| 192.0.2.0/28 | 192.0.2.0/32 |
+------------------+--------------------------------+
| 192.0.2.0/32 | N/A |
+------------------+--------------------------------+
Table 2: Child Objects
(INR object values do not necessarily correspond to registry objects,
because users can provide arbitrary object values as input to the
searches defined in this document.)
Similarly to the parent/child object relationships, each INR object
value may have a "top" object, being the least-specific covering
object that exists in the registry, and one or more "bottom" objects,
being the most-specific objects that entirely cover the INR object
value when taken together. Given the registry defined above, the top
and bottom object relationships are:
+==================+==============+
| INR object value | Top object |
+==================+==============+
| 192.0.2.0/32 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.0/28 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.64/26 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.128/26 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.192/26 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.0/25 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.128/25 | 192.0.2.0/24 |
+------------------+--------------+
| 192.0.2.0/24 | N/A |
+------------------+--------------+
Table 3: Top Objects
+==================+===========================================+
| INR object value | Bottom objects |
+==================+===========================================+
| 192.0.2.0/24 | 192.0.2.0/25, 192.0.2.0/28, 192.0.2.0/32, |
| | 192.0.2.128/26, 192.0.2.192/26 |
+------------------+-------------------------------------------+
| 192.0.2.0/25 | 192.0.2.0/25, 192.0.2.0/28, 192.0.2.0/32 |
+------------------+-------------------------------------------+
| 192.0.2.128/25 | 192.0.2.128/26, 192.0.2.192/26 |
+------------------+-------------------------------------------+
| 192.0.2.64/26 | N/A |
+------------------+-------------------------------------------+
| 192.0.2.128/26 | N/A |
+------------------+-------------------------------------------+
| 192.0.2.192/26 | N/A |
+------------------+-------------------------------------------+
| 192.0.2.0/28 | 192.0.2.0/28, 192.0.2.0/32 |
+------------------+-------------------------------------------+
| 192.0.2.0/31 | 192.0.2.0/28, 192.0.2.0/32 |
+------------------+-------------------------------------------+
| 192.0.2.0/32 | N/A |
+------------------+-------------------------------------------+
Table 4: Bottom Objects
If there are no more-specific objects for a given INR object value,
then the set of bottom objects for that INR object value will be
empty. 192.0.2.0/32 is an example of such an INR object value.
It is not necessarily the case that the bottom objects for a given
INR object value will be disjoint. For example, 192.0.2.0/28's
bottom objects are 192.0.2.0/28 and 192.0.2.0/32. 192.0.2.0/32 is
included because it is one of the most-specific objects (i.e., an
object at the bottom of the object hierarchy) for 192.0.2.0/28, while
192.0.2.0/28 itself is included because it is the most-specific
object for the other addresses within the range (i.e., those aside
from 192.0.2.0/32).
The bottom objects for a given INR object value may include an object
that is less specific than that INR object value. For example,
192.0.2.0/31 is an INR object value that has a more-specific object,
being 192.0.2.0/32, so the set of bottom objects must include at
least that object. The most-specific object that covers the residual
(i.e., 192.0.2.1/32) is 192.0.2.0/28, so it is included in the
results as well.
3.2.2. Relations
3.2.2.1. Single-Result Searches
3.2.2.1.1. "rdap-up"
If the server receives a search containing the relation value "rdap-
up", it will return the parent object for the specified INR object
value as though that object had been requested directly. If no such
object exists, it will respond with an HTTP 404 (Not Found) [RFC9110]
status code.
3.2.2.1.2. "rdap-top"
If the server receives a search containing the relation value "rdap-
top", it will return the top object for the specified INR object
value as though that object had been requested directly. If no such
object exists, it will respond with an HTTP 404 (Not Found) [RFC9110]
status code.
3.2.2.2. Multiple-Result Searches
3.2.2.2.1. "rdap-down"
If the server receives a search containing the relation value "rdap-
down", it will return the child objects for the specified INR object
value. If no such objects exist, it will return an empty search
response. Per the definitions section, this includes only immediate
child objects.
3.2.2.2.2. "rdap-bottom"
If the server receives a search containing the relation value "rdap-
bottom", it will return the bottom objects for the specified INR
object value. If no such objects exist, it will return an empty
search response.
3.3. Status
If the "status" argument is provided, then response processing will
proceed as though all objects without the specified status had first
been removed from the database. For example, if the registry objects
from Section 3.2.1 had the following statuses:
+================+==========+
| Object | Status |
+================+==========+
| 192.0.2.0/25 | active |
+----------------+----------+
| 192.0.2.128/25 | inactive |
+----------------+----------+
| 192.0.2.128/26 | active |
+----------------+----------+
| 192.0.2.192/26 | active |
+----------------+----------+
Table 5: Statuses
then a server receiving a "rdap-down" search request with the INR
object value 192.0.2.0/24 and a "status" argument of "active" would
return the objects 192.0.2.0/25, 192.0.2.128/26, and 192.0.2.192/26.
Status filtering is useful, for example, where the client is trying
to find the delegation from an RIR to an RIR account holder: by using
the "rdap-top" relation with a "status" of "active", the delegation
from IANA to the RIR will be ignored, and the client will receive the
delegation from the RIR to the account holder in the response
instead.
By default, any valid status value may be used for status filtering.
Server operators MAY opt not to support "status" filtering for the
"rdap-down" and "rdap-bottom" link relations, in which case the
server responds with an HTTP 501 (Not Implemented) [RFC9110] response
code if it receives such a request. Server operators MAY also opt
not to support "status" filtering for values other than "active" for
the "rdap-up" and "rdap-top" link relations, in which case the server
responds with an HTTP 501 (Not Implemented) [RFC9110] response code
if it receives such a request.
While any valid status value may be used for status filtering, a
given RDAP server may make use of only a small number of those status
values for INR objects. For example, a status value like "client
hold" would typically only be used by a DNR for a forward domain name
object.
3.4. Link Relations
Each of the relations defined in Section 3.2.2 has a corresponding
link relation that can be used for a link object contained within
another RDAP object. When constructing these link objects, the
server MUST use the corresponding search URL for the link target, or
a URL that yields the same response as for the corresponding search
as at the time of the request. The following is an elided example of
an IPv4 response that makes use of those link relations:
{
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.127",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-up",
"href": ".../rdap/ips/rirSearch1/rdap-up/192.0.2.0/25",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-down",
"href": ".../rdap/ips/rirSearch1/rdap-down/192.0.2.0/25",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-top",
"href": ".../rdap/ips/rirSearch1/rdap-top/192.0.2.0/25",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-bottom",
"href": ".../rdap/ips/rirSearch1/rdap-bottom/192.0.2.0/25",
"type": "application/rdap+json"
}
]
}
Figure 2: Example Links in an IPv4 Response
The following is an elided example of an IPv6 response that makes use
of the link relations:
{
"startAddress": "2001:db8:a::",
"endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-up",
"href": ".../rdap/ips/rirSearch1/rdap-up/2001:db8:a::/48",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-down",
"href": ".../rdap/ips/rirSearch1/rdap-down/2001:db8:a::/48",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-top",
"href": ".../rdap/ips/rirSearch1/rdap-top/2001:db8:a::/48",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-bottom",
"href": ".../rdap/ips/rirSearch1/rdap-bottom/2001:db8:a::/48",
"type": "application/rdap+json"
}
]
}
Figure 3: Example Links in an IPv6 Response
One additional link relation, "rdap-active", is defined for denoting
a search with a "status" of "active". No other status link relations
are defined because the only known use cases for status filtering
involve the "rdap-up" and "rdap-top" relations and the "active"
status. The following is an elided example of an IPv4 response that
makes use of those link relations:
{
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.127",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-up rdap-active",
"href":
".../rdap/ips/rirSearch1/rdap-up/192.0.2.0/25?status=active",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-top rdap-active",
"href":
".../rdap/ips/rirSearch1/rdap-top/192.0.2.0/25?status=active",
"type": "application/rdap+json"
}
]
}
Figure 4: Example Status Links in an IPv4 Response
The following is an elided example of an IPv6 response that makes use
of the link relations:
{
"startAddress": "2001:db8:a::",
"endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-up rdap-active",
"href":
".../rdap/ips/rirSearch1/rdap-up/2001:db8:a::/48?status=active",
"type": "application/rdap+json"
},
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-top rdap-active",
"href":
".../rdap/ips/rirSearch1/rdap-top/2001:db8:a::/48?status=active",
"type": "application/rdap+json"
}
]
}
Figure 5: Example Status Links in an IPv6 Response
"rdap-active" is used only as a link relation in a link object. It
cannot be used as a value for <relation> in the relation search URL
defined in Section 3.2. Section 3.3 details status filtering for
relation search URLs.
Since the "rdap-top" and "rdap-up" link relations resolve either to a
single object or to an HTTP 404 (Not Found) [RFC9110] response, it is
possible for a server to use a lookup URL (see Section 3.1 of
[RFC9082]) in the "href" attribute in the link object. The following
is an elided example of an IPv4 response that uses this approach:
{
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.127",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/192.0.2.0/25",
"rel": "rdap-up",
"href": "https://example.com/rdap/ip/192.0.2.0/24",
"type": "application/rdap+json"
}
]
}
Figure 6: Example Single-Result Links in an IPv4 Response
The following is an elided example of an IPv6 response that makes use
of the approach:
{
"startAddress": "2001:db8:a::",
"endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff",
...
"links": [
...,
{
"value": "https://example.com/rdap/ip/2001:db8:a::/48",
"rel": "rdap-up",
"href": "https://example.com/rdap/ip/2001:db8::/32",
"type": "application/rdap+json"
}
]
}
Figure 7: Example Single-Result Links in an IPv6 Response
Use of these link relations in responses is OPTIONAL. The absence in
a response of a link for a specific relation does not necessarily
mean that the corresponding search will return no results.
4. Responding to Searches
4.1. Single-Result Searches
The "rdap-up" and "rdap-top" relations are single-result searches.
When processing these searches, if there is a result for the search,
the server returns that object as though it were requested directly
via a lookup URL (see Section 3.1 of [RFC9082]). If there is no
result for the search, the server returns an HTTP 404 (Not Found)
[RFC9110] response code.
4.2. Multiple-Result Searches
The "rdap-down" and "rdap-bottom" relations are multiple-result
searches. As with [RFC9083], responses for these searches take the
form of an array of object instances, where each instance is an
appropriate object class for the search (i.e., a search beginning
with /ips yields an array of IP network object instances, and a
search beginning with /autnums yields an array of autonomous system
number object instances). The IP network object class is defined in
Section 5.4 of [RFC9083], and the autonomous system number object
class is defined in Section 5.5 of [RFC9083]. The object instance
arrays are contained within the response object.
The names of the arrays are as follows:
* for /ips searches, the array is "ipSearchResults"; and
* for /autnums searches, the array is "autnumSearchResults".
The following is an elided example of a response for an IPv4 network
search:
{
"rdapConformance": [ "rdap_level_0", "rirSearch1",
"ips", "ipSearchResults", ... ],
...
"ipSearchResults": [
{
"objectClassName": "ip network",
"handle": "XXXX-RIR",
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.127",
...
},
{
"objectClassName": "ip network",
"handle": "YYYY-RIR",
"startAddress": "192.0.2.0",
"endAddress": "192.0.2.255",
...
}
]
}
Figure 8: IPv4 Network Search Response
The following is an elided example of a response for an IPv6 network
search:
{
"rdapConformance": [ "rdap_level_0", "rirSearch1",
"ips", "ipSearchResults", ... ],
...
"ipSearchResults": [
{
"objectClassName": "ip network",
"handle": "XXXX-RIR",
"startAddress": "2001:db8:a::",
"endAddress": "2001:db8:a:ffff:ffff:ffff:ffff:ffff",
...
},
{
"objectClassName": "ip network",
"handle": "YYYY-RIR",
"startAddress": "2001:db8::",
"endAddress": "2001:db8:ffff:ffff:ffff:ffff:ffff:ffff",
...
}
]
}
Figure 9: IPv6 Network Search Response
The following is an elided example of a response to an autonomous
system number search:
{
"rdapConformance": [ "rdap_level_0", "rirSearch1",
"autnums", "autnumSearchResults", ... ],
...
"autnumSearchResults": [
{
"objectClassName": "autnum",
"handle": "XXXX-RIR",
"startAutnum": 64496,
"endAutnum": 64496,
...
},
{
"objectClassName": "autnum",
"handle": "YYYY-RIR",
"startAutnum": "64497",
"endAutnum": "64497",
...
}
]
}
Figure 10: ASN Search Response
Responses for relation searches for reverse domain objects have the
same form as for a standard domain search response, per [RFC9083].
If the search can be processed by the server, but there are no
results for the search, then the server returns an HTTP 404 (Not
Found) [RFC9110] response code, with the body of the response
containing an empty results array.
5. Reverse Search
RDAP reverse search is defined by [RFC9536]. That document limits
reverse search to domains, nameservers, and entities. This document
extends reverse search to cover IP networks and autonomous system
numbers as well.
If a server receives a reverse search query with a searchable
resource type (per the definition of that term in [RFC9536]) of
"ips", then the reverse search will be performed on the IP network
objects from its data store. Similarly, if a server receives a
reverse search query with a searchable resource type of "autnums",
then the reverse search will be performed on the autonomous system
number objects from its data store.
Additionally, Section 10 notes that new registrations for IP network
and autonomous system number searches have been made in the "RDAP
Reverse Search" and "RDAP Reverse Search Mapping" IANA registries.
6. RDAP Conformance
A server that supports the functionality specified in this document
MUST include additional string literals in the rdapConformance array
of its responses, in accordance with the following:
* any response that includes an IP network basic search link, an IP
network relation search link, or an IP network reverse search link
includes the "rirSearch1" and "ips" literals;
* any response for an IP network basic search request, an IP network
relation search request, or an IP network reverse search request
includes the "rirSearch1", "ips", and "ipSearchResults" literals;
* any response that includes an ASN basic search link, an ASN
relation search link, or an ASN reverse search link includes the
"rirSearch1" and "autnums" literals;
* any response for an ASN basic search request, an ASN relation
search request, or an ASN reverse search request includes the
"rirSearch1", "autnums", and "autnumSearchResults" literals;
* any response that includes a domain relation search link includes
the "rirSearch1" literal;
* any response for a domain relation search request includes the
"rirSearch1" literal; and
* a response to a "/help" request includes the "rirSearch1", "ips",
"ipSearchResults", "autnums", and "autnumSearchResults" literals.
Although responses will generally not include all of the
rdapConformance string literals defined in this document, that is not
meant to imply that a server can support only a portion of the
functionality defined in this document.
The "ips", "autnums", "ipSearchResults", and "autnumSearchResults"
extension identifiers are included here due to the requirements and
recommendations set out in [RFC7480], [RFC9082], and [RFC9083].
These requirements and recommendations are such that an RDAP
extension identifier be used as a prefix in new path segments and
JSON members introduced by the extension, and those strings are used
as such as part of the basic searches defined in this document.
Furthermore, using these strings as path segments helps to increase
consistency among the basic searches for the core RDAP object
classes.
As with the other core object classes (entity, domain, and
nameserver), other documents may define additional reverse searches
with IP networks and ASNs as the searchable resource type by
registering those in the IANA RDAP reverse search registries.
Because a given extension identifier must correspond to a single
extension, though, any document making use of IP networks or ASNs as
the searchable resource type must also implement the functionality
described in this document.
The "1" in "rirSearch1" denotes that this is version 1 of the RIR
search extension. New versions of the RIR search extension will use
different extension identifiers. A version suffix is not used for
the remaining identifiers defined by this document, partly because
such a suffix would reduce consistency with the corresponding
functionality for the other core object classes, and partly because
it is very unlikely that the functionality associated with those
identifiers will change.
7. Operational Considerations
When using a link object for a single-result search, a server may
replace a search URL with a lookup URL, because the behaviour of the
lookup URL is the same as that of the search URL at the time the
response is generated. One difference between these approaches is
that when using the lookup URL, the server is effectively performing
the search on behalf of the client as at the time of response
generation. If there is no change to the relevant database state
between the time when the original response is generated and the time
when the client resolves the link relation target, then the search
URL and the lookup URL will lead to the same result. However, if
there is a change to the relevant database state, then the lookup URL
may lead to a different result from that of the search URL. Server
operators should consider which type of URL will be more effective
for their clients when implementing this specification.
Where this document includes HTTP reason phrases, that is purely for
the benefit of the reader and is not an indication that those phrases
need to be used as-is in responses.
8. Privacy Considerations
The search functionality defined in this document may affect the
privacy of entities in the registry (and elsewhere) in various ways:
see [RFC6973] for a general treatment of privacy in protocol
specifications, and [RFC7481] for specific discussion about privacy
threats with respect to the registration data provided by RDAP.
Server operators should be aware of the tradeoffs that result from
implementation of this functionality.
Many jurisdictions have laws or regulations that restrict the use of
"Personal Data", per the definition in [RFC6973]. Given that, server
operators should ascertain whether the regulatory environment in
which they operate permits implementation of the functionality
defined in this document.
9. Security Considerations
[RFC7481] describes security requirements and considerations for RDAP
generally. Additionally, guidance as to the use of TLS has changed
since that document was published: see [RFC8446] and [BCP195] for
further detail.
[RFC9082] includes security considerations relating to object
retrieval in RDAP. Those considerations are relevant here as well.
10. IANA Considerations
10.1. RDAP Extensions Registry
IANA has registered the following values in the "RDAP Extensions"
registry <https://www.iana.org/assignments/rdap-extensions>.
10.1.1. rirSearch1
Extension Identifier: rirSearch1
Registry operator: Any
Specification: RFC 9910
Contact: IETF <iesg@ietf.org>
Intended Usage: This extension identifier is used for INR-specific
search operations.
10.1.2. ips
Extension Identifier: ips
Registry operator: Any
Specification: RFC 9910
Contact: IETF <iesg@ietf.org>
Intended Usage: This extension identifier is used for INR-specific
search operations.
10.1.3. autnums
Extension Identifier: autnums
Registry operator: Any
Specification: RFC 9910
Contact: IETF <iesg@ietf.org>
Intended Usage: This extension identifier is used for INR-specific
search operations.
10.1.4. ipSearchResults
Extension Identifier: ipSearchResults
Registry operator: Any
Specification: RFC 9910
Contact: IETF <iesg@ietf.org>
Intended Usage: This extension identifier is used for INR-specific
search operations.
10.1.5. autnumSearchResults
Extension Identifier: autnumSearchResults
Registry operator: Any
Specification: RFC 9910
Contact: IETF <iesg@ietf.org>
Intended Usage: This extension identifier is used for INR-specific
search operations.
10.2. Link Relations Registry
IANA has registered the following values in the "Link Relations"
registry <https://www.iana.org/assignments/link-relations>.
10.2.1. rdap-up
Relation Name: rdap-up
Description: Refers to an RDAP parent object in a hierarchy of
objects.
Reference: RFC 9910
10.2.2. rdap-down
Relation Name: rdap-down
Description: Refers to a set of RDAP child objects in a hierarchy of
objects.
Reference: RFC 9910
10.2.3. rdap-top
Relation Name: rdap-top
Description: Refers to the topmost RDAP parent object in a hierarchy
of objects.
Reference: RFC 9910
10.2.4. rdap-bottom
Relation Name: rdap-bottom
Description: Refers to the set of child RDAP objects that do not
themselves have child objects, in a hierarchy of objects.
Reference: RFC 9910
10.2.5. rdap-active
Relation Name: rdap-active
Description: The target is for an RDAP RIR search that filters for
the status "active".
Reference: RFC 9910
10.3. RDAP Reverse Search Registry
IANA has registered the following entries in the "RDAP Reverse
Search" registry <https://www.iana.org/assignments/rdap-reverse-
search/>.
10.3.1. fn
Property: fn
Description: The server supports the IP/autnum search based on the
full name (a.k.a. formatted name) of an associated entity.
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.3.2. handle
Property: handle
Description: The server supports the IP/autnum search based on the
handle of an associated entity.
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.3.3. email
Property: email
Description: The server supports the IP/autnum search based on the
email address of an associated entity.
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.3.4. role
Property: role
Description: The server supports the IP/autnum search based on the
role of an associated entity.
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.4. RDAP Reverse Search Mapping Registry
IANA has registered the following entries in the "RDAP Reverse Search
Mapping" registry <https://www.iana.org/assignments/rdap-reverse-
search-mapping>.
10.4.1. fn
Property: fn
Property Path: $.entities[*].vcardArray[1][?(@[0]=='fn')][3]
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.4.2. handle
Property: handle
Property Path: $.entities[*].handle
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.4.3. email
Property: email
Property Path: $.entities[*].vcardArray[1][?(@[0]=='email')][3]
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
10.4.4. role
Property: role
Property Path: $.entities[*].roles
Searchable Resource Type: ips, autnums
Related Resource Type: entity
Registrant: IETF
Contact Information: iesg@ietf.org
Reference: RFC 9910
11. References
11.1. Normative References
[BCP195] Best Current Practice 195,
<https://www.rfc-editor.org/info/bcp195>.
At the time of writing, this BCP comprises the following:
Moriarty, K. and S. Farrell, "Deprecating TLS 1.0 and TLS
1.1", BCP 195, RFC 8996, DOI 10.17487/RFC8996, March 2021,
<https://www.rfc-editor.org/info/rfc8996>.
Sheffer, Y., Saint-Andre, P., and T. Fossati,
"Recommendations for Secure Use of Transport Layer
Security (TLS) and Datagram Transport Layer Security
(DTLS)", BCP 195, RFC 9325, DOI 10.17487/RFC9325, November
2022, <https://www.rfc-editor.org/info/rfc9325>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC7481] Hollenbeck, S. and N. Kong, "Security Services for the
Registration Data Access Protocol (RDAP)", STD 95,
RFC 7481, DOI 10.17487/RFC7481, March 2015,
<https://www.rfc-editor.org/info/rfc7481>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access
Protocol (RDAP) Query Format", STD 95, RFC 9082,
DOI 10.17487/RFC9082, June 2021,
<https://www.rfc-editor.org/info/rfc9082>.
[RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the
Registration Data Access Protocol (RDAP)", STD 95,
RFC 9083, DOI 10.17487/RFC9083, June 2021,
<https://www.rfc-editor.org/info/rfc9083>.
[RFC9110] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/info/rfc9110>.
[RFC9536] Loffredo, M. and M. Martinelli, "Registration Data Access
Protocol (RDAP) Reverse Search", RFC 9536,
DOI 10.17487/RFC9536, April 2024,
<https://www.rfc-editor.org/info/rfc9536>.
11.2. Informative References
[RFC3912] Daigle, L., "WHOIS Protocol Specification", RFC 3912,
DOI 10.17487/RFC3912, September 2004,
<https://www.rfc-editor.org/info/rfc3912>.
[RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J.,
Morris, J., Hansen, M., and R. Smith, "Privacy
Considerations for Internet Protocols", RFC 6973,
DOI 10.17487/RFC6973, July 2013,
<https://www.rfc-editor.org/info/rfc6973>.
[RFC7480] Newton, A., Ellacott, B., and N. Kong, "HTTP Usage in the
Registration Data Access Protocol (RDAP)", STD 95,
RFC 7480, DOI 10.17487/RFC7480, March 2015,
<https://www.rfc-editor.org/info/rfc7480>.
Acknowledgements
The authors wish to thank Mario Loffredo, Andy Newton, Antoin
Verschuren, James Gould, Scott Hollenbeck, Orie Steele, Russ Housley,
John Levine, Stewart Bryant, Mark Nottingham, Mohamed Boucadair, Deb
Cooley, Éric Vyncke, and Roman Danyliw for document review and
associated comments.
Authors' Addresses
Tom Harrison
Asia Pacific Network Information Centre
6 Cordelia St
South Brisbane QLD 4101
Australia
Email: tomh@apnic.net
Jasdip Singh
American Registry for Internet Numbers
PO Box 232290
Centreville, VA 20120
United States of America
Email: jasdips@arin.net
AI ELI5
On this page
§1The Problem: RDAP's Missing Search Features
The Registration Data Access Protocol (RDAP) [RFC7480, RFC9082, RFC9083] is the modern successor to WHOIS, used by Regional Internet Registries (RIRs) and Domain Name Registries (DNRs) to provide access to registration information. However, the core RDAP specifications only defined search functionality for domains, nameservers, and entities. No searches existed for IP networks or Autonomous System Numbers (ASNs).
Meanwhile, WHOIS services offered these search capabilities, creating a gap: clients wishing to search for IP addresses or ASNs had to continue using the legacy WHOIS protocol rather than adopting RDAP. This RFC fills that gap by extending RDAP with comprehensive search options for Internet Number Resources (INRs), including IP networks and ASNs.
RDAP is the new way to look up internet registrations, but it was missing the ability to search for IP addresses. This adds that ability, making RDAP feature-complete for what RIRs offer.
§2Three Types of Searches
The RFC defines three search mechanisms. Basic searches let clients find IP networks or ASNs by handle (an identifier specific to each registry) or by name (a label assigned by the resource holder). For example, a search like ips?handle=NET-199* finds all IP networks whose handles match that pattern.
Relation searches enable finding objects based on their position in a hierarchy. Every IP network has a parent (the next-larger covering block) and zero or more children (the next-smaller blocks contained within it). Clients can ask for the parent, the children, the topmost covering block, or the most-specific blocks that together cover a given address range.
Reverse searches allow finding IP networks and ASNs by properties of associated entities, such as an organization name, email address, or handle. These searches reuse the reverse search framework from RFC 9536.
Three ways to search: by ID, by position in the family tree, or by who owns it. For example, "show me all blocks under this one" or "find who runs this IP range."
§3Basic Searches: Handles and Names
Basic searches use two simple query patterns. For IP networks, clients can query ips?handle=XXXX to search by handle, or ips?name=XXXX to search by name. The search value acts as a pattern that matches values, including partial matches. Servers search a set of IP network attributes and return matching results.
Autonomous system number searches work identically: autnums?handle=XXXX or autnums?name=XXXX. The RFC explicitly references RFC 9082's matching semantics to ensure consistency with existing RDAP searches for domains and nameservers.
For example, to find IP networks with handles starting with NET-199, a client uses pattern matching on the handle field to retrieve all matching network objects.
You ask the server "find IP blocks where the name starts with X" or "find ASNs with handle matching Y". It's like typing in a search box and using wildcards.
§4Relation Searches: Parent, Child, Top, and Bottom
Relation searches leverage the hierarchical structure of IP address blocks. Given a specific IP address or CIDR block, the RFC defines four relations:
rdap-up returns the parent (next-larger covering block). rdap-down returns the immediate children (next-smaller blocks directly contained). rdap-top returns the topmost ancestor block. rdap-bottom returns all the most-specific blocks that collectively cover the given range.
For example, if a registry contains blocks 192.0.2.0/24, 192.0.2.0/25, and 192.0.2.128/25, a query for rdap-down on 192.0.2.0/24 returns those two /25 blocks. These searches work identically for ASNs and reverse domain names, enabling clients to navigate the resource hierarchy efficiently.
Clients can also filter results by status (e.g., "only active blocks") using a query parameter, though servers may optionally decline to support status filtering for some relations.
You can ask "what block contains this one" (parent), "what blocks are inside this" (children), "what's the root block" (top), or "what's the finest split that covers this range" (bottom). It's like zooming in and out on a map.
- 192.0.2.0/24
- 192.0.2.0/25
- 192.0.2.0/28
- 192.0.2.0/32
- 192.0.2.0/28
- 192.0.2.128/25
- 192.0.2.128/26
- 192.0.2.192/26
- 192.0.2.0/25
§5Response Format and Search Results
Single-result searches (rdap-up, rdap-top) return the matched object directly, formatted as if it had been requested via a lookup URL. If no match exists, the server returns HTTP 404 (Not Found). Multiple-result searches (rdap-down, rdap-bottom) return an array of results within the response object. For IP network searches, results are contained in an ipSearchResults array; for ASN searches, an autnumSearchResults array.
Each result is a complete RDAP object instance for that resource type, including all standard properties like handle, start/end address, status, and links to related resources. Servers MUST include specific conformance identifiers in the response's rdapConformance array to indicate which RIR search capabilities they support (e.g., "rirSearch1", "ips", "ipSearchResults").
When a search can be processed but yields no results, the server returns HTTP 404 with an empty results array, allowing clients to distinguish between "no results" and "search capability not supported".
Results come back as proper RDAP objects with all the details. Single searches give you one thing or a 404. Multiple searches give you an array. The response says which features the server supports.
§6Reverse Search and Additional Features
The RFC extends RFC 9536's reverse search framework to IP networks and ASNs. Clients can search for IP or ASN resources by entity properties registered with those resources: formatted name (fn), entity handle, email address, or role. This is particularly useful for finding all resources managed by a specific organization or contact.
Additionally, IANA registrations define new link relations (rdap-up, rdap-down, rdap-top, rdap-bottom, rdap-active) that can appear in RDAP object links, allowing objects to include navigation hints to related resources. Servers may optionally use lookup URLs in place of search URLs for single-result searches, which can be more efficient but may return stale data if the database changes between response generation and client resolution.
You can search by who manages an IP block. Responses can include clickable links to parent blocks, child blocks, and other related records, making navigation easier.
§7Security, Privacy, and Conformance
The RFC defers to RFC 7481 for general RDAP security considerations and RFC 7480 for HTTPS requirements, which have evolved since those documents' publication: current best practices are in RFC 8446 (TLS 1.3) and BCP 195. Servers MUST implement the search functionality within an appropriate security and privacy framework set by their jurisdiction.
RFC 6973 addresses privacy generally; RFC 7481 addresses RDAP-specific privacy threats. Server operators should be aware that the ability to search for resources by entity properties or status may expose personal data and should comply with local regulations regarding Personal Data. Some jurisdictions may restrict the functionality's use entirely.
The conformance section ensures that clients can detect which capabilities a server supports through the standard rdapConformance array, preventing confusion about whether a server simply chose not to implement a feature or is reporting an error.
Be careful about privacy: searching by person's name or email could leak personal information. Servers must say which features they support so clients know what works.