A simple Go command-line tool to check domain availability using AWS Route 53 Domains API.
- Go 1.19 or newer
- AWS credentials configured (via AWS CLI, environment variables, or IAM roles)
- AWS account with Route 53 Domains API access
Install directly from GitHub:
go install github.com/abakermi/r53check@latest
Or clone the repository and build locally:
git clone https://github.com/abakermi/r53check.git
cd r53check
go build -o r53check .
The tool requires AWS credentials to access the Route 53 Domains API. You can configure them using:
aws configure
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_REGION=us-east-1
Your AWS credentials need the following permissions:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53domains:CheckDomainAvailability",
"route53domains:ListPrices"
],
"Resource": "*"
}
]
}
Note: The route53domains:ListPrices
permission is only required when using the --price
flag.
Check if a domain is available for registration:
r53check check <domain_name>
Examples:
# Check a .com domain
r53check check example.com
# Check with pricing information
r53check --price check example.com
# Check with verbose output
r53check --verbose check myapp.io
# Check with pricing and verbose output
r53check --price --verbose check myapp.io
# Check with custom timeout
r53check --timeout 30s check example.org
Check multiple domains at once:
r53check bulk <domain1> <domain2> <domain3>...
Or read domains from a file:
r53check bulk --file domains.txt
Examples:
# Check multiple domains
r53check bulk example.com test.org myapp.io
# Check multiple domains with pricing information
r53check --price bulk example.com test.org myapp.io
# Check domains from file with verbose output
r53check --verbose bulk --file domains.txt
# Check domains from file with pricing information
r53check --price bulk --file domains.txt
# Check with custom timeout
r53check --timeout 30s bulk example.com test.com
Create a text file with one domain per line:
example.com
test.org
myapp.io
# This is a comment and will be ignored
another-domain.net
--timeout duration
: Set timeout for API requests (default: 10s)--region string
: AWS region (defaults to us-east-1)--verbose, -v
: Enable verbose output--price
: Include domain pricing information (registration, renewal, and transfer costs)
The tool provides clear output indicating domain availability:
- ✓ AVAILABLE: Domain is available for registration
- ✗ UNAVAILABLE: Domain is already registered
- ⚠ RESERVED: Domain is reserved and cannot be registered
- ? UNKNOWN: Unable to determine availability
When using the --price
flag, the tool will display pricing information for available domains:
$ r53check --price check example.com
✓ example.com is AVAILABLE for registration
Pricing:
Registration: $12.00 USD
Renewal: $12.00 USD
Transfer: $12.00 USD
Note: Pricing information is only available for domains that are available for registration and is provided in USD.
0
: Success (domain checked successfully)1
: Validation error (invalid domain format)2
: Authentication error (AWS credentials issue)3
: Authorization error (insufficient permissions)4
: API error (AWS service error)5
: System error (unexpected error)
The tool supports checking availability for common TLDs including:
- Generic: .com, .net, .org, .info, .biz, .name, .io, .co, .me, .tv, .cc, .ws, .mobi, .tel, .asia
- Country codes: .us, .uk, .ca, .au, .de, .fr, .it, .es, .nl, .be, .ch, .at, .se, .no, .dk, .fi, .pl, .cz, .ru, .jp, .cn, .in, .br, .mx
You can see usage instructions with:
r53check --help
r53check check --help
r53check bulk --help
go build -o r53check .
go test ./...
r53check/
├── cmd/ # Main application entry point
├── internal/
│ ├── aws/ # AWS Route 53 client wrapper
│ ├── domain/ # Domain validation and checking logic
│ ├── errors/ # Custom error types and handling
│ └── output/ # Output formatting
├── go.mod
├── go.sum
└── README.md
This project is licensed under the MIT License. See the LICENSE file for details.