CRM Enrichment API
Most CRM records arrive as a name, an email and a company string somebody typed. Everything a rep needs to act on them, role, seniority, employer, headcount and industry, has to come from somewhere else.
One call per record fills those fields in. Because every call reads the record at that moment, the same call run again in six months is also how you repair the decay.
- 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
The two problems, and only one of them is the obvious one
The obvious one is that records arrive incomplete. A form gives you an email and maybe a company name, so routing rules fall back to defaults, scoring runs on nulls and reps open a new tab to research a lead before every call.
The one that costs more is silent. B2B contact data decays at roughly 2 to 3 percent a month, mostly through job changes, which means a database untouched for a year is around a quarter wrong. Nothing surfaces it: the record still looks complete, the title is just no longer true. You find out from bounced sequences and calls that open with the wrong company.
Both are the same fix. Enrich on the way in, then re-enrich on a schedule, and the fields stay true instead of drifting quietly.
How it works
- 01
Enrich on creation
When a record is created, resolve the person from their professional profile URL and write role, seniority, employer, location and history back onto it. Routing and scoring then run on real values rather than on nulls.
- 02
Attach the account
The profile response carries the employer identifier. One more call turns it into firmographics: industry, headcount, headquarters and domain, which is normally the key you join accounts on.
- 03
Re-check on a schedule
Run the same call over the records you care about, monthly or quarterly. Compare the employer and title you get back against what you stored, and you have a job-change feed for free.
- 04
Act on what moved
A contact who changed company is both a broken record and your warmest lead of the week: someone who already knows your product, now with a new budget. Route those to a rep instead of letting the sequence bounce.
In code
Enrich a record, then its account
// 1. The person
const person = await fetch(
`https://api.fetchin.io/api/v1/profile?url=${profileUrl}`,
{ headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
).then(r => r.json())
// 2. The account, from the employer id the profile just returned
const account = await fetch(
`https://api.fetchin.io/api/v1/company?companyId=${person.profile.companyId}`,
{ headers: { 'X-API-Key': process.env.FETCHIN_KEY } }
).then(r => r.json())
await crm.update(recordId, {
title: person.profile.jobTitle,
employer: person.profile.companyName,
location: person.profile.location,
industry: account.company.industry,
headcount: account.company.employeeCount,
domain: account.company.domain,
enrichedAt: new Date().toISOString(),
})What it changes
Routing that works on the first touch
Territory and owner assignment run on real headcount and headquarters instead of a self-reported company size field nobody fills in honestly.
Scoring on facts
An ICP score built on current title and industry, rather than on whatever fraction of your records happen to have those fields populated.
A job-change feed
Diffing this month against last month tells you who moved. That is a churn risk on one side and a warm inbound on the other.
Fewer bounces
Sequences stop firing at people who left, which protects both the sender reputation and the reps who would otherwise open with the wrong company.
Endpoints this uses
Questions
- What is CRM enrichment?
- CRM enrichment is filling the gaps in your customer records automatically, from an identifier you already hold, so that role, seniority, employer and firmographics are present and current rather than blank or stale. It replaces manual research and periodic list purchases with a call your systems make on demand.
- How often should records be re-enriched?
- Monthly for anything a rep works actively, quarterly for the long tail. Contact data decays a few percent a month, almost entirely through job changes, so the right interval is really a question of how quickly a wrong title costs you something.
- Does this work with Salesforce or HubSpot?
- It is a plain HTTP API, so it works with anything that can make a request: a workflow tool, a scheduled job, a serverless function on a webhook, or your own sync service. There is no app to install and nothing that needs write access to your CRM other than your own code.
- What does enriching a database cost?
- One record is one credit, from $1.00 per 1,000, and a record needing both person and company data is two. Failed lookups are not billed, so a list with dead entries in it does not cost you for the dead ones.
- Can I enrich from an email address?
- The endpoints resolve from a professional profile or company URL, an identifier or a domain. If all you hold is an email, the usual pattern is to resolve the company from the email domain first, which is one call, and go from there.
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.