Skip to content

High-performance Rust library & CLI for domain availability checks using RDAP & WHOIS, with async concurrency, bulk processing, and robust error handling.

License

Notifications You must be signed in to change notification settings

saidutt46/domain-check

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

72 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

domain-check

Fast, powerful CLI tool for checking domain availability using RDAP and WHOIS protocols.

Homebrew CLI Crate Library Crate Downloads License: Apache 2.0

Basic Usage


Why domain-check?

Tired of switching between browser tabs and WHOIS websites to check if domains are available? domain-check brings fast, accurate domain availability checking directly to your terminal. Built in Rust for speed, with configuration files, environment variables, custom presets, and bulk processing for when you need to check hundreds of domains at once.

Perfect for developers, domain investors, startups, and anyone who works with domains regularly.


πŸ“¦ Installation

Homebrew (macOS)

brew tap saidutt46/domain-check
brew install domain-check

Cargo (All Platforms)

cargo install domain-check

Download Binaries

Pre-built binaries available for macOS, Linux, and Windows: GitHub Releases


πŸš€ Quick Start

Check a single domain

domain-check example.com
# πŸ”΄ example.com is TAKEN

Check multiple TLD variations

domain-check mystartup -t com,io,ai,dev
# πŸ” Checking 4 domains...
# πŸ”΄ mystartup.com is TAKEN
# 🟒 mystartup.io is AVAILABLE
# 🟒 mystartup.ai is AVAILABLE  
# 🟒 mystartup.dev is AVAILABLE

Check ALL TLDs at once

# Check against ALL 35+ known TLDs in seconds
domain-check myapp --all
# πŸ” Checking 35+ domains across all TLDs...
# 🟒 myapp.com is AVAILABLE
# πŸ”΄ myapp.io is TAKEN  
# 🟒 myapp.ai is AVAILABLE
# 🟒 myapp.dev is AVAILABLE
# ... (38 more results in ~2 seconds)

Use smart presets

# Check against startup-focused TLDs (8 TLDs)
domain-check myapp --preset startup

# Enterprise-focused TLDs (6 TLDs)
domain-check mybrand --preset enterprise

Bulk check from file

echo -e "myapp\nmystartup\ncoolproject" > domains.txt
domain-check --file domains.txt -t com,org --json > results.json

βš™οΈ Configuration & Customization

Configuration Files

Create persistent settings with configuration files:

# .domain-check.toml
[defaults]
concurrency = 25
preset = "startup"
pretty = true
timeout = "8s"
bootstrap = true

[custom_presets]
my_startup = ["com", "io", "ai", "dev", "app"]
my_enterprise = ["com", "org", "net", "biz", "info"] 
my_crypto = ["com", "org", "crypto", "blockchain"]

[output]
default_format = "pretty"
csv_headers = true

Configuration file locations (checked in order):

  • ./domain-check.toml (project-specific)
  • ~/.domain-check.toml (user global)
  • ~/.config/domain-check/config.toml (XDG standard)

Environment Variables

Perfect for CI/CD and automation:

# Basic settings
export DC_CONCURRENCY=50
export DC_PRESET=startup
export DC_PRETTY=true
export DC_BOOTSTRAP=true

# File locations
export DC_CONFIG=/path/to/config.toml
export DC_FILE=/path/to/domains.txt

# Use in commands
DC_TIMEOUT=30s domain-check mystartup

Custom Presets

Define your own TLD combinations:

# Use custom preset from config file
domain-check mystartup --preset my_crypto

# Via environment variable  
DC_PRESET=my_startup domain-check mystartup

πŸ“– Command Reference

Usage

domain-check [OPTIONS] [DOMAINS]...

Arguments

  • <DOMAINS>... - Domain names to check (supports both base names and FQDNs)

Core Options

Option Description Example
-t, --tld <TLD> Specify TLDs for base names -t com,org,io
--all Check against all 42+ known TLDs --all
--preset <NAME> Use TLD preset (startup/enterprise/country) --preset startup
-f, --file <FILE> Read domains from file -f domains.txt
--config <FILE> Use specific config file --config my-config.toml

