canyougrab.it
Guide

Bulk Domain Checking: A Developer's Guide

Published: March 20, 2026

Checking a single domain for availability is straightforward. Checking hundreds or thousands introduces challenges around rate limiting, latency, and data quality. This guide covers the use cases for bulk domain checking, why single-domain approaches break at scale, and how to use a batch API to check domains efficiently.

When you need bulk domain checking

Bulk domain availability checking is relevant for several workflows:

The problem with checking one domain at a time

The naive approach — sending a separate WHOIS query for each domain — runs into hard limits quickly.

Traditional WHOIS

  • 1 domain per request
  • ~43 requests/min rate limit
  • 200-2000ms per lookup
  • Unreliable availability data
  • Inconsistent formats across registrars

Batch API (canyougrab.it)

  • Up to 100 domains per request
  • Up to 3,000 requests/min
  • DNS-first for speed, WHOIS for accuracy
  • Confidence-scored results
  • Clean JSON responses

At 43 queries per minute, checking 1,000 domains via WHOIS takes over 23 minutes. With a batch API that accepts 100 domains per request at 300 requests per minute, the same 1,000 domains take under 4 seconds.

How batch domain checking works

A batch API accepts multiple domains in a single HTTP request and returns results for all of them. On the server side, the API can parallelize lookups across DNS resolvers and WHOIS clients, avoiding the serial bottleneck of one-at-a-time checking.

Request format

Send a POST request with a JSON body containing an array of domain names:

curl -X POST https://api.canyougrab.it/api/check/bulk \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"domains": ["startup.com", "startup.io", "startup.dev", "startup.co", "startup.app"]}'

Response format

The response contains a results array with one entry per domain, in the same order as the request:

{
  "results": [
    {
      "domain": "startup.com",
      "available": false,
      "confidence": "high",
      "source": "cache",
      "tld": "com",
      "checked_at": "2026-03-20T12:00:00Z"
    },
    {
      "domain": "startup.io",
      "available": false,
      "confidence": "high",
      "source": "dns",
      "tld": "io",
      "checked_at": "2026-03-20T12:00:00Z"
    },
    {
      "domain": "startup.dev",
      "available": true,
      "confidence": "medium",
      "source": "dns",
      "tld": "dev",
      "checked_at": "2026-03-20T12:00:00Z"
    }
  ]
}

Python example: checking a list of domains

import requests

API_KEY = "YOUR_API_KEY"
domains = ["mybrand.com", "mybrand.io", "mybrand.dev",
           "mybrand.co", "mybrand.app", "mybrand.net"]

resp = requests.post(
    "https://api.canyougrab.it/api/check/bulk",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"domains": domains}
)

available = [r["domain"] for r in resp.json()["results"]
             if r["available"]]
print(f"Available: {', '.join(available) or 'none'}")

Scaling beyond 100 domains per request

The API accepts up to 100 domains per request. For larger lists, split your domains into batches and send them sequentially or in parallel (within your rate limit).

Batch splitting strategy

import requests
import time

API_KEY = "YOUR_API_KEY"
all_domains = [...]  # your full list

def check_batch(domains):
    resp = requests.post(
        "https://api.canyougrab.it/api/check/bulk",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"domains": domains}
    )
    return resp.json()["results"]

# Split into chunks of 100
batches = [all_domains[i:i+100]
           for i in range(0, len(all_domains), 100)]

all_results = []
for batch in batches:
    all_results.extend(check_batch(batch))

Throughput by pricing tier

The rate at which you can check domains depends on your plan's requests-per-minute limit and the 100-domain batch size:

For most use cases, the Free or Verified tier is enough to get started. Scale up as your volume grows. See pricing details for the full breakdown.

Best practices

Try it now

Get your free API key and start checking domains in bulk. 500 lookups per month, no credit card required.

Get Your API Key →

Further reading