Data catalog / Enrichment

How to pull a full person record from a LinkedIn profile URL

Send a LinkedIn profile URL and get the person back as structured JSON: name, headline, current title and company, location, and the full experience, education, skills and certifications arrays. One source, one flat credit cost, billed on any 2xx.

In short: RichAPI Person Enrichment is a REST endpoint at POST https://api.richapi.ai/api/v1/enrich_profile. Authentication uses the x-api-key header. The request body has one required field, url, which must be a LinkedIn profile URL. It does not accept an email address or a name. A successful response returns firstname, lastname, headline, currentTitle, currentCompany, location, summary, experience, education, skills, certifications, languages, followerCount, connectionCount, profilePicture and linkedinUrl. Pricing is a flat credits_per_call. This is a single-source endpoint, not a waterfall, so billing occurs on any 2xx response including a sparse one. Non-2xx responses never bill. To enrich from an email address instead, call POST /find_linkedin_url_by_email first and pass its result here; that chain is two billed calls. New accounts get 100 free credits and no credit card is required.

Last updated November 4, 2026

Pull a person record from a LinkedIn profile URL

POST /enrich_profile takes one field — a LinkedIn profile URL — and returns the person as JSON: name, headline, current title and company, location, and the full work history, education, skills and certification arrays.

Get 100 free credits — no card

What it does, and what it will not take

The request body is {"url": ".."} and nothing else. A LinkedIn profile URL goes in; a person record comes out.

It does not take an email. It does not take a name plus a company. If your input is an email address, you need two calls: email to LinkedIn URL resolves the address to a profile, and this endpoint enriches that profile. Price the chain as two billed calls, not one, and build it as two steps so you can see which half failed.

The response is wide. Alongside the scalars (firstname, lastname, headline, currentTitle, currentCompany, location, summary, followerCount, connectionCount, profilePicture, linkedinUrl) you get experience, education, skills, certifications and languages as arrays. Flatten this into a CRM contact and you throw most of it away, and the arrays are usually why people call this endpoint at all.

What you are billed for, on every person enrichment call

This endpoint is not a waterfall endpoints. Billing is on HTTP 2xx. A thin 2xx still bills. 4xx and 5xx bill nothing, on any endpoint. The miss-free rule on the email finder, phone finder and email verifier does not apply here.

How to enrich a person — step by step

1. Get a key. Sign up at app.richapi.ai. 100 free credits, no card.

2. POST the profile URL.

curl -X POST https://api.richapi.ai/api/v1/enrich_profile \
  -H "x-api-key: $RICHAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.linkedin.com/in/example/"}'

3. Read the record. Shape and key names below; the values are the OpenAPI example's literal placeholders:

{
  "firstname": "example",
  "lastname": "example",
  "headline": "example",
  "currentTitle": "example",
  "currentCompany": "example",
  "location": "example",
  "summary": "example",
  "experience": [],
  "education": [],
  "skills": [],
  "certifications": [],
  "languages": [],
  "followerCount": 1,
  "connectionCount": 1,
  "profilePicture": "example",
  "linkedinUrl": "example"
}

4. Start from an email instead, if that is what you have. Two calls:

# 1. email -> profile URL
curl -X POST https://api.richapi.ai/api/v1/find_linkedin_url_by_email \
  -H "x-api-key: $RICHAPI_KEY" -H "Content-Type: application/json" \
  -d '{"email": "jane@acme.com"}'

# 2. profile URL -> person record
curl -X POST https://api.richapi.ai/api/v1/enrich_profile \
  -H "x-api-key: $RICHAPI_KEY" -H "Content-Type: application/json" \
  -d '{"url": "https://www.linkedin.com/in/example/"}'

5. Or run either shape from an agent. The hosted MCP server exposes both tools, so the two-step chain is one sentence:

Take this email, find the LinkedIn profile, and tell me their current title and last two roles.

Fields person enrichment returns

Field Type What it is
firstname / lastname string Name, split
headline string The profile headline
currentTitle string Current job title
currentCompany string Current employer
location string Location as shown on the profile
summary string The About section
experience array Work history entries
education array Education entries
skills array Listed skills
certifications array Listed certifications
languages array Listed languages
followerCount integer Followers
connectionCount integer Connections
profilePicture string Image URL
linkedinUrl string Canonical profile URL

What person enrichment costs

Flat 1 credit per call, billed on every 2xx. The email-to-person chain costs this plus email to LinkedIn URL at 4 credits, so 5 credits per person end to end, and both legs bill independently. Credits are prepaid with no seats and no contract; the rate per credit depends on package tier, so take yours from the pricing page.

Two things follow from that. Cache the profile URL once you have resolved it, because re-running the lookup leg on a contact you already resolved is the most common way teams double their bill here. And when you are refreshing records on a schedule, refresh the ones that matter rather than the whole table — the endpoint has no "has this changed" check, so every refresh is a full-price call.

What people use person enrichment for

Keeping CRM contact records from rotting. Titles change, people move companies, and a contact record two years old is mostly fiction. A scheduled refresh on the accounts you are actively working keeps currentTitle and currentCompany honest without a data-entry task for anyone.

Screening inbound applicants or leads against a real work history. The experience array gives you the whole sequence of roles rather than a single current title, which is what you need when the question is "has this person actually done this job before" rather than "what is their title today".

Giving an agent the context to write something specific. An SDR agent that has read summary, skills and the last two experience entries writes a different first line than one working from a name and a company. The record is the prompt context.

Coming from Proxycurl?

Proxycurl's person endpoint was profile-URL-in too, so the migration is mostly field-name mapping rather than a redesign. See the migration notes.

Endpoints related to person enrichment

Person enrichment FAQ

What am I charged for?
Any 2xx. This is a single-source endpoint rather than a waterfall, so a sparse record bills the same as a rich one. A 4xx or 5xx bills nothing.

Can I enrich by email address?
Not in one call. Resolve the email to a profile URL with email to LinkedIn URL, then pass that URL here. Two calls, two charges.

What happens if someone changed their LinkedIn vanity URL?
The stored URL stops pointing at them. This is the quiet failure in every profile-URL-keyed system: you get an error or a different person, not a helpful warning. Store linkedinUrl from each response and write it back, so your stored key follows the profile rather than drifting from it.

Do I get the whole work history or just the current role?
experience is an array of entries, not a single value, and education, skills, certifications and languages are arrays too. If your schema has one job-title column you are discarding most of what you paid for.

How fresh is the data?
Each call is a live fetch at request time rather than a read from a licensed dump refreshed on someone else's schedule. A file bought last quarter has already drifted; a call made now has not.

Can I call this from Claude or Cursor (MCP)?
Yes. The hosted MCP server exposes enrich_profile as a tool with a copy-paste config and no install.

Do I need a credit card?
No. 100 free credits on signup, no card.

Try person enrichment: 100 free credits, no card

Pull your first person record in two minutes. Get 100 free credits

See it in a workflow

Playbooks

Real patterns, recipes, and prompts other builders run on RichAPI

Start free with 100 credits

Developer Docs

Auth, request shape, and error handling

See Documentation

FAQ

Frequently asked questions

Send a LinkedIn profile URL and get the person back as structured JSON: name, headline, current title and company, location, and the full experience, education, skills and certifications arrays. One source, one flat credit cost, billed on any 2xx.
Every endpoint is billed from the same credit pool, at the published rate on /pricing — never a separate contract per endpoint.
Yes — the same endpoint is reachable from an MCP client (Claude, ChatGPT, Cursor, Windsurf) using the same key and credit pool. See /mcp.

Related data