Enrichment row

The profile, the latest traffic estimate and the latest employee estimate for one domain as a single flat object, built for tools that map JSON paths onto table columns: Clay's HTTP API column, n8n, Zapier, a spreadsheet. Every key is always present and null where we hold nothing. A hostname we hold nothing on is a 200 with found false, not a 404, so a table run does not stop on it.

POST /enrich

Costs 1 lookup

The profile, the latest traffic estimate and the latest employee estimate for one domain as a single flat object, built for tools that map JSON paths onto table columns: Clay's HTTP API column, n8n, Zapier, a spreadsheet. Every key is always present and null where we hold nothing. A hostname we hold nothing on is a 200 with found false, not a 404, so a table run does not stop on it.

Same figures as /domain, /traffic and /employees, under flat names. The traffic history and the exact employee figure are not in this row; the standalone endpoints keep them.

A 429 carries a Retry-After header in seconds. Tools that honor it (Clay, n8n, Zapier) back off on their own.

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

Parameters

NameInTypeRequiredMeaning
inputbodystringyesA domain, a URL or a work email address. We drop the scheme, path, port, a leading www. and the part before an @ ourselves. The same call works as GET /enrich?input=... for tools that only send GET.

Request

curl

curl https://getdomaindata.com/api/v1/enrich \ -H "Authorization: Bearer gdd_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"input":"https://www.gymshark.com/"}'

JavaScript

const KEY = process.env.GDD_API_KEY; const r = await fetch("https://getdomaindata.com/api/v1/enrich", { method: "POST", headers: { Authorization: "Bearer " + KEY, "Content-Type": "application/json" }, body: JSON.stringify({"input":"https://www.gymshark.com/"}), }); 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/enrich", headers=h, json={"input":"https://www.gymshark.com/"}) 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": "gymshark.com", "found": true, "resolves": true, "platform": "shopify", "network": "Shopify", "country_iso": null, "lang_norm": "en", "technologies": [ "Adobe", "Adobe Acrobat Sign", "Afterpay", "Algolia", "Amazon CloudFront", "Amazon Web Services", "Anthropic", "Apple", "Atlassian", "Cloudflare", "Contentful", "Facebook Pixel", "GlobalSign", "Google", "Google Tag Manager", "HSTS", "HTTP/3", "Linkedin Insight Tag", "Mailchimp", "Meta", "Microsoft 365", "Mixpanel", "mParticle", "Next.js", "OneTrust", "Open Graph", "OpenAI", "PayPal", "Proofpoint", "PWA", "React", "SendGrid", "Shopify", "Webpack", "Zoom" ], "technologies_text": "Adobe, Adobe Acrobat Sign, Afterpay, Algolia, Amazon CloudFront, Amazon Web Services, Anthropic, Apple, Atlassian, Cloudflare, Contentful, Facebook Pixel, GlobalSign, Google, Google Tag Manager, HSTS, HTTP/3, Linkedin Insight Tag, Mailchimp, Meta, Microsoft 365, Mixpanel, mParticle, Next.js, OneTrust, Open Graph, OpenAI, PayPal, Proofpoint, PWA, React, SendGrid, Shopify, Webpack, Zoom", "technology_count": 35, "tech_ecommerce": [ "Shopify" ], "tech_payments": [ "Afterpay", "PayPal" ], "tech_website_platforms": [ "Contentful" ], "tech_wordpress": null, "tech_analytics": [ "Google Tag Manager" ], "tech_advertising": [ "Facebook Pixel", "Linkedin Insight Tag" ], "tech_email_marketing": [ "Mailchimp" ], "tech_marketing": null, "tech_chat_support": null, "tech_sales": null, "tech_forms": null, "tech_business_email": [ "Microsoft 365", "Proofpoint" ], "tech_business_collaboration": [ "Adobe", "Atlassian", "Zoom" ], "tech_communications": [ "SendGrid" ], "tech_hosting": [ "Amazon Web Services" ], "tech_cdn": [ "Amazon CloudFront", "Cloudflare" ], "tech_security": [ "Apple", "GlobalSign", "HSTS" ], "tech_privacy": [ "OneTrust" ], "tech_web_servers": [ "HTTP/3" ], "tech_languages_frameworks": null, "tech_frontend_frameworks": [ "Next.js", "PWA", "React" ], "tech_javascript_libraries": [ "Webpack" ], "tech_databases": null, "tech_performance": null, "tech_media": null, "tech_social_media_community": [ "Meta" ], "tech_seo": [ "Google", "Open Graph" ], "tech_fonts_icons": null, "tech_developer_tools": null, "tech_other": [ "Adobe Acrobat Sign", "Algolia", "Anthropic", "Mixpanel", "mParticle", "OpenAI" ], "estimated_monthly_visits": 12676275, "traffic_band": "10M-100M", "traffic_month": "2026-09", "estimated_employees_low": 501, "estimated_employees_high": 2000, "employees_range": "501 to 2,000", "employees_as_of": "2026-09-10", "employees_apex": "gymshark.com" } }
FieldTypeMeaning
domainstringThe hostname we looked up, after cleanup.
foundbooleanFalse when every other field is null: no profile, no traffic estimate for the hostname, no employee estimate for its registrable domain. The lookup is spent either way.
resolvesboolean | nullWhether the hostname resolved when last checked.
platformstring | nullThe site platform when it is one we classify (for example shopify).
networkstring | nullThe network or provider the site is served from.
country_isostring | nullTwo-letter country code where we could place the site.
lang_normstring | nullPrimary language code where known.
technologiesstring[] | nullEvery technology we detected on the site, alphabetical.
technologies_textstring | nullThe same list as one comma-separated string, for CRM fields and filters.
technology_countnumber | nullHow many technologies we detected.
tech_<category>string[] | nullThe technologies in one of our 30 categories, one key per category, always present: tech_ecommerce, tech_payments, tech_website_platforms, tech_wordpress, tech_analytics, tech_advertising and so on through tech_other. Null when the stack has nothing in that category.
estimated_monthly_visitsnumber | nullOur estimated visits for the latest month, for this hostname only.
traffic_bandstring | nullThe range the estimate falls in, for example 10M-100M.
traffic_monthstring | nullThe month the estimate is for, YYYY-MM.
estimated_employees_lownumber | nullLower bound of the employee band for the organization behind the hostname.
estimated_employees_highnumber | nullUpper bound; null with a low value means the top band is open-ended.
employees_rangestring | nullThe band as the site prints it, for example 501 to 2,000 or 20,000+.
employees_as_ofstring | nullDate of the employee estimate.
employees_apexstring | nullThe registrable domain the employee estimate belongs to.

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_domainWe could not read a hostname out of what you sent. No lookup was spent. Send a hostname or a URL. We drop the scheme, path, port and a leading www. before the lookup, so https://www.acme.com/about and acme.com are the same request.
503 metering_unavailableThe quota could not be read, so nothing was served. Retry in a moment. No lookup was spent.