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 provider, one flat credit cost, billed on any 2xx.

Try this live — 25 free credits

Last updated September 22, 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 25 free credits — no card](https://app.richapi.ai)**

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](/api/email-to-linkedin) 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 multi-provider waterfall. 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](https://app.richapi.ai). 25 free credits, no card. **2. POST the profile URL.** ```bash 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: ```json { "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: ```bash # 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](/integrations/claude) 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](/api/email-to-linkedin) 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](/pricing). 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](/alternatives/proxycurl).

Endpoints related to person enrichment

- [Email to LinkedIn URL API](/api/email-to-linkedin) — the first leg when you start from an email - [Company enrichment API](/api/company-enrichment) — same input shape, for a company page - [LinkedIn profile search API](/api/linkedin-profile-search) — find the profile URLs in the first place - [Email finder API](/api/email-finder) — a work email for the person you just enriched - [All endpoints](/api) — the full catalog - [Pricing](/pricing) — credit packages and tier rates

Person enrichment FAQ

**What am I charged for?** Any 2xx. This is a single-provider enrichment 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](/api/email-to-linkedin), 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. 25 free credits on signup, no card.

Try person enrichment: 25 free credits, no card

Pull your first person record in two minutes. **[Get 25 free credits](https://app.richapi.ai)**

Frequently asked.

What does how to pull a full person record from a linkedin profile url return?
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 provider, one flat credit cost, billed on any 2xx.
How is this billed?
Every endpoint is billed from the same credit pool, at the published rate on /pricing — never a separate contract per endpoint.
Does this work over MCP as well as REST?
Yes — the same endpoint is reachable from an MCP client (Claude, ChatGPT, Cursor, Windsurf) using the same key and credit pool. See /mcp.

More Enrichment endpoints

See it in a workflow

Try it with 25 free credits.