Documentation

nameCrawl API

nameCrawl helps you check domain availability, compare registrar prices, monitor expiring domains, and discover trending domains. Use our REST API directly, the CLI tool for quick terminal lookups, or the web dashboard.

Domain Search

Check availability across 50+ TLDs with real-time RDAP data and pricing

Price Comparison

Compare registration and renewal prices from Porkbun, Namecheap, GoDaddy, NameSilo, Dynadot, and Cloudflare

Expiry Monitoring

Watch domains and get webhook alerts before they expire (Pro plan)

Base URL

https://api.namecrawl.dev

All API requests use this base URL. Responses are JSON. HTTPS is required.

Quick Start

Start checking domains in under 30 seconds. No account required for basic searches.

1

Search a domain (no account needed)

The public endpoint checks your domain across 15 popular TLDs automatically. You can pass just a name like myproject or a full domain like myproject.com (the specified TLD will appear first in results).

Terminal
curl -X POST https://api.namecrawl.dev/v1/public/check \
  -H "Content-Type: application/json" \
  -d '{"domain": "myproject"}'
2

Get results for 15 TLDs with pricing

Each result tells you if the domain is available or registered, and includes pricing from multiple registrars for available domains.

Response
{
  "success": true,
  "data": {
    "domain": "myproject",
    "results": [
      {
        "tld": ".com",
        "fqdn": "myproject.com",
        "available": true,
        "status": "available",
        "pricing": [
          { "registrar": "cloudflare", "registration_price": 9.77, "renewal_price": 9.77, "currency": "USD" },
          { "registrar": "porkbun", "registration_price": 8.56, "renewal_price": 9.73, "currency": "USD" }
        ],
        "registration_links": [
          { "registrar": "porkbun", "url": "https://porkbun.com/...", "price": 8.56 }
        ]
      },
      {
        "tld": ".io",
        "fqdn": "myproject.io",
        "available": false,
        "status": "registered",
        "registrar": "NameCheap, Inc.",
        "expiry_date": "2027-03-15T00:00:00Z"
      }
    ]
  },
  "meta": {
    "timestamp": "2026-03-19T12:00:00Z",
    "tlds_checked": 15,
    "available_count": 8,
    "taken_count": 7
  }
}
3

Want more? Sign up for an API key

Free accounts get 3,000 lookups/month (300/day) with custom TLD selection, WHOIS data (Pro), bulk checks (Starter+), and domain monitoring (Pro).

Terminal
# Sign up at namecrawl.dev, then create an API key in the dashboard.
# Use your API key for authenticated requests:
curl -X POST https://api.namecrawl.dev/v1/check \
  -H "Authorization: Bearer nc_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"domain": "myproject.com"}'

Tip: You can pass a full domain like myproject.com and the API will extract the TLD automatically. If you don't provide a tlds array, it defaults to checking all 15 popular TLDs with your specified TLD first.

CLI Tool

The easiest way to use nameCrawl. Search domains, check trends, and manage your account from the terminal. The CLI runs in interactive mode — just type commands directly without any prefix.

Install

Terminal
# Install globally
npm install -g namecrawl

# Or run without installing
npx namecrawl

Once launched, the CLI enters interactive mode. Type commands directly at the nameCrawl > prompt.

Search domains

Search by name to check all default TLDs, or pass a full domain to prioritize that TLD.

nameCrawl >
# Search across all default TLDs
search coolstartup

# Search a specific domain (checks .com first, then the rest)
search coolstartup.com

# Search specific TLDs only
search coolstartup --tlds com,io,dev

# Output as JSON (useful for scripting and piping)
search coolstartup --json
coolstartup coolstartup.dev available $10.18/yr cloudflare renew $10.18/yr $9.73/yr porkbun renew $10.41/yr <- best coolstartup.com taken expires 2026-08-15 coolstartup.io taken coolstartup.xyz available $1.99/yr namesilo renew $8.99/yr <- best 2 available - 2 taken - 4 checked

Authentication

The CLI supports two login methods: browser-based (opens your browser for Google, GitHub, etc. via device code flow) or email & password. You can also create an account directly from the CLI.

nameCrawl >
# Log in (choose browser or email/password)
login

# Create a new account
signup

# Check your account status and remaining quota
status

# Log out (clears stored credentials)
logout

Credentials are stored in ~/.namecrawl/config.json. Never share this file.

Trending domains

nameCrawl >
# See what's trending
trending

# Filter by category
trending --category expiring_soon
trending --category newly_available
trending --category rising

