Skip to main content

Profile Enrichment API

Written by Kadri - RichAPI Support Team

POST /enrich_profile • Credits: 1 credit per call, plus 1 credit with include_social_metrics

The RichAPI Profile Enrichment API turns one LinkedIn profile URL into structured person data. Send a POST request to /enrich_profile and the response returns name, headline, location, experience, education and skills. One call costs 1 credit, which is $0.02. Follower and connection counts cost 1 more credit through include_social_metrics.

What Profile Enrichment does

Profile Enrichment reads a LinkedIn person profile and returns the data as JSON. A lead list often holds only a LinkedIn URL and no other detail. Profile Enrichment fills that record with the name, the job title, the employer and the full work history. The endpoint is synchronous. The response arrives in the same HTTP call, so the request needs no polling and no webhook. Profile Enrichment covers one person profile per call.

Where do I send a Profile Enrichment request?

  • Method: POST

  • URL: https://api.richapi.ai/api/v1/enrich_profile

  • Authentication: x-api-key header

  • Content type: application/json

  • Response: synchronous JSON

  • Cost: 1 credit per call, 2 with include_social_metrics

How to send a Profile Enrichment request

  1. Copy the API key from the RichAPI dashboard.

  2. Set the x-api-key header to that API key.

  3. Set the Content-Type header to application/json.

  4. Put the LinkedIn profile URL in the url field of the request body.

  5. Send the request to https://api.richapi.ai/api/v1/enrich_profile.

  6. Read the profile fields from the response.

CAUTION: Do not put any field other than url and include_social_metrics in the request body. The API rejects the request with 400 and charges no credit.

cURL

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

Python

import requests

response = requests.post(
"https://api.richapi.ai/api/v1/enrich_profile",
headers={
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
json={"url": "https://www.linkedin.com/in/satyanadella"},
timeout=60,
)
response.raise_for_status()

profile = response.json()
print(profile["firstname"], profile["lastname"], "-", profile["headline"])

Node.js

const response = await fetch("https://api.richapi.ai/api/v1/enrich_profile", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://www.linkedin.com/in/satyanadella",
}),
});

const profile = await response.json();
console.log(profile.firstname, profile.lastname, "-", profile.headline);

What parameters does Profile Enrichment accept?

Parameter

Type

Required

Default

Description

url

string

Yes

""

The LinkedIn profile URL of one person. Example: https://www.linkedin.com/in/satyanadella

include_social_metrics

boolean

No

false

Adds follower and connection counts in socialMetrics. 1 extra credit when available.

include_social_metrics is an optional boolean, default false. Set it to true to add a socialMetrics object with the follower count and the connection count. It adds 1 credit, charged only when the metrics are available. When they are not, the response holds socialMetrics: null and a warning, and you pay the base 1 credit. Profile Enrichment accepts no path parameter and no query parameter.

Which fields can the Profile Enrichment request body hold?

The Profile Enrichment request body holds url and, optionally, include_social_metrics. The API rejects every other key with a 400 status and names the key in the error message. The API charges no credit for that failure.

{
"error": "Unknown input field(s): useCache",
"supported_fields": {
"accepted": ["include_social_metrics", "url"],
"required": ["url"]
}
}

useCache is the key that callers send by mistake most often. Some older RichAPI reference material lists it as a parameter, but the live endpoint does not accept it. Profile data can be up to 24 hours old, and you cannot turn the cache off.

What does Profile Enrichment return?

Profile Enrichment returns one JSON object. The response has no wrapper object and no pagination. RichAPI also adds a richapi_meta object with the request ID and the credits charged, as on every endpoint.

The following block is an example response. The field names are exact. The values describe a fictional person and illustrate the shape and the type of each field.

{
"firstname": "Dana",
"lastname": "Whitfield",
"headline": "VP of Revenue Operations at Northwind Analytics",
"location": "Austin, Texas, United States",
"summary": "Revenue operations leader with 12 years in B2B SaaS. I build forecasting models and the data pipelines behind them.",
"profilePicture": "https://media.licdn.com/dms/image/v2/D5603AQF7k2Lm9tQpXw/profile-displayphoto-shrink_400_400/0/1717243200000",
"linkedinUrl": "https://www.linkedin.com/in/danawhitfield",
"currentCompany": "Northwind Analytics",
"currentTitle": "VP of Revenue Operations",
"experience": [
{
"company": "Northwind Analytics",
"title": "VP of Revenue Operations",
"dates": "2021 - Present"
},
{
"company": "Cartway Software",
"title": "Director of Sales Operations",
"dates": "2017 - 2021"
}
],
"education": [
{
"school": "University of Texas at Austin",
"degree": "BS, Management Information Systems",
"dates": "2009 - 2013"
}
],
"skills": [
"Revenue Operations",
"Salesforce",
"SQL",
"Forecasting",
"Go-to-Market Strategy"
],
"languages": [
"English",
"Spanish"
],
"certifications": [
"Salesforce Certified Administrator"
]
}

