Clay

One HTTP API column fills technologies, a traffic estimate and an employee estimate for every domain in a Clay table. One lookup per row, on your own key.

Before you start

Clay runs the column once per row, so the table size is the number of lookups. Pick the plan by the tables you run:

PlanLookups a monthRequests a minute
Pro2,00060
Business50,000300
Business Plus250,000600

A 5,000-row table on Pro stops at row 2,000 with a 402 and picks up again on the first of the month or when you add a pack of 25,000 lookups from your account page. Business is the plan for tables. Nothing is charged for a row Clay skips.

Set up the column

  1. Create a key on your account page and name it after the Clay workspace. The full key is shown once.
  2. In the Clay table, choose Add enrichment, then HTTP API.
  3. Method GET. Endpoint URL: https://getdomaindata.com/api/v1/enrich
  4. Add one query parameter, input, and set it to your domain column. The column can hold a domain, a full URL or a work email address; we drop the scheme, path, port and a leading www. before the lookup.
  5. Under headers, add Authorization with the value Bearer gdd_live_.... Save it as a headers account in Clay rather than typing it into the column, so the key is stored once, encrypted, and not shown in the column settings.
  6. Under field paths to return, paste the paths below that you want as columns.
  7. In the column's rate limit setting, stay at or under your plan's requests a minute from the table above. If Clay runs faster than that, rows come back 429 with a Retry-After header and Clay waits it out.
  8. Test on one row, then run the table.

Field paths

Every field
data.foundtrue when we hold anything for the row
data.technologies_textevery technology detected, comma-separated
data.technology_counthow many
data.tech_ecommercethe ecommerce platform, when there is one
data.tech_paymentspayment and checkout providers
data.tech_analyticsanalytics and measurement tools
data.tech_email_marketingemail and push marketing tools
data.tech_chat_supportchat and support tools
data.tech_salessales and CRM tools
data.platformthe site platform when it is one we classify
data.estimated_monthly_visitsour estimated visits for the latest month, this hostname only
data.traffic_bandthe range that estimate falls in
data.traffic_monthwhich month the estimate is for
data.employees_rangeour estimated employee band for the organization, as text
data.estimated_employees_lowthe band's lower bound, as a number
data.estimated_employees_highthe band's upper bound; empty with a lower bound means open-ended
data.employees_as_ofthe date of the employee estimate
Every key is present on every row and empty where we hold nothing; Clay leaves the cell blank. There is one data.tech_... list per category, 30 in all, named in the reference.

A real row

gymshark.com, as the API returned it on 2026-10-18. Where a category list is null, the site runs nothing we place in that category.

{ "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" }

What to expect from a table of company domains

Technologies come back for nearly every site we hold. Traffic estimates exist for 70 million hostnames and employee estimates for 2.8 million organizations, so on a list of smaller companies most rows carry technologies, fewer carry a traffic estimate and fewer still an employee estimate. A blank cell means we hold no estimate for that row. It still spends the lookup, the same as a domain we do not hold at all.

The traffic estimate is for the hostname in the row, not for every site the company runs. The employee estimate is for the organization behind the hostname, so every host under one domain carries the same figure. Both carry their month or date, and both are estimates; the site labels them the same way.

If a row comes back red

All errors
401 invalid_keyThe header is missing the key, or the key was revoked. Check the headers account in Clay.
402 quota_exhaustedThis month's lookups are spent. Add a pack on your account page or wait for the first of the month, then rerun the failed rows.
429 rate_limitedClay ran faster than your plan's requests a minute. Lower the column's rate limit setting; the rows retry on their own.
400 bad_domainThe cell held nothing we could read as a hostname. Nothing was spent.