Lead Scoring and Routing API

A signup form can ask for three fields before conversion starts dropping. That is never enough to know whether the person is your buyer, and self-reported company size is the least reliable field on the internet.

Enriching at the moment of submission gives you real title, seniority, industry and headcount in about a second, which is inside the window where you can still act on it while the visitor is on the page.

requests served per month
40M+requests served per month
uptime
99.9%uptime
median response time
1smedian response time
serving production traffic since
2023serving production traffic since

Qualification that happens too late is not qualification

The common setup enriches in a nightly batch. By morning the lead has been in a generic nurture sequence for twelve hours, the enterprise account that signed up at 9pm got the same automated email as a student, and the rep who should have called sees it a day late.

The alternative is asking for more form fields, which trades conversion for data and gets you answers people typed rather than facts.

At 1 second median, enrichment fits inside the request that handles the signup. Score and route synchronously, and the routing decision is made before the welcome email sends.

How it works

  1. 01

    Resolve at submission

    Take the profile URL or company domain the signup carries and enrich it in the same request that creates the account. One call, about a second.

    Profile enrichment

  2. 02

    Add firmographics

    Headcount, industry and headquarters are what most ICP definitions are actually made of, and they decide both the tier and the territory.

    Company enrichment

  3. 03

    Score against your ICP

    Run your own rules on real values: seniority band, headcount range, industry, geography. No inference, no guessing from an email domain.

  4. 04

    Route while it is warm

    Above the bar, assign an owner and trigger the alert. Below it, self-serve onboarding. The decision is made before the welcome email goes out rather than the next morning.

In code

Score and route inside the signup handler

export async function onSignup({ profileUrl }) {
  const { profile } = await fetch(
    `https://api.fetchin.io/api/v1/profile?url=${profileUrl}`,
    { headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
  ).then(r => r.json())

  const { company } = await fetch(
    `https://api.fetchin.io/api/v1/company?companyId=${profile.companyId}`,
    { headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
  ).then(r => r.json())

  const senior = /chief|head|vp|director|founder/i.test(profile.jobTitle ?? '')
  const sized  = company.employeeCount >= 200

  return senior && sized
    ? routeToSales({ profile, company })   // owner assigned, alert fired
    : routeToSelfServe({ profile })        // onboarding email, no rep
}

What it changes

Shorter time to first touch

The lead that matters is assigned and alerted in the same second it converts, rather than in a batch that runs overnight.

Shorter forms

Stop asking for company size, industry and job title. You can read all three, and the answers are better than the ones people type.

Rep time spent on real accounts

Everything below the bar goes to self-serve automatically, so the humans only see records worth a human.

Tiering that holds up

Pricing and packaging decided on actual headcount rather than on a dropdown, which is also how you avoid the invoice dispute later.

Endpoints this uses

Questions

Is it fast enough to run during signup?
Yes. 1 second at the median and 1.5 at P95, which fits inside a form submission if you enrich in the handler. If you would rather not block, fire it right after and act on the result before the welcome email sends.
What if the lookup fails?
Fall back to your default routing and retry out of band. Failed requests are not billed, so a fallback path costs nothing beyond the code to write it.
How many requests per second do I get?
Self-serve accounts get 5 per second, which covers most inbound volume comfortably. 10 to 100 or more is available on request for spikes, launches and bulk backfills.
Can I backfill leads that are already in the system?
Yes, it is the same endpoint called concurrently up to your rate limit. There is no separate batch interface to learn and no job queue to poll.

Other use cases

Build it this week

1,000 free credits, no card, and failed requests are never billed. Every example on this page runs against the live API.