Recruiting and Candidate Sourcing API

A candidate record is only useful if it holds the things you screen on: what they do now, how long they have done it, where they did it before, what they studied and what they are credited with.

One call returns all of it. Because it reads the profile at that moment, the same call is also the freshness check you run before an outreach batch goes out.

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

Stale candidate data is worse than no candidate data

Sourcing tools built on stored datasets tell you what someone did when the dataset was collected. Send a batch on that and a share of your outreach opens by congratulating people on a job they left, or pitches a role to someone who started a new one last month.

That is not just a wasted send. In a market where candidates hear from a dozen recruiters a week, being visibly out of date is the fastest way to be ignored, and it is the one mistake they will remember your agency for.

The fix is not better copy. It is checking the record at send time instead of trusting a copy of it.

How it works

  1. 01

    Build the record

    Resolve a profile into current role, tenure, full work history, education, skills, languages, certifications and recommendations. That is the screen, in one response.

    Profile enrichment

  2. 02

    Qualify the employer

    Company size and industry put a title in context. A head of engineering at eleven people and at four thousand are different candidates with the same words on the record.

    Company enrichment

  3. 03

    Re-check before sending

    Immediately before an outreach batch, re-read the profiles in it. Anyone whose employer or title changed since you built the list gets pulled out or rewritten.

    Profile enrichment

  4. 04

    Time the approach

    Tenure is in the history. Someone eighteen months into a role is a different conversation from someone who started six weeks ago, and the record tells you which you are having.

In code

Freshness check before an outreach batch

const stillTrue = []

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

  // Moved since the list was built: pull them out rather than send
  // an opener about a job they no longer have.
  if (profile.companyName !== candidate.knownEmployer) {
    flagJobChange(candidate, profile)
    continue
  }

  if (profile.openToWork) candidate.priority = 'high'
  stillTrue.push({ ...candidate, title: profile.jobTitle })
}

await sendOutreach(stillTrue)

What it changes

Openers that are still true

Nobody gets congratulated on a role they left, because the record was checked minutes before the send rather than months before.

Screening on real history

Tenure, progression and education come back in full, so the shortlist is built on the record rather than on a headline.

Signal on who is receptive

The open-to-work flag comes back with the profile, which is a cheap way to sort a long list before anyone writes anything.

One integration for the whole pipeline

Sourcing, screening and the pre-send check all run on the same endpoint, so there is one thing to maintain rather than three vendors.

Endpoints this uses

Questions

Can I search for candidates by keyword?
Not today. These endpoints resolve a profile you already have a URL for, so they cover building and refreshing candidate records rather than discovering them. Sourcing tools generally pair a discovery step of their own with an enrichment API for the record itself.
What comes back on a candidate?
Over 100 attributes: current role and employer, the full position history with dates, education, skills, languages, certifications, test scores, recommendations and location, plus signals like open-to-work.
Is the open-to-work flag reliable?
It reflects what the person has chosen to publish at the moment you call. It is a strong sorting signal rather than a guarantee, and it is worth re-reading rather than storing, because it is exactly the kind of field people toggle.
What does building a candidate list cost?
One credit per profile, from $1.00 per 1,000. A pre-send freshness check over a thousand candidates is a thousand credits, which is normally less than the cost of one badly timed send.

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.