# Change time period
trending --period 7d

# Limit number of results
trending --limit 10

Domain watching (Pro)

Monitor domains for expiry and get webhook notifications.

nameCrawl >
# Watch a domain for expiry alerts
watch example.com

# Watch with a webhook URL for notifications
watch example.com --webhook https://myapp.com/hooks/domain

# List all watched domains
watch list

# Remove a watch
watch remove <id>

All commands

CommandDescription
search <domain>Search domain availability across TLDs
search <domain> --tlds com,ioSearch specific TLDs only
search <domain> --jsonOutput results as JSON
trendingView trending domains
trending --category expiring_soonFilter trending by category
trending --period 7dChange trending time period
trending --limit 10Limit number of results
loginLog in via browser or email/password
signupCreate a new account
logoutClear stored credentials
statusView account info, tier, and quota
keys listList your API keys
keys createCreate a new API key
bulk <domains> --tlds com,ioBulk check multiple domains (Starter+)
bulk --file domains.txtBulk check from a file (one domain per line)
watch <domain>Watch a domain for expiry (Pro+)
watch <domain> --webhook <url>Watch with webhook notifications
watch listList watched domains
watch remove <id>Stop watching a domain
keys delete <id>Revoke an API key
updateUpdate nameCrawl to the latest version

Authentication

nameCrawl offers three ways to interact with the API. Public endpoints require no authentication at all. For higher limits and more features, sign up and use an API key.

