curl -X POST https://api.up2data.ai/v1/profiles/enrich \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": true}'
import requests
resp = requests.post(
"https://api.up2data.ai/v1/profiles/enrich",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": True},
)
profile = resp.json()["data"]
const resp = await fetch("https://api.up2data.ai/v1/profiles/enrich", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://linkedin.com/in/satyanadella", with_followers_and_connections: true }),
});
const { data, meta } = await resp.json();
body, _ := json.Marshal(map[string]any{
"url": "https://linkedin.com/in/satyanadella",
"with_followers_and_connections": true,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/profiles/enrich", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"url": "https://linkedin.com/in/satyanadella",
"public_identifier": "satyanadella",
"urn": "ACoAAAEyX8gBmX0wjgGmBhKd8rC5WYkYlKk",
"full_name": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"location": { "city": "Redmond", "region": "Washington", "country": "United States" },
"current_company": {
"name": "Microsoft",
"url": "https://linkedin.com/company/microsoft",
"title": "Chairman and CEO",
"started_at": "2014-02"
},
"positions": [
{
"title": "Chairman and CEO",
"company": "Microsoft",
"company_url": "https://linkedin.com/company/microsoft",
"started_at": "2014-02",
"ended_at": null
}
],
"education": [
{ "school": "The University of Chicago Booth School of Business", "degree": "MBA" }
],
"skills": ["Cloud Computing", "Leadership"],
"languages": ["English", "Telugu"],
"connections_count": 500,
"followers_count": 11482930,
"scraped_at": "2026-07-07T14:00:04Z"
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98419,
"billed": true,
"reason": "profile_found",
"requestId": "req_8f2ka91x",
"latencyMs": 3810
}
}
{
"error": {
"type": "unprocessable_target",
"message": "This profile is private or has been deleted.",
"requestId": "req_2mm31bb0"
}
}
Profiles
Enrich a profile
Turn any profile URL into a full live record, scraped at request time.
POST
/
v1
/
profiles
/
enrich
curl -X POST https://api.up2data.ai/v1/profiles/enrich \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": true}'
import requests
resp = requests.post(
"https://api.up2data.ai/v1/profiles/enrich",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": True},
)
profile = resp.json()["data"]
const resp = await fetch("https://api.up2data.ai/v1/profiles/enrich", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://linkedin.com/in/satyanadella", with_followers_and_connections: true }),
});
const { data, meta } = await resp.json();
body, _ := json.Marshal(map[string]any{
"url": "https://linkedin.com/in/satyanadella",
"with_followers_and_connections": true,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/profiles/enrich", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"url": "https://linkedin.com/in/satyanadella",
"public_identifier": "satyanadella",
"urn": "ACoAAAEyX8gBmX0wjgGmBhKd8rC5WYkYlKk",
"full_name": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"location": { "city": "Redmond", "region": "Washington", "country": "United States" },
"current_company": {
"name": "Microsoft",
"url": "https://linkedin.com/company/microsoft",
"title": "Chairman and CEO",
"started_at": "2014-02"
},
"positions": [
{
"title": "Chairman and CEO",
"company": "Microsoft",
"company_url": "https://linkedin.com/company/microsoft",
"started_at": "2014-02",
"ended_at": null
}
],
"education": [
{ "school": "The University of Chicago Booth School of Business", "degree": "MBA" }
],
"skills": ["Cloud Computing", "Leadership"],
"languages": ["English", "Telugu"],
"connections_count": 500,
"followers_count": 11482930,
"scraped_at": "2026-07-07T14:00:04Z"
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98419,
"billed": true,
"reason": "profile_found",
"requestId": "req_8f2ka91x",
"latencyMs": 3810
}
}
{
"error": {
"type": "unprocessable_target",
"message": "This profile is private or has been deleted.",
"requestId": "req_2mm31bb0"
}
}
Cost: 1 credit per successful profile · pay only on success
Scrapes the profile live — never from cache — and returns the full record exactly as it appears on the public profile. Typical latency 2–8 seconds. Pure LinkedIn scraping: no email finding, no third-party enrichment blended in.
string
Public profile URL (e.g.
https://linkedin.com/in/satyanadella) or public identifier (satyanadella). Provide url or urn.string
LinkedIn member URN when you already have it from search or engagement endpoints.
string[]
Restrict the response to specific top-level fields (e.g.
["full_name", "headline", "positions"]). Same cost — this trims payload, not price. Listing followers_count or connections_count here also opts into the extra scrape below.boolean
default:"false"
Include
followers_count and connections_count. Off by default because those numbers are a second LinkedIn request, not part of the main profile scrape. Same credit; expect extra latency.Response
object
The profile record.
Show Profile fields
Show Profile fields
string
Canonical profile URL.
string
The URL slug.
string
Numeric LinkedIn member ID.
string
string
The profile’s headline line.
object
city, region, country.object
name, url, linkedin_id, title, started_at, logo_url, industry, headcount.object[]
Full experience history:
title, company, company_url, linkedin_id, position_id, started_at, ended_at, description, skills, company_industry, company_headcount, company_logo_url.object[]
school, degree, field, activities, education_id, school_logo_url.string[]
string
string
When publicly visible on the profile.
string
When publicly visible on the profile.
string
Member hash (
ACo… / ACw…) when the scrape returns it — use for activity, recommendations, and post comments/reactions. Otherwise urn:li:member:{id}.string[]
Language names listed on the profile. Omitted when none are listed.
object[]
name, authority, issued_at, expires_at, url.object[]
title, publisher, published_at, url.object[]
title, number, issued_at.object[]
title, issuer, issued_at.string[]
Profile interests listed publicly.
object[]
name, title, description, url, started_at, ended_at.object[]
Recommendations included in the profile scrape when visible.
string
LinkedIn primary locale returned by the scrape.
boolean
boolean
boolean
Open Profile messaging enabled.
boolean
object
When open to work —
titles, locations, workplace_types, start_timing.integer
Present when
with_followers_and_connections is true (or those keys are listed in fields).integer
Present when
with_followers_and_connections is true (or those keys are listed in fields).string
ISO 8601 — when this scrape ran (i.e. just now).
string
LinkedIn headshot CDN URL.
object
Billing metadata:
creditsUsed, creditsRemaining, billed, reason, requestId.curl -X POST https://api.up2data.ai/v1/profiles/enrich \
-H "X-API-Key: $UP2DATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": true}'
import requests
resp = requests.post(
"https://api.up2data.ai/v1/profiles/enrich",
headers={"X-API-Key": UP2DATA_API_KEY},
json={"url": "https://linkedin.com/in/satyanadella", "with_followers_and_connections": True},
)
profile = resp.json()["data"]
const resp = await fetch("https://api.up2data.ai/v1/profiles/enrich", {
method: "POST",
headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://linkedin.com/in/satyanadella", with_followers_and_connections: true }),
});
const { data, meta } = await resp.json();
body, _ := json.Marshal(map[string]any{
"url": "https://linkedin.com/in/satyanadella",
"with_followers_and_connections": true,
})
req, _ := http.NewRequest("POST",
"https://api.up2data.ai/v1/profiles/enrich", bytes.NewReader(body))
req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
{
"data": {
"url": "https://linkedin.com/in/satyanadella",
"public_identifier": "satyanadella",
"urn": "ACoAAAEyX8gBmX0wjgGmBhKd8rC5WYkYlKk",
"full_name": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"location": { "city": "Redmond", "region": "Washington", "country": "United States" },
"current_company": {
"name": "Microsoft",
"url": "https://linkedin.com/company/microsoft",
"title": "Chairman and CEO",
"started_at": "2014-02"
},
"positions": [
{
"title": "Chairman and CEO",
"company": "Microsoft",
"company_url": "https://linkedin.com/company/microsoft",
"started_at": "2014-02",
"ended_at": null
}
],
"education": [
{ "school": "The University of Chicago Booth School of Business", "degree": "MBA" }
],
"skills": ["Cloud Computing", "Leadership"],
"languages": ["English", "Telugu"],
"connections_count": 500,
"followers_count": 11482930,
"scraped_at": "2026-07-07T14:00:04Z"
},
"meta": {
"creditsUsed": 1,
"creditsRemaining": 98419,
"billed": true,
"reason": "profile_found",
"requestId": "req_8f2ka91x",
"latencyMs": 3810
}
}
{
"error": {
"type": "unprocessable_target",
"message": "This profile is private or has been deleted.",
"requestId": "req_2mm31bb0"
}
}
When you’re not charged
Private/deleted target (422), timeout (504), our error (500), rate limit (429). Full matrix: Pay-on-success.
Rate limit: counts as 1 request against your rate limit.