Performance Options

Option Description Default
-c, --concurrency <N> Max concurrent checks (1-100) 20
--force Override safety limits
--streaming Show results as they complete
--batch Collect all results before showing

Output Options

Option Description Example
-p, --pretty Colorful output with emojis --pretty
-j, --json Output in JSON format --json
--csv Output in CSV format --csv
-i, --info Show detailed domain information --info

Protocol Options

Option Description Default
-b, --bootstrap Use IANA bootstrap for unknown TLDs false
--no-whois Disable WHOIS fallback false

Debugging

Option Description
-d, --debug Show detailed debug information
-v, --verbose Enable verbose logging
-h, --help Show help information
-V, --version Show version

Environment Variables

Variable Description Example
DC_CONCURRENCY Default concurrency DC_CONCURRENCY=50
DC_PRESET Default preset DC_PRESET=startup
DC_TLD Default TLD list DC_TLD=com,io,dev
DC_PRETTY Enable pretty output DC_PRETTY=true
DC_TIMEOUT Request timeout DC_TIMEOUT=10s
DC_BOOTSTRAP Enable bootstrap DC_BOOTSTRAP=true
DC_CONFIG Config file path DC_CONFIG=my-config.toml
DC_FILE Domains file path DC_FILE=domains.txt

🎯 Choose Your Path

Just need CLI? You're all set! Check out our CLI Examples for advanced usage patterns.

Building a Rust app? Use our library:

[dependencies]
domain-check-lib = "0.6.0"

See the Library Documentation for integration examples.

Need bulk domain processing? See Advanced Examples for enterprise workflows.


✨ Key Features

🌐 Universal Coverage - Check against ALL 35+ TLDs with --all or use smart presets
⚑ Lightning Fast - Concurrent processing up to 100 domains simultaneously
πŸ“Š Rich Output Options - Beautiful terminal display, JSON/CSV for automation, detailed info mode
πŸ“ Bulk Processing - Process thousands of domains from files with real-time streaming results
βš™οΈ Configuration Files - Persistent settings with TOML configuration files
πŸ”§ Environment Variables - Full DC_* environment variable support for automation
🎯 Custom Presets - Define your own TLD combinations for repeated use


πŸ“‹ Examples

Basic Usage

# Single domain
domain-check example.com

# Multiple domains with pretty output
domain-check example.com google.com --pretty

# Check startup-focused TLDs
domain-check mystartup --preset startup

# Check all available TLDs
domain-check myapp --all --streaming

Configuration-Driven Workflow

# One-time setup
cat > .domain-check.toml << 'EOF'
[defaults]
concurrency = 25
preset = "startup"
pretty = true

[custom_presets]
my_stack = ["com", "io", "dev", "app"]
EOF

# Now simple commands use your preferences
domain-check mystartup        # Uses startup preset, pretty output, 25 concurrency
domain-check --preset my_stack myproject  # Uses custom preset

Automation & CI/CD

# Environment-driven configuration
DC_CONCURRENCY=50 DC_PRESET=enterprise domain-check --file domains.txt --json

# Docker usage
docker run -e DC_PRESET=startup domain-check:latest myapp

# GitHub Actions
- name: Check domains
  run: |
    export DC_CONCURRENCY=30
    domain-check --file required-domains.txt --json

Advanced Workflows

# Domain research pipeline
domain-check --file ideas.txt --preset startup --csv > research.csv

# Brand protection monitoring  
domain-check --file brand-variations.txt --all --json > monitoring.json

# Performance testing with high concurrency
domain-check --file large-list.txt --concurrency 75 --streaming

πŸ”— Resources

Crates


πŸ“ License

Licensed under the Apache License, Version 2.0 - see the LICENSE file for details.


Built with ❀️ in Rust

About

High-performance Rust library & CLI for domain availability checks using RDAP & WHOIS, with async concurrency, bulk processing, and robust error handling.

Topics

Resources

License

Stars

Watchers

Forks

Languages