MethodBest forHow it works
No authQuick one-off lookupsUse /v1/public/* endpoints. Rate limited by IP.
API KeyServers, scripts, CLIHeader: Authorization: Bearer nc_...
JWT (Dashboard)Web dashboard onlyAutomatic via Clerk. Not for API integrations.

Getting an API key: Sign up at namecrawl.dev/sign-up, go to Dashboard → API Keys, and create one. Or use the CLI: run login then keys create. Your key is shown once at creation and cannot be retrieved later, so save it somewhere safe.

POST/v1/checkAuth

Check domain availability across multiple TLDs. Returns availability status, RDAP registration data, registrar pricing, and affiliate registration links.

Parameters

NameTypeReqDescription
domainstringYesDomain name (e.g. 'mybrand') or full domain (e.g. 'mybrand.com'). If a TLD is included, it will be extracted and checked first.
tldsstring[]NoTLDs to check (e.g. [".com", ".io"]). If omitted, checks 15 default TLDs. Max per tier: Free 15, Starter 50, Pro 200.
limitintegerNoMax number of TLDs to check. Use this to control query cost without specifying individual TLDs. (e.g. 25)
include_pricingbooleanNoInclude registrar pricing for available domains (default: true)
include_whoisbooleanNoInclude WHOIS data like registrar, nameservers, expiry (Pro+ only, default: false)
skip_cachebooleanNoForce a fresh RDAP lookup, bypassing cache. Costs 2x credits. (Pro+ only, default: false)

Request body

JSON
{
  "domain": "mybrand.com",
  "tlds": [".com", ".io", ".dev", ".ai"],
  "limit": 25,
  "include_pricing": true,
  "include_whois": false,
  "skip_cache": false
}

Response

JSON
{
  "success": true,
  "data": {
    "domain": "mybrand",
    "results": [
      {
        "tld": ".com",
        "fqdn": "mybrand.com",
        "available": false,
        "status": "registered",
        "registrar": "Cloudflare, Inc.",
        "expiry_date": "2027-01-15T00:00:00Z",
        "cached": true,
        "cache_age_seconds": 3600
      },
      {
        "tld": ".dev",
        "fqdn": "mybrand.dev",
        "available": true,
        "status": "available",
        "pricing": [
          { "registrar": "cloudflare", "registration_price": 10.18, "renewal_price": 10.18, "currency": "USD" },
          { "registrar": "porkbun", "registration_price": 9.73, "renewal_price": 10.41, "currency": "USD" }
        ],
        "registration_links": [
          { "registrar": "porkbun", "url": "https://porkbun.com/...", "price": 9.73 }
        ]
      }
    ]
  },
  "meta": { "query_cost": 4, "queries_remaining": 9996 }
}

How domain input works

  • "domain": "mybrand" — checks all 15 default TLDs
  • "domain": "mybrand.com" — extracts .com, checks it first, then the other 14 TLDs
  • "domain": "mybrand.edu" — extracts .edu (not in defaults), checks it first plus 14 defaults
  • "domain": "mybrand", "tlds": [".com", ".io"] — checks only the specified TLDs
  • "domain": "mybrand", "limit": 5 — checks only the first 5 default TLDs

Public endpoint (no auth needed)

For quick lookups without an account. Automatically checks 15 TLDs. Rate limited to 5 requests/minute per IP. Also supports full domain input.

Terminal
# Search by name (checks 15 TLDs)
curl -X POST https://api.namecrawl.dev/v1/public/check \
  -H "Content-Type: application/json" \
  -d '{"domain": "mybrand"}'

# Search by full domain (.com appears first in results)
curl -X POST https://api.namecrawl.dev/v1/public/check \
  -H "Content-Type: application/json" \
  -d '{"domain": "mybrand.com"}'
POST/v1/check/bulkAuthstarter+

Check multiple domains at once across multiple TLDs. Each domain+TLD combination counts as one query credit. Requires Starter tier or above.

Parameters

NameTypeReqDescription
domainsstring[]YesDomain names to check. Max 10 (Starter) or 20 (Pro+).
tldsstring[]NoTLDs to check for each domain. Max 20 (Starter) or 50 (Pro+). Defaults to [".com"].
include_pricingbooleanNoInclude registrar pricing (default: true)
include_whoisbooleanNoInclude WHOIS data (Pro+ only, default: false)

Request body

JSON
{
  "domains": ["mybrand", "mycompany", "myproject"],
  "tlds": [".com", ".io"],
  "include_pricing": true,
  "include_whois": false
}

Response

JSON
{
  "success": true,
  "data": {
    "results": {
      "mybrand": [
        { "tld": ".com", "fqdn": "mybrand.com", "available": true, "status": "available", ... },
        { "tld": ".io", "fqdn": "mybrand.io", "available": false, "status": "registered", ... }
      ],
      "mycompany": [ ... ],
      "myproject": [ ... ]
    }
  },
  "meta": { "query_cost": 6, "queries_remaining": 9994 }
}

Query cost: domains × TLDs. Checking 3 domains across 2 TLDs = 6 queries deducted from your monthly quota.

GET/v1/tlds

List all supported TLDs with metadata. No auth required. Use this to discover which TLDs are available for your plan.

Response

JSON
{
  "success": true,
  "data": {
    "tlds": [
      { "tld": ".com", "type": "generic", "rdap_supported": true, "min_tier": "free" },
      { "tld": ".io", "type": "country-code", "rdap_supported": true, "min_tier": "free" },
      { "tld": ".info", "type": "generic", "rdap_supported": true, "min_tier": "starter" }
    ],
    "total": 54
  }
}

Free tier TLDs (15): .com, .net, .org, .io, .co, .dev, .app, .ai, .xyz, .tech, .me, .gg, .site, .online, .store. Starter and above unlock all 50+ TLDs including ccTLDs.

GET/v1/prices/:tld

Get registration and renewal prices for a specific TLD across all tracked registrars. Prices are refreshed periodically from registrar APIs.

Parameters

NameTypeReqDescription
tldstringYesTLD without dot (e.g. 'com', 'io'). Passed as URL path segment.

Response

JSON
{
  "success": true,
  "data": {
    "tld": ".com",
    "prices": [
      { "registrar": "cloudflare", "registration_price": 9.77, "renewal_price": 9.77, "currency": "USD" },
      { "registrar": "porkbun", "registration_price": 8.56, "renewal_price": 9.73, "currency": "USD" },
      { "registrar": "namesilo", "registration_price": 9.95, "renewal_price": 9.95, "currency": "USD" }
    ]
  }
}

Domain Watching

Monitor domains for expiry and get notified via webhooks when they're about to expire. The system checks your watched domains every 6 hours and sends notifications at 30, 7, and 1 day(s) before expiry. Requires Pro tier or above.

POST/v1/watchAuthpro+

Add a domain to your watchlist. The system will look up the current expiry date via RDAP and begin monitoring.

Parameters

NameTypeReqDescription
domainstringYesFull domain to watch (e.g. 'example.com')
webhook_urlstringNoHTTPS URL to receive expiry notifications. Must be HTTPS.
notify_days_beforeinteger[]NoDays before expiry to send alerts (default: [30, 7, 1])

Request body

JSON
{
  "domain": "example.com",
  "webhook_url": "https://myapp.com/webhooks/domain"
}

Response

JSON
{
  "success": true,
  "data": {
    "id": "a1b2c3d4-...",
    "domain": "example.com",
    "expiry_date": "2026-06-15T00:00:00Z",
    "notify_days_before": [30, 7, 1],
    "webhook_url": "https://myapp.com/webhooks/domain",
    "is_active": true,
    "last_checked": "2026-03-19T12:00:00Z",
    "created_at": "2026-03-19T12:00:00Z"
  }
}
GET/v1/watch/list

List all watched domains

PATCH/v1/watch/:id

Update webhook URL or notification settings

DELETE/v1/watch/:id

Remove from watchlist

Webhook payload

When a domain approaches expiry, nameCrawl sends a POST request to your webhook URL with this payload. Webhooks are signed with HMAC-SHA256 for verification.

Webhook POST body
{
  "event": "domain.expiring",
  "domain": "example.com",
  "expiry_date": "2026-06-15T00:00:00Z",
  "days_until_expiry": 7,
  "timestamp": "2026-06-08T12:00:00Z"
}

Limits: Free and Starter plans cannot use watchlist. Pro allows up to 50 watched domains. Webhook URLs must be HTTPS and are validated against SSRF attacks (no localhost, private IPs, or internal hostnames).

Error Handling

All errors return a consistent JSON format with a machine-readable code. Use the code field for programmatic error handling, not the HTTP status code.

Error response
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 30 seconds.",
    "retry_after": 30
  }
}
CodeHTTPWhat to do
VALIDATION_ERROR400Check your request body and parameters
INVALID_DOMAIN400Domain name format is invalid (only letters, numbers, hyphens)
INVALID_TLD400TLD not recognized or not supported on your tier
UNAUTHORIZED401Missing or invalid API key. Check your Authorization header.
TOKEN_EXPIRED401JWT expired. Re-authenticate via the dashboard.
TIER_RESTRICTED403Feature requires a higher plan. Check /pricing for details.
NOT_FOUND404Resource doesn't exist (wrong endpoint or ID)
RATE_LIMIT_EXCEEDED429Too many requests. Wait retry_after seconds and retry.
QUOTA_EXCEEDED429Monthly or daily quota used up. Upgrade plan or wait.
BULK_LIMIT_EXCEEDED400Too many domains or TLDs for your tier
LOOKUP_FAILED502RDAP registry didn't respond. Try again or use cached results.
INTERNAL_ERROR500Something broke on our end. Contact support if persistent.

Rate Limits

Every response includes rate limit headers so you can track your usage and avoid hitting limits.

Response headers
X-RateLimit-Limit: 60        # Max requests per minute for your tier
X-RateLimit-Remaining: 58   # Requests remaining in current window
X-RateLimit-Reset: 1710590400  # Unix timestamp when the window resets
TierRequests/minQuery QuotaTLDs/request
Public (no auth)5/min100/day per IP15 (fixed)
Free10/min300/day, 3,000/mo15
Starter ($19/mo)60/min10,000/mo50
Pro ($49/mo)120/min100,000/mo200

How query costs work: Each TLD checked counts as 1 query. Checking mybrand across 15 TLDs costs 15 queries. Using skip_cache: true (Pro) doubles the cost to 2 per TLD. Use the limit parameter to control how many TLDs are checked per request. When rate limited, the API returns 429 with a retry_after field telling you how many seconds to wait.

Heads up: Pro users can check up to 200 TLDs per request, but a single request at max capacity costs 200 queries (400 with skip_cache). That can burn through your 100,000/month quota fast. Use the limit parameter to keep costs predictable.

Plans & Features

Start free and upgrade as your usage grows. No credit card required for the free plan. Manage your subscription at Dashboard → Billing.

Free

$0

  • 3,000 queries / month
  • 300 queries / day
  • 15 TLDs per request
  • Price comparison
  • 10 req/min
  • CLI tool

Starter

$19/mo

  • 10,000 queries / month
  • No daily limit
  • Up to 50 TLDs per request (including ccTLDs)
  • Bulk check (10 domains, 20 TLDs)
  • Price comparison
  • 60 req/min

Pro

$49/mo

  • 100,000 queries / month
  • No daily limit
  • Up to 200 TLDs per request (including ccTLDs)
  • Bulk check (20 domains, 50 TLDs)
  • WHOIS data access
  • Skip cache (fresh lookups)
  • Domain watchlist (50 domains)
  • Webhook notifications
  • 120 req/min

Support

Need help? Reach out and we'll get back to you as soon as possible.

Email: hello@namecrawl.dev

Status page: Check api.namecrawl.dev/health for API status.