Domain Availability Checker
A production-ready Python script for bulk domain availability checking using WHOIS, DNS, and HTTP fallback methods.
pip install -r requirements.txt
python domain_checker.py -i domains.txt -o results.csv
# Check domains from text file
python domain_checker.py -i domains.txt -o results.csv
# Check with higher concurrency
python domain_checker.py -i domains.txt -o results.csv -c 10
# Enable HTTP fallback for better accuracy
python domain_checker.py -i domains.txt -o results.csv --http-fallback
# Verbose output for debugging
python domain_checker.py -i domains.txt -o results.csv -v
# Quiet mode (minimal output)
python domain_checker.py -i domains.txt -o results.csv -q
# Full configuration
python domain_checker.py \
-i domains.csv \
-o availability_report.csv \
-c 8 \
--whois-timeout 45 \
--dns-timeout 15 \
--retries 5 \
--rate-limit-delay 2.0 \
--http-fallback \
--verbose
domain-12345.com
google.com
github.com
============================================================
DOMAIN AVAILABILITY CHECKER
============================================================
Input file: domains.txt
Output file: results.csv
Domains to check: 7
Concurrency: 5
WHOIS timeout: 30s
DNS fallback: Enabled
HTTP fallback: Disabled
Rate limiting: Enabled
============================================================
Checking domains: 100%| ████████████████| 7/7 [00:15< 00:00, 2.14s/domain]
============================================================
DOMAIN AVAILABILITY CHECK SUMMARY
============================================================
Total domains checked: 7
✅ Available: 2 (28.6%)
❌ Registered: 5 (71.4%)
❓ Unknown: 0 (0.0%)
⚠️ Errors: 0 (0.0%)
============================================================
✅ AVAILABLE DOMAINS:
✓ example-test-domain-12345.com
✓ this-domain-is-probably-available-xyz123.net
Time elapsed: 15.23 seconds
Average: 2.18 seconds per domain
domain
status
registrar
expiry_date
creation_date
notes
check_method
checked_at
domain-12345.com
Available
Domain is available
WHOIS
2025-12-13T22:56:02.624428+00:00
google.com
Registered
MarkMonitor Inc.
2028-09-14
1997-09-15
Domain is registered
WHOIS
2025-12-13T22:56:02.624942+00:00
github.com
Registered
MarkMonitor Inc.
2026-10-09
2007-10-09
Domain is registered
WHOIS
2025-12-13T22:56:02.624982+00:00
┌────────────────────────────────────────────────────────────────┐
│ DomainChecker (Orchestrator) │
├────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Semaphore │ │ Rate Limiter │ │Thread Pool │ │
│ │ (Concurrency)│ │ (Per TLD) │ │ Executor │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├────────────────────────────────────────────────────────────────┤
│ Check Pipeline │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ WHOIS │──▶│ DNS │──▶│ HTTP │ │
│ │ Checker │ │ Fallback │ │ Fallback │ │
│ │ (Primary) │ │ (Secondary) │ │ (Tertiary) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└────────────────────────────────────────────────────────────────┘
│
▼
┌──────────────────┐
│ DomainResult │
│ - domain │
│ - status │
│ - registrar │
│ - expiry_date │
│ - notes │
└──────────────────┘
Feature
Description
Async I/O
Uses asyncio for concurrent domain checking
Rate Limiting
Per-TLD rate limiting to avoid WHOIS blocking
Retry Logic
Automatic retries with exponential backoff
Multiple TLDs
Supports .com, .net, .org, ccTLDs, new gTLDs
Fallback Methods
DNS and HTTP checks when WHOIS fails
Pattern Matching
Robust detection of "available" vs "registered"
Progress Display
Real-time progress with tqdm (optional)
CSV Export
Detailed results for further analysis
python-whois>=0.8.0
aiohttp>=3.9.0
dnspython>=2.4.0
tqdm>=4.66.0 # Optional, for progress bar