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:
POSTURL:
https://api.richapi.ai/api/v1/enrich_profileAuthentication:
x-api-keyheaderContent type:
application/jsonResponse: synchronous JSON
Cost: 1 credit per call, 2 with
include_social_metrics
How to send a Profile Enrichment request
Copy the API key from the RichAPI dashboard.
Set the
x-api-keyheader to that API key.Set the
Content-Typeheader toapplication/json.Put the LinkedIn profile URL in the
urlfield of the request body.Send the request to
https://api.richapi.ai/api/v1/enrich_profile.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 |
| string | Yes |
| The LinkedIn profile URL of one person. Example: |
| boolean | No |
| Adds follower and connection counts in |
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 |
| string | First name |
| string | Last name |
| string | LinkedIn headline |
| string | Location text |
| string | About / summary section |
| string | Profile picture URL |
| string | Canonical LinkedIn URL |
| string | Current employer name |
| string | Current job title |
| array | Work experience entries (company, title, dates) |
| array | Education entries (school, degree, dates) |
| array | Listed skills |
| array | Languages spoken |
| 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 |
| The profile data is in the response. | Read the response fields. |
| The request body failed validation. | Correct the parameter that the error message names. The |
| The API key is missing, wrong or revoked. | Send a valid key in the |
|
| Buy credits in the RichAPI dashboard, or ask the organization owner to raise the spend limit, then send the request again. |
|
| Call |
| The LinkedIn profile or the resource was not found. | Check the |
| Rate limit exceeded (too many requests per second). | Wait for the |
| The API failed. | Send the request again. If the failure repeats, contact support. |
| The upstream provider failed. | Send the request again after a short wait. |
| 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.
