Registry / http-networking / whoisit

whoisit

JSON →
library4.0.4pypypi✓ verified 85d ago

A Python client for RDAP WHOIS-like services for internet resources (domains, IPs, ASNs). The current version is 4.0.3, requires Python >=3.10. Releases occur irregularly, with several bug fixes and feature updates per year.

pip install whoisit
INSTALL
IMPORT
SIG · WHOISIT
W
whoisit
http-networkingpythonv4.0.4
Install
2.8s avg
Import
945ms
Disk
24MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v4.0.4 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.984s · 25.2MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 2.8s · import 0.906s · 26MB
24MB installed
● package 24MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

whoisit
import whoisit
RDAPError
from whoisit import errors
import whoisit.errors
errors is a module, not an attribute; must import explicitly

Simple example: bootstrap the RDAP server list and query a domain, IP, and ASN.

import whoisit # Bootstrap the RDAP servers (required once, e.g., at app start) whoisit.bootstrap() # Query a domain result = whoisit.domain('example.com') print(result.get('handle')) print(result.get('name')) # Query an IP ip_result = whoisit.ip('8.8.8.8') print(ip_result.get('handle')) # Query an ASN asn_result = whoisit.asn('15169') print(asn_result.get('handle'))
whoisit --version
Debug
Known issues
breakingIn v4.0.0, the library dropped Python 3.9 support. Requires Python >=3.10.
fix
Upgrade Python to 3.10+ or pin to whoisit<4.0.0 if stuck on 3.9.
affects: >=4.0.0
breakingThe function `whoisit.bootstrap()` must be called before any queries. Otherwise, queries will fail with a `NotBootstrappedError`.
fix
Call `whoisit.bootstrap()` at the start of your application, optionally with a bootstrap URL argument.
affects: >=3.0.0
gotchaThe `whoisit.domain()` function will follow RDAP redirects automatically, but it may take several seconds for some TLDs (e.g., .us). The default timeout may cause delays.
fix
Set a custom timeout via `whoisit.set_default_timeout(seconds)` before queries.
affects: all
deprecatedIn v3.x, the `whoisit.errors` module was restructured. Direct attribute access like `whoisit.errors.RDAPError` may break; import explicitly instead.
fix
Use `from whoisit import errors` and then `errors.RDAPError`.
affects: >=3.0.0
Errors
Common errors & fixes
AttributeError: module 'whoisit' has no attribute 'domain'
The namespace changed in v3.x; you must call `whoisit.bootstrap()` first or import incorrectly.
fix
Call `whoisit.bootstrap()` before using `whoisit.domain()`. The functions are attached after bootstrap.
whoisit.errors.NotBootstrappedError: Bootstrap not completed.
You forgot to call `whoisit.bootstrap()` before querying.
fix
Add `whoisit.bootstrap()` once at the start of your program.
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
The RDAP server returned an HTML error page, often due to a bad URL or network issue.
fix
Ensure the resource name is valid and you have internet connectivity. You can also set a user-agent via `whoisit.set_user_agent('...')`.
TypeError: Object of type 'set' is not JSON serializable
Some parsed data (e.g., email addresses) are returned as sets instead of lists, causing serialization errors.
fix
Convert sets to lists manually: `result['emails'] = list(result.get('emails', []))` before JSON serialization.
Upgrade
Version history
4.0.4latest on PyPI · released Jun 6, 2026
Audit
Dependencies
requestsrequiredHTTP requests to RDAP servers
jmespathrequiredQuerying JSON responses from RDAP
Agent activity
52 hits · last 30 days
node
44
OpenAI (training)
1
Resources
whoisit — pip install whoisit · libregistry