LeadLeapData
GET/v1/companies/by-domain/{domain}10 units

Companies - By Domain

Direct canonical lookup. One call, one domain, full enrichment payload. Use when you already know the domain and want everything we have about it.

Single (GET)

curl -H "Authorization: Bearer $LEADLEAP_KEY" \
  https://data.leadleap.net/v1/companies/by-domain/stripe.com

Returns { "domain": "...", "entities": [...] }. The entities array is normally length 0 (we don't know the domain) or 1 (the canonical row). Length > 1 reserved for multi-entity disambiguation when that lands later.

Batch (POST)

Same data, up to 5 domains per request. Costs 10 units flat - the same as a single GET - so a full batch is the cheapest per-domain way to look up a known list. Larger workflows should use /v1/companies/search with country/industry filters instead.

curl -X POST https://data.leadleap.net/v1/companies/by-domain \
  -H "Authorization: Bearer $LEADLEAP_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["stripe.com", "apollo.io", "hubspot.com"]}'

Response shape

Single returns one envelope; batch returns one envelope per requested domain so a missing or failed lookup doesn't take down the whole call.

// GET /v1/companies/by-domain/stripe.com
{
  "domain": "stripe.com",
  "entities": [
    { "domain": "stripe.com", "name": "Stripe", "firm_type": "Financial Infrastructure Provider", "...": "..." }
  ]
}

// POST /v1/companies/by-domain
{
  "results": [
    { "domain": "stripe.com", "entities": [ { ... } ] },
    { "domain": "apollo.io",  "entities": [ { ... } ] },
    { "domain": "unknown.io", "entities": [] }
  ],
  "returned": 3
}

Why 10 units instead of 2. by-domain is a direct PK lookup that bypasses the narrowing-filter requirement of /v1/companies/search. The 5× pricing keeps the endpoint useful for legitimate workflows (~100 prospects = 20 batch calls = 200 units = 2% of daily budget) while making bulk scraping uneconomical (~5.5 years to walk the 1M-row enriched directory at the daily ceiling).