Skip to main content
Run cheap, deterministic enrichment on a list of domains. Score accounts from hiring and stack fit, then route hot accounts to outreach or optional /research.

When to use it

  • Trigger-based outbound (“hiring for platform engineers”)
  • Stack-fit scoring for PLG or dev-tool GTM
  • Nightly cron that refreshes account signals in your warehouse

Endpoint sequence

EndpointReturnsBilling
POST /company-tech-stackFrameworks, hosting, analytics, SaaS signalsPer request when found — GET /pricing
POST /company-jobsActive listings, is_hiring, sourcePer request when jobs found
POST /company-contactEmails, phones from websiteWhen emails or phones found
POST /researchNarrative brief on one hot accountPer completed research run

Step 1 — Tech stack

curl --request POST \
  --url "${HUNTR_BASE_URL}/company-tech-stack" \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{ "domain": "vercel.com" }'
Use results for stack-fit rules (e.g. runs React + no competitor tool, uses Segment, on AWS).

Step 2 — Job postings

curl --request POST \
  --url "${HUNTR_BASE_URL}/company-jobs" \
  --header 'content-type: application/json' \
  --header "x-api-key: ${HUNTR_API_KEY}" \
  --data '{ "domain": "vercel.com" }'
Check is_hiring, total, job titles, and source (Greenhouse, Lever, etc.).

Step 3 — Score in your code

Huntr returns raw signals — you own the scoring model:
function scoreAccount({ tech, jobs }) {
  let score = 0;
  if (jobs?.result?.is_hiring) score += 30;
  const titles = (jobs?.result?.jobs ?? []).map((j) => j.title.toLowerCase());
  if (titles.some((t) => t.includes("platform") || t.includes("infrastructure"))) score += 25;
  const names = (tech?.result?.technologies ?? []).map((t) => t.name.toLowerCase());
  if (names.some((n) => n.includes("kubernetes"))) score += 20;
  return score;
}
Persist scores and timestamps. Re-scan on a schedule (weekly is common).

Step 4 — Optional research on hot accounts only

When score >= threshold, call /research once per account for narrative angles — not on every domain in the list.
{
  "prompt": "We sell CI/CD optimization to platform teams. Summarize why Vercel may be hiring for platform roles and suggest outreach angles based on their stack and open jobs.",
  "tier": "standard"
}

Engineering notes

Parallel calls per domain

You can call company-tech-stack and company-jobs in parallel for each domain. Stay under 5 req/s aggregate.

Input list sources

  • Output of ICP list build
  • CRM export (domain column)
  • CSV upload in your internal tool

When-not-found billing

Some endpoints are free when no data is found. Check GET /pricing for current when-found rules.

Do not research the whole list

Scanning 5,000 domains with /research is the wrong tool. Scan with direct endpoints; research only accounts that pass scoring.

Example output row

{
  "domain": "vercel.com",
  "signal_score": 55,
  "is_hiring": true,
  "open_roles": 12,
  "stack_highlights": ["Next.js", "Kubernetes"],
  "scanned_at": "2026-06-12T10:00:00Z"
}

Next step