SocialCrawl

LinkedIn

LinkedIn people, company pages, posts, comments, jobs, groups, and the Ad Library through one API key

LinkedIn

The widest surface on SocialCrawl: public member profiles broken out into every sub-resource LinkedIn renders (experiences, educations, skills, certifications, recommendations and more), company pages with their posts, staff, hiring volume and workforce breakdowns, the full jobs surface with LinkedIn's own filters, group feeds, and the LinkedIn Ad Library. If you are building B2B prospecting, recruiting intelligence, or competitor tracking, this is where most of that data lives.

Base URL: /v1/linkedin/...

Three different identifiers, and they are not interchangeable. Member and post endpoints take the page url. Company endpoints take a numeric company_id, which is not in the company URL — resolve it once with /v1/linkedin/company?url=…. Job and group endpoints take id and group_id, which come from a list call. Passing a url to a company_id endpoint is a 400 before billing.

Getting started

Every endpoint is a GET with query parameters and an x-api-key header.

# A person, by profile URL
curl "https://www.socialcrawl.dev/v1/linkedin/profile?url=https://www.linkedin.com/in/williamhgates/" \
  -H "x-api-key: $SOCIALCRAWL_API_KEY"

Company content is a two-step flow, because the numeric id LinkedIn indexes a company by does not appear anywhere in its public URL:

# 1. Resolve the company page to its id
curl "https://www.socialcrawl.dev/v1/linkedin/company?url=https://www.linkedin.com/company/microsoft/" \
  -H "x-api-key: $SOCIALCRAWL_API_KEY"

# 2. List its posts with the id from the response
curl "https://www.socialcrawl.dev/v1/linkedin/company/posts?company_id=1035" \
  -H "x-api-key: $SOCIALCRAWL_API_KEY"

Hold the id: every other company endpoint on this platform takes the same company_id, so you pay for the lookup once and reuse it.

People

GET /v1/linkedin/profile is the entry point for any person — name, headline, location, follower and connection counts, picture. It deliberately returns the condensed profile, the same summary LinkedIn shows above the fold, and each section below it is its own call, so you only pay for what you read.

Career and credentials. Six endpoints cover the CV, each taking the same profile url:

EndpointWhat it adds
/v1/linkedin/profile/experiencesFull role history with dates, locations and descriptions
/v1/linkedin/profile/educationsSchools, degrees, fields of study and years attended
/v1/linkedin/profile/skillsListed skills with the endorsements shown against each
/v1/linkedin/profile/certificationsLicences and certifications with issuer and expiry
/v1/linkedin/profile/honorsAwards, with issuer, date and description
/v1/linkedin/profile/publicationsArticles, papers and books, with publisher and link

Everything else about a person. /v1/linkedin/profile/volunteers covers unpaid and community roles that the paid work history does not, and /v1/linkedin/profile/recommendations returns written references, with type selecting those received or those given. /v1/linkedin/profile/interests/companies and /v1/linkedin/profile/interests/groups list what the member follows, which is a decent proxy for their vendor affinities. /v1/linkedin/profile/contact returns the websites, phone numbers, address, WeChat and Twitter a member has chosen to expose publicly.

Two cheaper reads answer narrow questions without pulling a section. /v1/linkedin/profile/stats returns just the follower and connection numbers, and /v1/linkedin/profile/about returns the month the member joined plus how recently they touched their contact details and photo — the fastest way to tell a maintained profile from an abandoned one.

GET /v1/linkedin/search/people searches all of LinkedIn by name and narrows with title, current_company, past_company, school, industry, geocode_location and profile_language. When you already know the employer, /v1/linkedin/company/people lists that company's staff directly and skips the filter-id round trip.

Companies

Past company and company/posts, three endpoints answer questions that would otherwise take a crawl. /v1/linkedin/company/insights returns headcount broken down by location, school, job function, skill and field of study — a workforce profile without paging through employees. /v1/linkedin/company/job-count returns one number, the count of currently open roles, which is the right shape for tracking hiring volume on a schedule. /v1/linkedin/company/affiliated-pages maps a parent brand to its regional and product pages, each of which has its own id you can then feed back into posts and jobs.

