Everything we serve for one hostname: its technologies, network, platform, identity fields, and the latest traffic and employee estimates where we hold them.
Everything we serve for one hostname: its technologies, network, platform, identity fields, and the latest traffic and employee estimates where we hold them.
| Name | In | Type | Required | Meaning |
|---|---|---|---|---|
| domain | path | string | yes | A hostname, for example allbirds.com or shop.example.co.uk. Profiles are per hostname, so a subdomain is its own record. |
curl https://getdomaindata.com/api/v1/domain/allbirds.com \
-H "Authorization: Bearer gdd_live_YOUR_KEY"const KEY = process.env.GDD_API_KEY;
const r = await fetch("https://getdomaindata.com/api/v1/domain/allbirds.com", { headers: { Authorization: "Bearer " + KEY } });
const { data } = await r.json();
console.log(r.headers.get("X-Quota-Remaining"), data);import os, requests
h = {"Authorization": "Bearer " + os.environ["GDD_API_KEY"]}
r = requests.get("https://getdomaindata.com/api/v1/domain/allbirds.com", headers=h)
print(r.headers.get("X-Quota-Remaining"), r.json()["data"]){
"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"
}
}
}| Field | Type | Meaning |
|---|---|---|
| domain | string | The hostname you asked for, lower-cased. |
| resolves | boolean | null | Whether the hostname resolved when last checked. |
| technologies | string[] | null | Technology names we detected on the site, alphabetical. |
| network | string | null | The network or provider the site is served from. |
| platform | string | null | The site platform when it is one we classify (for example shopify). |
| registrar | string | null | Registrar name where known. |
| age_days | number | null | Days since registration where known. |
| country_iso | string | null | Two-letter country code where we could place the site. |
| lang_norm | string | null | Primary language code where known. |
| http_status | number | null | Status code from the last fetch of the homepage where known. |
| redirect_to | string | null | Where the homepage redirected, where it did. |
| traffic | object | null | Latest traffic estimate: estimated_monthly_visits, band, as_of (YYYY-MM). Null when we hold none. |
| employees | object | null | Latest employee estimate for the organisation behind the apex: apex, low, high (null = open-ended), point (a specific figure when we hold one), as_of. Null when we hold none. |
| 401 invalid_key | The 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_limited | Too many requests this minute for your plan. Back off until the reset time in the body, then retry. |
| 402 quota_exhausted | This 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_domain | The domain is not a plausible hostname. Send lower-case hostnames of 3 to 253 characters, letters, digits, dots and hyphens only. |
| 404 not_found | We do not hold that domain or technology. Nothing to retry. The lookup is still spent for domain calls. |
| 503 metering_unavailable | The quota could not be read, so nothing was served. Retry in a moment. No lookup was spent. |