Developer Reference

Bulk Domain Check

Explore Bulk Domain Check API documentation, request parameters, response fields, code examples, and error handling for DomScan integrations.

Bulk Domain Check

Check availability for multiple domain names at once. Supports up to 50 domains per request.

POST /v1/status/bulk

Request Body

FieldTypeDescription
domains required string[] Array of full domain names to check
options.prefer_cache optional boolean Use cached results when available

Example Request

curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/status/bulk" \
-H "Content-Type: application/json" \
-d '{"domains": ["mybrand.com", "mybrand.io"], "options": {"prefer_cache": true}}'
const domscanFetch = (url, options = {}) =>
  fetch(url, {
    ...options,
    headers: { ...options.headers, "X-API-Key": "your-api-key" },
  });

const response = await domscanFetch("https://domscan.net/v1/status/bulk", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
domains: ["mybrand.com", "mybrand.io"],
options: { prefer_cache: true }
})
});
const data = await response.json();
console.log(data.results);
import requests

domscan = requests.Session()
domscan.headers.update({"X-API-Key": "your-api-key"})

payload = {
"domains": ["mybrand.com", "mybrand.io"],
"options": {"prefer_cache": True}
}
response = domscan.post(
"https://domscan.net/v1/status/bulk",
json=payload,
timeout=10
)
print(response.json()["results"])
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
  "io"
  "os"
)

func domscanPost(url, contentType string, body io.Reader) (*http.Response, error) {
  request, err := http.NewRequest(http.MethodPost, url, body)
  if err != nil {
    return nil, err
  }
  request.Header.Set("Content-Type", contentType)
  request.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
  return http.DefaultClient.Do(request)
}

func main() {
  payload := map[string]any{
    "domains": []string{"mybrand.com", "mybrand.io"},
    "options": map[string]bool{"prefer_cache": true},
  }
  body, _ := json.Marshal(payload)
  resp, err := domscanPost("https://domscan.net/v1/status/bulk", "application/json", bytes.NewReader(body))
  if err != nil {
    panic(err)
  }
  defer resp.Body.Close()
  fmt.Println(resp.Status)
}
require 'net/http'
require 'json'

uri = URI("https://domscan.net/v1/status/bulk")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = {
domains: ["mybrand.com", "mybrand.io"],
options: { prefer_cache: true }
}.to_json

response = http.request(request)
data = JSON.parse(response.body)
puts data["results"]

Response Fields

Field Type
results[] object[]
results[] object
results[].domain string
results[].tld string
results[].available boolean | null
results[].source string
results[].confidence string
results[].checked_at string
results[].latency_ms integer
results[].error string
confidence_summary object
confidence_summary.scope string
confidence_summary.requested_count integer
confidence_summary.result_count integer
confidence_summary.invalid_count integer
confidence_summary.available_count integer
confidence_summary.registered_count integer
confidence_summary.authoritative_count integer
confidence_summary.heuristic_count integer
confidence_summary.cached_count integer
confidence_summary.error_count integer
confidence_summary.ambiguous_count integer
confidence_summary.source_counts object
confidence_summary.primary_source string | null
confidence_summary.cache_status string
confidence_summary.rdap_calls integer
confidence_summary.refreshes integer
confidence_summary.cache_preference_misses integer
confidence_summary.fallback_chain[] string[]
confidence_summary.confidence_level string
confidence_summary.determinacy_rate number
confidence_summary.ambiguity_reason string | null
meta object
meta.total_checked integer
meta.available_count integer
meta.duration_ms integer

Example Response

{
  "results": [
    {
      "domain": "example.com",
      "tld": "com",
      "available": false,
      "source": "rdap",
      "latency_ms": 45
    },
    {
      "domain": "startup.io",
      "tld": "io",
      "available": true,
      "source": "rdap",
      "latency_ms": 67
    },
    {
      "domain": "brand.ai",
      "tld": "ai",
      "available": true,
      "source": "cache",
      "latency_ms": 2
    }
  ],
  "meta": {
    "total_checked": 3,
    "available_count": 2,
    "duration_ms": 120
  }
}