For a single-call company snapshot, GET /v1/linkedin/profile/full?url=… fans out to the company page and its recent posts in parallel and returns both plus computed analytics — average engagement rate, posting cadence, top post, format mix — for a flat 5 credits. Set posts (1-100, default 25) to choose the window the averages are measured over, and include=computed to drop the raw posts array from the payload.

Posts, comments and reactions

GET /v1/linkedin/post?url=… returns one post. Its audience splits three ways, and the split matters because the prices differ: /v1/linkedin/post/comments returns who replied (5cr, with sort_order of relevance or recent), /v1/linkedin/post/reposts returns who amplified it (5cr), and /v1/linkedin/post/reactions returns who reacted, with their name, headline and reaction type (10cr). To open one comment thread, pass its comment_id back alongside the post url to /v1/linkedin/post/comments/replies.

On the publisher side, /v1/linkedin/profile/posts is what a member wrote, /v1/linkedin/profile/reactions is what they engaged with, and /v1/linkedin/profile/comments is what they said under other people's posts — three genuinely different signals about the same person. /v1/linkedin/profile/images and /v1/linkedin/profile/videos narrow a feed to one format, and /v1/linkedin/post/transcript returns the spoken text of a video post (10cr, and only charged when a transcript actually comes back).

GET /v1/linkedin/search/posts?query=… searches public posts and Pulse articles by keyword, with date_posted accepting past_24h, past_week or past_month (underscores, not hyphens). It reads public search results rather than LinkedIn's internal index, so treat its coverage as best effort — it is a monitoring tool, not a complete archive.

Jobs

Four endpoints, all working off the same posting objects. /v1/linkedin/search/jobs searches openings across every employer and /v1/linkedin/company/jobs lists one employer's. Both accept the same filter set — date_posted, experience_level, job_type, remote, easy_apply, sort_by — and both return job ids rather than descriptions. Pass an id to /v1/linkedin/job for the complete posting text, optionally with include_skills.

# 1. Find remote openings posted recently
curl "https://www.socialcrawl.dev/v1/linkedin/search/jobs?query=machine%20learning%20engineer&remote=true&date_posted=past_week" \
  -H "x-api-key: $SOCIALCRAWL_API_KEY"

# 2. Read one posting in full, using a job id from that list
curl "https://www.socialcrawl.dev/v1/linkedin/job?id=$JOB_ID" \
  -H "x-api-key: $SOCIALCRAWL_API_KEY"

Ads

GET /v1/linkedin/ads/search?company=Microsoft searches the LinkedIn Ad Library, and also accepts keyword, companyId, a comma-separated countries list, and a startDate/endDate window. It paginates on paginationToken rather than a page number. Pass a result's Ad Library URL to GET /v1/linkedin/ad for that single ad in full, including its creative images and total impressions.

Groups

GET /v1/linkedin/group returns a group's description, member count, posting rules and public/active flags, and /v1/linkedin/group/posts returns its discussion feed. Both take a numeric group_id, which LinkedIn does not put in the group URL — you get one from profile/interests/groups on a member who belongs to it.

Turning names into filter ids

LinkedIn's people and job search filter on internal ids, not on text. Three cheap resolvers (1 credit each) exist for exactly that: /v1/linkedin/search/location turns a city or country name into a geocode id, /v1/linkedin/search/schools turns a university name into a school id, and /v1/linkedin/search/industry turns an industry name into an industry id. Resolve once, cache the id, and reuse it across every subsequent search.

Endpoints

44 endpoints available.

