4 releases (2 breaking)
Uses new Rust 2024
new 0.3.0 | Apr 13, 2025 |
---|---|
0.2.0 | Apr 12, 2025 |
0.1.1 | Apr 12, 2025 |
0.1.0 | Apr 12, 2025 |
#1419 in Network programming
136 downloads per month
55KB
940 lines
domain-check
A fast, robust CLI tool for checking domain availability using RDAP protocol with automatic WHOIS fallback and detailed domain information.
Features
- â RDAP Protocol Support - Uses the modern Registration Data Access Protocol
- đ IANA Bootstrap Registry - Dynamically discovers RDAP endpoints for any TLD
- đ Automatic WHOIS Fallback - Gracefully falls back to WHOIS when RDAP isn't available
- đ Detailed Information - Shows registrar, creation dates, expiration, and status
- đ¯ Multiple TLD Support - Check domains across various TLDs in one command
- đ Bulk Domain Checking - Process hundreds of domains from a text file
- đģ Interactive Terminal UI - Navigate and explore domains in a beautiful terminal interface
- đ Optimized Concurrency - Fast parallel processing with rate limiting and error handling
- đ JSON Output - Machine-readable output for integration with other tools
- đ¨ Color-coded Results - Clear visual indicators for domain status
- đ Debug Mode - Detailed logging for troubleshooting
- ⥠Lightweight & Fast
Installation
From crates.io
cargo install domain-check
From source
git clone https://github.com/saidutt46/domain-check.git
cd domain-check
cargo install --path .
Quick Start
Check if a domain is available:
domain-check example
Check a domain across multiple TLDs:
domain-check example -t com org net io app
Get detailed information about a domain:
domain-check example.com -i
Check multiple domains from a file:
domain-check --file domains.txt
Usage
USAGE:
domain-check [OPTIONS] [DOMAIN]
ARGS:
[DOMAIN] Domain name to check (without TLD for multiple TLD checking)
OPTIONS:
-t, --tld <TLD>... Check availability with these TLDs
-f, --file <FILE> Input file with domains to check (one per line)
-c, --concurrency <N> Max concurrent domain checks (default: 10, max: 100)
--force Override the 500 domain limit for bulk operations
-i, --info Show detailed domain information when available
-b, --bootstrap Use IANA bootstrap to find RDAP endpoints for unknown TLDs
-w, --whois Fallback to WHOIS when RDAP is unavailable (deprecated, enabled by default)
--no-whois Disable automatic WHOIS fallback
-u, --ui Launch interactive terminal UI dashboard
-j, --json Output results in JSON format
-p, --pretty Enable colorful, formatted output
-d, --debug Show detailed debug information and error messages
-h, --help Print help information
-V, --version Print version information
Examples
Basic domain check
domain-check example
Output:
đ´ example.com is TAKEN
Check with multiple TLDs
domain-check myawesome -t com net org io
Output:
đ´ myawesome.com is TAKEN
đĸ myawesome.net is AVAILABLE
đĸ myawesome.org is AVAILABLE
đ´ myawesome.io is TAKEN
Show detailed domain information
domain-check google.com -i -p
Output:
đ Checking domain availability for: google
đ With TLDs: com
âšī¸ Detailed info will be shown for taken domains
đ´ google.com is TAKEN Registrar: MarkMonitor Inc. | Created: 1997-09-15T04:00:00Z | Expires: 2028-09-14T04:00:00Z | Status: serverDeleteProhibited, serverTransferProhibited, serverUpdateProhibited
Bulk domain checking from file
domain-check --file domains.txt
Where domains.txt contains:
example.com
mydomain
startup.io
# This is a comment
test-site.org
Output:
Checking 4 domains from file...
Using concurrency: 10 - Please wait...
đ´ example.com is TAKEN
đĸ mydomain.com is AVAILABLE
đ´ startup.io is TAKEN
đĸ test-site.org is AVAILABLE
â
4 domains processed: đĸ 2 available, đ´ 2 taken, â ī¸ 0 unknown
Bulk checking with high concurrency
domain-check --file many-domains.txt --concurrency 50
Bulk checking with TLD specification
domain-check --file base-domains.txt --tld com org io
Interactive UI mode
domain-check startup -t com io xyz dev -u
Checking unknown TLDs with bootstrap
domain-check example.pizza -b
Output:
đ´ example.pizza is TAKEN
Debug mode for troubleshooting
domain-check example.pizza -b -d
Output:
đ No known RDAP endpoint for .pizza, trying bootstrap registry...
đ Finding RDAP endpoint for TLD: pizza
đ Found endpoint: https://rdap.donuts.co/domain/
đ´ example.pizza is TAKEN
JSON output for integration
domain-check example -j
Advanced Usage
Bulk checking with domain files
Create a text file with one domain per line:
mydomain.com
product-name
startup.io
brand-new-idea
# Comment lines are ignored
my-app.dev
Then check all domains in a single command:
domain-check --file domains.txt --concurrency 20
For base domains without TLDs, you can specify which TLDs to check:
domain-check --file base-domains.txt --tld com net org io app
Checking available TLDs for a base name
domain-check mybusiness -t com net org io app dev xyz me co
Checking rare TLDs with automatic fallback
domain-check rare-tld.something -b
The tool will automatically try RDAP first, then fall back to WHOIS if RDAP fails.
Piping results to other tools
domain-check mydomain -t com net org -j | jq '.[] | select(.available==true) | .domain'
Integration
The JSON output can be easily integrated with other tools:
# Find all available domains and save to a file
domain-check business -t com net org io xyz -j | jq '.[] | select(.available==true) | .domain' -r > available_domains.txt
# Find all available domains and save to a file
domain-check --file domains.txt -j | jq '.[] | select(.available==true) | .domain' -r > available_domains.txt
How It Works
- Attempts to check domain via RDAP using known registry endpoints
- If TLD isn't in the known list, uses IANA bootstrap to discover the endpoint
- Automatically falls back to WHOIS lookup if RDAP is unavailable or unsuccessful
- Extracts detailed information when possible and requested
- Uses intelligent concurrency control with rate limiting to prevent overloading servers
Performance
- Concurrent processing of multiple domains (up to 5 at once by default)
- Rate limiting to prevent overloading RDAP endpoints
- Automatic timeout handling to prevent hanging requests
- Tiny binary size for fast startup and low resource usage
Supported TLDs
domain-check includes built-in support for many popular TLDs including:
com
, net
, org
, io
, app
, dev
, ai
, co
, xyz
, me
, info
, biz
, us
, uk
, eu
, tech
, blog
, page
, zone
, shop
, de
, ca
, au
, fr
, es
, it
, nl
, jp
, tv
, cc
, and others.
Additional TLDs can be checked using the bootstrap (-b
) option.
Comparison with other tools
Feature | domain-check | whois-cli | dns-lookup |
---|---|---|---|
RDAP Protocol | â | â | â |
Bootstrap Registry | â | â | â |
Auto WHOIS Fallback | â | â | â |
Detailed Info | â | â | â |
Multiple TLDs | â | â | â |
Bulk File Checking | â | â | â |
Configurable Concurrency | â | â | â |
Interactive UI | â | â | â |
JSON Output | â | â | â |
Concurrency Control | â | â | â |
Speed | Fast ⥠| Medium | Medium |
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Acknowledgments
Dependencies
~13â27MB
~385K SLoC