Batch profiles

Up to 100 profiles in one call, each with the same fields as the single-domain profile, including the latest traffic and employee estimates. Hostnames we do not hold come back in a missing array.

POST /domains/batch

Costs 1 lookup per domain, found or not

Up to 100 profiles in one call, each with the same fields as the single-domain profile, including the latest traffic and employee estimates. Hostnames we do not hold come back in a missing array.

Base URL https://getdomaindata.com/api/v1

Parameters

NameInTypeRequiredMeaning
domainsbodystring[]yes1 to 100 hostnames. Duplicates are collapsed before they are counted.

Request

curl

curl https://getdomaindata.com/api/v1/domains/batch \ -H "Authorization: Bearer gdd_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"domains":["allbirds.com","example.invalid"]}'

JavaScript

const KEY = process.env.GDD_API_KEY; const r = await fetch("https://getdomaindata.com/api/v1/domains/batch", { method: "POST", headers: { Authorization: "Bearer " + KEY, "Content-Type": "application/json" }, body: JSON.stringify({"domains":["allbirds.com","example.invalid"]}), }); const { data } = await r.json(); console.log(r.headers.get("X-Quota-Remaining"), data);

Python

import os, requests h = {"Authorization": "Bearer " + os.environ["GDD_API_KEY"]} r = requests.post("https://getdomaindata.com/api/v1/domains/batch", headers=h, json={"domains":["allbirds.com","example.invalid"]}) print(r.headers.get("X-Quota-Remaining"), r.json()["data"])

Response

A real record from the serving database, abridged where marked with an ellipsis. Null stays null.

{ "data": [ { "domain": "allbirds.com", "resolves": true, "technologies": [ "Amazon SES", "Apple", "Cloudflare", "DigiCert/Azure", "DocuSign", "Google", "Google Tag Manager", "HSTS", "..." ], "network": "Shopify", "platform": "shopify", "registrar": null, "age_days": null, "country_iso": null, "lang_norm": "en", "http_status": null, "redirect_to": null, "traffic": { "estimated_monthly_visits": 2137979, "band": "1M-10M", "as_of": "2026-08" }, "employees": { "apex": "allbirds.com", "low": 501, "high": 2000, "point": null, "as_of": "2026-09-10" } } ], "missing": [ "example.invalid" ] }
FieldTypeMeaning
dataobject[]One profile per hostname we hold, same shape as the domain endpoint.
missingstring[]Hostnames from your list that we do not hold. Each still counted as one lookup.

Errors this endpoint returns

All errors
401 invalid_keyThe key is missing, malformed, or revoked. Check the Authorization header and the key on your account page. Revoked keys stop on the next request.
429 rate_limitedToo many requests this minute for your plan. Back off until the reset time in the body, then retry.
402 quota_exhaustedThis month's lookups are spent. Wait for the first of the month, or add a pack from the account page. The API never throttles silently.
400 bad_batchThe body is not {"domains": [...]} with 1 to 100 valid hostnames. Send a JSON body with a domains array of at most 100 hostnames.
503 metering_unavailableThe quota could not be read, so nothing was served. Retry in a moment. No lookup was spent.