EndpointPathCredit Tier
LinkedIn company profile, recent posts, and computed analytics in one call./v1/linkedin/profile/fullstandard (5cr)
Resolve an industry name to a LinkedIn industry id/v1/linkedin/search/industrystandard (1cr)
Resolve a location to a LinkedIn geocode id/v1/linkedin/search/locationstandard (1cr)
Search LinkedIn schools/v1/linkedin/search/schoolsstandard (1cr)
Get LinkedIn ad details/v1/linkedin/adadvanced (5cr)
Search LinkedIn ads/v1/linkedin/ads/searchadvanced (5cr)
Get LinkedIn company page with its full About tab/v1/linkedin/companyadvanced (5cr)
List a company's affiliated/showcase pages/v1/linkedin/company/affiliated-pagesadvanced (5cr)
Get aggregate insights about a company's members/v1/linkedin/company/insightsadvanced (5cr)
Get a company's open job count/v1/linkedin/company/job-countadvanced (5cr)
List LinkedIn company posts/v1/linkedin/company/postsadvanced (5cr)
Get LinkedIn group details/v1/linkedin/groupadvanced (5cr)
List posts in a LinkedIn group/v1/linkedin/group/postsadvanced (5cr)
Get LinkedIn job details/v1/linkedin/jobadvanced (5cr)
Get LinkedIn post details/v1/linkedin/postadvanced (5cr)
Get LinkedIn post comments/v1/linkedin/post/commentsadvanced (5cr)
List replies to a LinkedIn comment/v1/linkedin/post/comments/repliesadvanced (5cr)
List reposts of a LinkedIn post/v1/linkedin/post/repostsadvanced (5cr)
Get LinkedIn user profile/v1/linkedin/profileadvanced (5cr)
Get a member's account freshness signals (NOT the profile About section)/v1/linkedin/profile/aboutadvanced (5cr)
List a member's licenses and certifications/v1/linkedin/profile/certificationsadvanced (5cr)
List a member's comments/v1/linkedin/profile/commentsadvanced (5cr)
Get a member's public contact info/v1/linkedin/profile/contactadvanced (5cr)
List a member's education history/v1/linkedin/profile/educationsadvanced (5cr)
List a member's work experiences/v1/linkedin/profile/experiencesadvanced (5cr)
List a member's honors and awards/v1/linkedin/profile/honorsadvanced (5cr)
List a member's image posts/v1/linkedin/profile/imagesadvanced (5cr)
List companies a member follows/v1/linkedin/profile/interests/companiesadvanced (5cr)
List groups a member follows/v1/linkedin/profile/interests/groupsadvanced (5cr)
List a LinkedIn member's posts/v1/linkedin/profile/postsadvanced (5cr)
List a member's publications/v1/linkedin/profile/publicationsadvanced (5cr)
List posts a LinkedIn member reacted to/v1/linkedin/profile/reactionsadvanced (5cr)
List recommendations for a member/v1/linkedin/profile/recommendationsadvanced (5cr)
List a member's skills/v1/linkedin/profile/skillsadvanced (5cr)
Get a member's follower + connection counts/v1/linkedin/profile/statsadvanced (5cr)
List a member's video posts/v1/linkedin/profile/videosadvanced (5cr)
List a member's volunteer experiences/v1/linkedin/profile/volunteersadvanced (5cr)
Search public LinkedIn posts by keyword/v1/linkedin/search/postsadvanced (5cr)
List a company's job postings/v1/linkedin/company/jobspremium (10cr)
List people at a LinkedIn company/v1/linkedin/company/peoplepremium (10cr)
List reactors on a LinkedIn post/v1/linkedin/post/reactionspremium (10cr)
Get a LinkedIn post video transcript/v1/linkedin/post/transcriptpremium (10cr)
Search LinkedIn jobs/v1/linkedin/search/jobspremium (10cr)
Search LinkedIn people/v1/linkedin/search/peoplepremium (10cr)

Read this before you build

LinkedIn has no 1-credit content surface. Unlike most platforms here, every profile, post and company read is advanced (5 credits), and people search, company staff, company jobs, job search, post reactions and video transcripts are premium (10 credits). Only the three id resolvers above are 1 credit. Budget accordingly, and prefer the sub-resource that answers your question over pulling the whole profile family.

Sub-resources are per-person calls, not a bundle. Thirteen profile sub-resources each take the same profile url. Pulling a complete dossier on one member is thirteen billed calls, so decide up front which sections your model actually reads.

Most contact fields are empty. profile/contact returns what the member chose to publish, which for the large majority is nothing. No email address is returned by any endpoint on this platform.

Freshness values are relative text. profile/about reports strings such as Updated over 1 year ago rather than dates, because that is what LinkedIn renders. Parse accordingly, and do not expect to sort on them precisely.

Notes

  • All endpoints use GET with query parameters
  • Authentication via the x-api-key header
  • Responses follow the unified SocialCrawl schema
  • Page-paginated endpoints start at page=1; cursor-paginated ones return a cursor to pass back
  • post/transcript returns transcript: null with transcriptNotAvailable: true when the video has no published transcript, and that call is not charged

Official LinkedIn Resources