What does each Profile Enrichment response field mean?

Field

Type

Description

firstname

string

First name

lastname

string

Last name

headline

string

LinkedIn headline

location

string

Location text

summary

string

About / summary section

profilePicture

string

Profile picture URL

linkedinUrl

string

Canonical LinkedIn URL

currentCompany

string

Current employer name

currentTitle

string

Current job title

experience

array

Work experience entries (company, title, dates)

education

array

Education entries (school, degree, dates)

skills

array

Listed skills

languages

array

Languages spoken

certifications

array

Certifications

A field that the LinkedIn profile does not hold comes back empty. An empty array means that the profile lists no entry for that section.

How much does Profile Enrichment cost?

Profile Enrichment costs 1 credit per call, or 2 credits when include_social_metrics is true and the metrics are available. One credit costs $0.02 on the 1,000 and 5,000 credit packs. Larger packs cost less per credit. The cost of 500 calls is 500 credits, and 500 credits cost $10.00.

Calls

Credits

Cost

1

1

$0.02

100

100

$2.00

500

500

$10.00

1,000

1,000

$20.00

10,000

10,000

$200.00

RichAPI reserves the price of the call before it runs: 1 credit, or 2 credits with include_social_metrics. RichAPI commits the credits only for a successful response. For every failure response, RichAPI refunds the reservation.

What errors can Profile Enrichment return?

Status

Meaning

What to do

200

The profile data is in the response.

Read the response fields.

400

The request body failed validation.

Correct the parameter that the error message names. The supported_fields key in the response lists every valid input.

401

The API key is missing, wrong or revoked.

Send a valid key in the x-api-key header.

402

Insufficient credits: the organization has too few credits for the reservation. Or Monthly spend limit reached: the team hit its monthly spend limit.

Buy credits in the RichAPI dashboard, or ask the organization owner to raise the spend limit, then send the request again.

403

Endpoint not available on your plan: this API key has no access to this endpoint.

Call GET /api/v1/my-endpoints to list the endpoints this key can use. Contact support for access.

404

The LinkedIn profile or the resource was not found.

Check the url value. Confirm that the profile is public.

429

Rate limit exceeded (too many requests per second).

Wait for the Retry-After seconds, then retry the request.

500

The API failed.

Send the request again. If the failure repeats, contact support.

502

The upstream provider failed.

Send the request again after a short wait.

504

The upstream provider timed out.

Send the request again after a short wait.

Every error response holds an error field with a plain-language message:

{
"error": "The requested resource was not found."
}

Frequently asked questions

Which LinkedIn URL formats does Profile Enrichment accept?

Profile Enrichment accepts the URL of one public LinkedIn person profile, for example https://www.linkedin.com/in/satyanadella. Send the full URL with the scheme and the /in/ path segment. RichAPI applies no format check on url, so a URL that the provider cannot resolve returns an error instead of a validation message. A LinkedIn URL with a /company/ segment belongs to the Company Enrichment API.

What happens when Profile Enrichment cannot find the profile?

When the provider cannot resolve the LinkedIn URL, Profile Enrichment returns a 404 status and a JSON body with an error field. RichAPI refunds the reserved credit, so a profile that is not found costs nothing. A private profile and a deleted profile both produce this result.

Does a failed Profile Enrichment call cost a credit?

No. RichAPI commits the credit only for a successful response. For every 4xx and 5xx response, RichAPI refunds the credit reservation, so a failure costs $0.00.

Can I set useCache on a Profile Enrichment request?

No. useCache is not a customer parameter, and a request body that holds useCache returns 400 Unknown input field(s): useCache. A response can come from data that is up to 24 hours old. A cached response still costs 1 credit.

Can Profile Enrichment handle many LinkedIn profiles in one request?

No. Profile Enrichment accepts one url value per request and returns one profile. For many profiles in one request, use the Bulk Profile Enrichment API at /enrich_profiles_bulk, which accepts up to 50 profiles and costs 1 credit per result.

What happens when I send Profile Enrichment calls too fast?

When your requests exceed your organization's requests-per-second limit, the API returns 429 with a Too Many Requests error and charges 0 credits. Check the Retry-After header before retrying.

Can I call Profile Enrichment from n8n or an MCP client?

Yes. Profile Enrichment is available in both integrations. The n8n operation name is enrich_profile. The MCP tool name is enrich_profile.

Related articles

Did this answer your question?