Skip to main content

Python SDK for the RDAP API — look up domains, IPs, ASNs, nameservers, and entities.

Project description

RDAP API Python SDK

PyPI version Python versions License: MIT

Official Python SDK for the RDAP API — look up domains, IP addresses, ASNs, nameservers, and entities via the RDAP protocol.

Installation

pip install rdapapi

Quick start

from rdapapi import RdapApi

api = RdapApi("your-api-key")

# Domain lookup
domain = api.domain("google.com")
print(domain.registrar.name)     # "MarkMonitor Inc."
print(domain.dates.expires)      # "2028-09-14T04:00:00Z"
print(domain.nameservers)        # ["ns1.google.com", ...]

# IP address lookup
ip = api.ip("8.8.8.8")
print(ip.name)                   # "GOGL"
print(ip.cidr)                   # ["8.8.8.0/24"]

# ASN lookup
asn = api.asn(15169)
print(asn.name)                  # "GOOGLE"

# Nameserver lookup
ns = api.nameserver("ns1.google.com")
print(ns.ip_addresses.v4)       # ["216.239.32.10"]

# Entity lookup
entity = api.entity("GOGL")
print(entity.name)               # "Google LLC"
print(entity.autnums[0].handle) # "AS15169"

api.close()

Registrar follow-through

For thin registries like .com and .net, the registry only returns basic registrar info. Use follow=True to follow the registrar's RDAP link and get richer contact data:

domain = api.domain("google.com", follow=True)
print(domain.entities.registrant.organization)  # "Google LLC"
print(domain.entities.registrant.email)         # "registrant@google.com"

Error handling

from rdapapi import RdapApi, NotFoundError, RateLimitError, AuthenticationError

api = RdapApi("your-api-key")

try:
    domain = api.domain("nonexistent.example")
except NotFoundError:
    print("Domain not found")
except RateLimitError as e:
    print(f"Rate limited. Retry after {e.retry_after}s")
except AuthenticationError:
    print("Invalid API key")

All exceptions inherit from RdapApiError and include status_code, error, and message attributes.

Exception HTTP Status When
ValidationError 400 Invalid input format
AuthenticationError 401 Missing or invalid API key
SubscriptionRequiredError 403 No active subscription
NotFoundError 404 No RDAP data found
RateLimitError 429 Rate limit or quota exceeded
UpstreamError 502 Upstream RDAP server error

Async support

import asyncio
from rdapapi import AsyncRdapApi

async def main():
    async with AsyncRdapApi("your-api-key") as api:
        domain, ip, asn = await asyncio.gather(
            api.domain("google.com"),
            api.ip("8.8.8.8"),
            api.asn(15169),
        )
        print(f"{domain.domain}: {domain.registrar.name}")

asyncio.run(main())

Serialization

All response objects are Pydantic models with full type hints:

domain = api.domain("google.com")

# Convert to dict
data = domain.model_dump()

# Convert to JSON string
json_str = domain.model_dump_json()

Configuration

api = RdapApi(
    "your-api-key",
    base_url="https://rdapapi.io/api/v1",  # default
    timeout=30,                              # seconds, default
)

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rdapapi-0.1.0.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rdapapi-0.1.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file rdapapi-0.1.0.tar.gz.

File metadata

  • Download URL: rdapapi-0.1.0.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rdapapi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9238666d34a7a45199c67c8e103a1c832e18f4fff305533c8507047245ccc47c
MD5 346369cdb2c31a0229c8282b2254ceb4
BLAKE2b-256 5eb2912d1894fcf7bed3f1be234ca8f9abbef6e809793253830470da3a7a956b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdapapi-0.1.0.tar.gz:

Publisher: publish.yml on rdapapi/python-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rdapapi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: rdapapi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rdapapi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78bebbd86f87d746000678df32bda1d04d4432c3f765d0f5e3a0aa781e53e880
MD5 ff05e6667b2e68c4d81f13a9f842087c
BLAKE2b-256 5d824706688c8f0525c100eea064cc3e4fc0ef44e6dc79644a55dba8c08574bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rdapapi-0.1.0-py3-none-any.whl:

Publisher: publish.yml on rdapapi/python-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page