LinkdAPI Skill — LinkedIn Data API
Use this skill to access LinkedIn professional data via the LinkdAPI REST API.
Full endpoint reference with params, enums, and response schemas → references/api-ref.md
Structured endpoint manifest (JSON) → references/skills.json
⚠️ Authentication — READ FIRST
| Value |
|---|
| Auth header | X-linkdapi-apikey |
| Base URL | https://linkdapi.com |
| Env var | LINKDAPI_KEY |
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/overview?username=ryanroslansky" | jq .
⛔ NEVER use x-api-key or Authorization: Bearer — they will return 401. The only correct header is X-linkdapi-apikey.
Core Concepts
| Term | Meaning | How to Get |
|---|
username | LinkedIn vanity slug (linkedin.com/in/USERNAME) | From the URL |
urn | Internal LinkedIn ID (ACoAAAA...) | From profile/overview response |
id (company) | Numeric LinkedIn company ID | From companies/company/info or companies/name-lookup |
jobId | Numeric LinkedIn job ID | From job search results |
geoUrn | Location filter ID | From geos/name-lookup |
cursor | Pagination token | From previous response |
Always get URN first when working with profile endpoints that require it.
Endpoint Quick Reference
Profile — /api/v1/profile/
| Endpoint | Params | Use |
|---|
overview | username | Basic info + URN ← start here |
details | urn | Positions, education, languages |
contact-info | username | Email, phone, websites |
about | urn | About section |
full | username or urn | Everything in 1 request |
full-experience | urn | Complete work history |
certifications | urn | Certifications |
education | urn | Education history |
skills | urn | Skills + endorsements |
social-matrix | username | Followers + connections |
recommendations | urn | Given + received |
similar | urn | Similar profiles |
reactions | urn, cursor | Profile reactions |
interests | urn | Interests |
services | urn | Services offered |
username-to-urn | username | Username → URN |
Companies — /api/v1/companies/
| Endpoint | Params | Use |
|---|
name-lookup | query | Search by name |
company/info | id or name | Company details |
company/info-v2 | id | Extended info |
company/similar | id | Similar companies |
company/employees-data | id | Headcount + distribution |
company/affiliated-pages | id | Subsidiaries |
company/posts | id, start | Company posts |
company/universal-name-to-id | universalName | Universal name → ID |
jobs | companyIDs, start | Job listings |
Jobs — /api/v1/jobs/
| Endpoint | Params | Use |
|---|
search | keyword, location, timePosted, workArrangement, geoId, companyIds, jobTypes, experience, salary, start | V1 job search |
job/details | jobId | Job info (open only) |
job/details-v2 | jobId | Job info (all statuses) |
job/similar | jobId | Similar jobs |
job/people-also-viewed | jobId | Related jobs |
job/hiring-team | jobId, start | Hiring team |
posted-by-profile | profileUrn, start, count | Jobs by a person |
Search — /api/v1/search/
| Endpoint | Key Params | Use |
|---|
people | keyword, title, currentCompany, geoUrn, industry, firstName, lastName, start, count | Find professionals |
companies | keyword, geoUrn, companySize, hasJobs, industry, start, count | Find companies |
posts | keyword, sortBy, datePosted, authorJobTitle, fromOrganization, contentType, start | Find posts |
jobs | keyword, workplaceTypes, datePosted, easyApply, companies, locations, experience, salary, under10Applicants, start, count | V2 job search |
services | keyword, geoUrn, serviceCategory, profileLanguage, start, count | Service providers |
schools | keyword, start, count | Schools |
Posts — /api/v1/posts/
| Endpoint | Params | Use |
|---|
featured | urn | Featured posts |
all | urn, cursor, start | All posts paginated |
info | urn | Single post |
comments | urn, start, count, cursor | Comments |
likes | urn, start | Likes |
Comments — /api/v1/comments/
| Endpoint | Params | Use |
|---|
all | urn, cursor | All comments |
likes | urn, start | Comment likes |
Articles — /api/v1/articles/
| Endpoint | Params | Use |
|---|
all | urn, start | All articles |
article/info | url | Article details |
article/reactions | urn, start | Reactions |
Lookups
| Path | Params | Use |
|---|
/api/v1/geos/name-lookup | query | → geoUrn for location filters |
/api/v1/g/title-skills-lookup | query | → skill/title IDs |
/api/v1/g/services-lookup | query | → service category IDs |
Services — /api/v1/services/
| Endpoint | Params | Use |
|---|
service/details | vanityname | Service page |
service/similar | vanityname | Similar services |
System
| Path | Use |
|---|
status/ | Health check (no auth) |
Common Workflows
Lead Enrichment (Profile Research)
# Step 1: Get URN
PROFILE=$(curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/overview?username=TARGET_USERNAME")
URN=$(echo $PROFILE | jq -r '.data.urn')
echo "$(echo $PROFILE | jq -r '.data.fullName') → $URN"
# Step 2: Enrich in parallel
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/full-experience?urn=$URN" | jq '.data.experience[0]' &
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/skills?urn=$URN" | jq '.data.skills[:5]' &
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/contact-info?username=TARGET_USERNAME" | jq '.data' &
wait
# Or use full endpoint (one request, more credits)
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/full?username=TARGET_USERNAME" | jq .data
Company Research
CO_ID=$(curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/companies/company/info?name=google" | jq -r '.data.id')
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/companies/company/employees-data?id=$CO_ID" | jq .data &
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/companies/company/similar?id=$CO_ID" | jq .data &
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/companies/jobs?companyIDs=$CO_ID&start=0" | jq .data &
wait
ICP People Search
GEO_URN=$(curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/geos/name-lookup?query=San+Francisco" | jq -r '.data[0].urn')
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/search/people?keyword=VP+Sales&title=VP+Sales&geoUrn=$GEO_URN&start=0" \
| jq '.data.items'
Job Market Intel
# V2 (richest filters)
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/search/jobs?keyword=Software+Engineer&workplaceTypes=remote&datePosted=1week&easyApply=true" \
| jq .data
# V1 (classic, location string)
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/jobs/search?keyword=Marketing+Manager&location=London&timePosted=1week&workArrangement=hybrid" \
| jq .data
Content Research
# Posts by a profile
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/posts/all?urn=$URN&start=0" | jq .data
# Search posts by keyword
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/search/posts?keyword=AI+marketing&sortBy=date_posted&datePosted=past-week" \
| jq .data
# Articles
curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/articles/all?urn=$URN&start=0" | jq .data
Error Handling
All responses: { "success": bool, "statusCode": int, "message": string, "errors": null|string, "data": ... }
RESULT=$(curl -s -H "X-linkdapi-apikey: $LINKDAPI_KEY" \
"https://linkdapi.com/api/v1/profile/overview?username=someuser")
if echo $RESULT | jq -e '.success == true' > /dev/null 2>&1; then
echo "OK: $(echo $RESULT | jq -r '.data.fullName')"
else
CODE=$(echo $RESULT | jq -r '.statusCode')
MSG=$(echo $RESULT | jq -r '.message')
echo "Error $CODE: $MSG"
# 401=invalid key | 404=not found | 429=rate limited (retry with backoff) | 500=server error
[ "$CODE" = "429" ] && sleep 5 && echo "Retry after backoff"
fi
B2B Marketing Playbook
| Goal | Endpoints |
|---|
| Lead enrichment | profile/overview → profile/full-experience + profile/skills + profile/contact-info |
| ICP targeting | geos/name-lookup → search/people with title + currentCompany + geoUrn |
| Competitor intel | companies/company/posts or search/posts?fromOrganization=ID |
| Hiring signals | companies/jobs?companyIDs=ID reveals growth areas |
| Content inspiration | posts/all on top voices + posts/info for engagement stats |
| Warm outreach prep | profile/recommendations + posts/all before messaging |
| Job trigger events | jobs/posted-by-profile to find who is hiring actively |
Reference Files
references/api-ref.md — Full parameter schemas, all enums, and response field descriptions for every endpoint. Read this when you need exact param names or response field shapes.
references/skills.json — Machine-readable manifest of all endpoints (for dynamic tooling or integrations).