LINKEDIN API

LinkedIn data API for profiles, companies, jobs and posts

Send a profile slug, a company slug, a job URL or a keyword and get structured JSON back. No partner program and no LinkedIn login.

request.ts

import { Bridgly } from "@bridgly/sdk";
const client = new Bridgly({ apiKey: "bgly_YOUR_KEY" });
const res = await client.linkedin.getProfileFromUrl({
memberIdentity: "williamhgates"
});
if (res.type === "success") {
console.log(res.data);
}

npm install @bridgly/sdk

[ ENDPOINTS ]

All 21 LinkedIn endpoints

A profile lookup returns the whole page, not a summary of it: headline, about, location, every experience and education entry, plus skills, certifications, languages, publications, patents, projects and awards. It also says whether the member is open to work or hiring.

Company lookups return headcount and headcount range, industry, headquarters and other locations, follower count, specialties, funding data and similar companies. Job lookups return the full description with seniority, employment type, workplace policy, apply link, and how many people have viewed and applied.

Around those records sits the activity: the posts a member or company published, a single post with its counts, the comments under it, who reacted, and what a given member has commented on or reacted to.

People and companies

Single-record lookups by the slug that appears in the LinkedIn URL.

POST

/linkedin/get-profile-from-url

Full profile: headline, about, experience, education, skills, certifications, open-to-work and hiring flags1 credit per requestDocs →
Request body
memberIdentitystringrequired
The member's public identity — the slug in linkedin.com/in/<memberIdentity>, e.g. "williamhgates".
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"name": "string",
"headline": "string",
"location": "string",
"profilePhotoUrl": "string",
"bannerPhotoUrl": "string",
"about": "string",
"profileUrl": "string",
"openToWork": true,
"hiring": true,
"industry": "string",
"experience": [
{
"title": "string",
"company": "string",
"companyId": "string",
"companyUrl": "string",
"companyLogoUrl": "string",
"employmentType": "string",
"location": "string",
"startDate": "string",
"endDate": "string",
"description": "string",
"industries": [
"string"
]
}
],
"education": [
{
"school": "string",
"schoolId": "string",
"schoolUrl": "string",
"schoolLogoUrl": "string",
"degree": "string",
"fieldOfStudy": "string",
"startDate": "string",
"endDate": "string",
"grade": "string",
"activities": "string",
"description": "string"
}
],
"volunteering": [
{
"role": "string",
"organization": "string",
"cause": "string",
"startDate": "string",
"endDate": "string",
"description": "string"
}
],
"certifications": [
{
"name": "string",
"issuingOrganization": "string",
"issueDate": "string",
"expirationDate": "string",
"credentialId": "string",
"credentialUrl": "string"
}
],
"skills": [
{
"name": "string",
"endorsements": "string"
}
],
"languages": [
{
"name": "string",
"proficiency": "string"
}
],
"publications": [
{
"title": "string",
"publisher": "string",
"publishDate": "string",
"description": "string",
"url": "string"
}
],
"patents": [
{
"title": "string",
"patentOffice": "string",
"patentNumber": "string",
"issueDate": "string",
"description": "string"
}
],
"courses": [
{
"name": "string",
"number": "string"
}
],
"projects": [
{
"name": "string",
"startDate": "string",
"endDate": "string",
"description": "string",
"url": "string"
}
],
"honorsAndAwards": [
{
"title": "string",
"issuer": "string",
"issueDate": "string",
"description": "string"
}
],
"birthday": "string",
"address": "string"
}
}
POST

/linkedin/get-company-from-url

Company page: industry, headcount, headquarters, locations, followers, specialties, funding and similar companies1 credit per requestDocs →
Request body
universalNamestringrequired
The company's LinkedIn universal name — the slug in linkedin.com/company/<universalName>, e.g. "openai".
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"name": "string",
"universalName": "string",
"description": "string",
"website": "string",
"industry": "string",
"companyType": "string",
"foundedYear": 0,
"staffCount": 0,
"staffCountRange": "string",
"specialties": [
"string"
],
"headquarters": {
"line1": "string",
"city": "string",
"geographicArea": "string",
"postalCode": "string",
"country": "string",
"headquarter": true
},
"confirmedLocations": [
{
"line1": "string",
"city": "string",
"geographicArea": "string",
"postalCode": "string",
"country": "string",
"headquarter": true
}
],
"logoUrl": "string",
"bannerUrl": "string",
"linkedinUrl": "string",
"followerCount": 0,
"tagline": "string",
"affiliatedCompanyIds": [
"string"
],
"showcasePageIds": [
"string"
],
"fundingData": {
"numFundingRounds": 0,
"lastFundingRound": {
"fundingType": "string",
"moneyRaised": {
"currencyCode": "string",
"amount": "string"
},
"announcedOn": "string",
"leadInvestors": [
{
"name": "string",
"crunchbaseUrl": "string"
}
],
"numOtherInvestors": 0,
"crunchbaseUrl": "string"
},
"companyCrunchbaseUrl": "string"
},
"similarCompanies": [
{
"id": "string",
"name": "string",
"description": "string",
"logoUrl": "string",
"url": "string",
"industry": "string"
}
]
}
}

Jobs

One posting in full, or a filtered search across open roles.

POST

/linkedin/get-job

Job posting: full description, seniority, employment type, remote flag, apply link, views and applicants1 credit per requestDocs →
Request body
jobUrlstringrequired
The LinkedIn job posting URL — the numeric job id is parsed from it, e.g. "https://www.linkedin.com/jobs/view/4417164255/".
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"jobId": "string",
"jobUrn": "string",
"dashJobUrn": "string",
"jobUrl": "string",
"applyUrl": "string",
"title": "string",
"standardizedTitleUrn": "string",
"standardizedTitleId": "string",
"standardizedTitleName": "string",
"description": "string",
"location": "string",
"geoUrn": "string",
"geoId": "string",
"countryUrn": "string",
"countryCode": "string",
"workRemoteAllowed": true,
"experienceLevel": "string",
"employmentType": "string",
"employmentTypeUrn": "string",
"employmentTypeCode": "string",
"industries": [
{
"industryId": "string",
"name": "string"
}
],
"jobFunctions": [
{
"code": "string",
"name": "string"
}
],
"inferredBenefits": [
"string"
],
"jobState": "string",
"sourceDomain": "string",
"listedAt": "string",
"listedAtEpochMs": 0,
"originalListedAt": "string",
"originalListedAtEpochMs": 0,
"expiresAt": "string",
"expiresAtEpochMs": 0,
"closedAt": "string",
"closedAtEpochMs": 0,
"applies": 0,
"views": 0,
"companyName": "string",
"companyUrn": "string",
"companyId": "string",
"companyUrl": "string",
"companyUniversalName": "string",
"companyStaffCount": 0,
"companyDescription": "string",
"companyLogoUrl": "string"
}
}
POST

/linkedin/search/jobs

Job results with title, company, location, salary when listed and posting date1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
locationstring
Geographic location to filter jobs by, e.g. "San Francisco Bay Area", "India", "Remote".
workplaceTypeenum
Restrict to jobs with this workplace arrangement.
on-site | remote | hybrid
experienceLevelenum
Restrict to jobs at this seniority level.
internship | entry-level | associate | mid-senior | director | executive
jobTypeenum
Restrict to jobs with this employment type.
full-time | part-time | contract | temporary | internship | volunteer | other
datePostedenum
Restrict to posts published within a recent window.
past-24h | past-week | past-month
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"jobs": [
{
"jobUrn": "string",
"jobId": "string",
"jobUrl": "string",
"title": "string",
"companyName": "string",
"companyUrn": "string",
"companyId": "string",
"companySlug": "string",
"companyUrl": "string",
"location": "string",
"salary": "string",
"listedAt": "string",
"listedAtEpochMs": 0,
"imageUrl": "string",
"reposted": true,
"verified": true
}
],
"keyword": "string",
"totalResultCount": 0
}
}

Posts and engagement

What a member or company posted, and how people responded to it.

POST

/linkedin/get-posts/from-profile

A member’s posts with text, images, links, reshares and like, comment and share counts1 credit per resultDocs →
Request body
publicIdstringrequired
The member public identity, e.g. "williamhgates".
startinteger
Pagination offset into the post list. Defaults to 0.
countinteger · 1–10 · default 10
Number of posts to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"posts": [
{
"urn": "string",
"url": "string",
"shareUrn": "string",
"shareAudience": "string",
"text": "string",
"publishedAt": "string",
"postedAt": 0,
"actorName": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"actorHeadline": "string",
"images": [
{
"url": "string"
}
],
"article": {
"title": "string",
"subtitle": "string",
"url": "string",
"imageUrl": "string"
},
"event": {
"title": "string",
"url": "string",
"date": "string",
"location": "string"
},
"job": {
"title": "string",
"company": "string",
"location": "string",
"url": "string"
},
"socialCounts": {
"numLikes": 0,
"numComments": 0,
"numShares": 0,
"reactionTypeCounts": [
{
"reactionType": "string",
"count": 0
}
]
},
"resharedPost": {
"actorName": "string",
"text": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"publishedAt": "string",
"urn": "string",
"url": "string",
"shareUrn": "string"
},
"comments": [
{
"urn": "string",
"text": "string",
"commenterName": "string",
"commenterUrn": "string",
"createdTime": 0,
"parentCommentUrn": "string"
}
]
}
],
"paging": {
"start": 0,
"count": 0,
"total": 0
}
}
}
POST

/linkedin/get-posts/from-company

A company page’s posts with text, media and engagement counts1 credit per resultDocs →
Request body
universalNamestringrequired
The company universal name, e.g. "openai".
startinteger
Pagination offset into the post list. Defaults to 0.
countinteger · 1–10 · default 10
Number of posts to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"posts": [
{
"urn": "string",
"url": "string",
"shareUrn": "string",
"shareAudience": "string",
"text": "string",
"publishedAt": "string",
"postedAt": 0,
"actorName": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"actorHeadline": "string",
"images": [
{
"url": "string"
}
],
"article": {
"title": "string",
"subtitle": "string",
"url": "string",
"imageUrl": "string"
},
"event": {
"title": "string",
"url": "string",
"date": "string",
"location": "string"
},
"job": {
"title": "string",
"company": "string",
"location": "string",
"url": "string"
},
"socialCounts": {
"numLikes": 0,
"numComments": 0,
"numShares": 0,
"reactionTypeCounts": [
{
"reactionType": "string",
"count": 0
}
]
},
"resharedPost": {
"actorName": "string",
"text": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"publishedAt": "string",
"urn": "string",
"url": "string",
"shareUrn": "string"
},
"comments": [
{
"urn": "string",
"text": "string",
"commenterName": "string",
"commenterUrn": "string",
"createdTime": 0,
"parentCommentUrn": "string"
}
]
}
],
"paging": {
"start": 0,
"count": 0,
"total": 0
}
}
}
POST

/linkedin/get-post-detail

One post with its author, text, attachments, reaction breakdown and first comments1 credit per requestDocs →
Request body
activityUrnstringrequired
The post/update to fetch — a `urn:li:activity:<id>`, e.g. "urn:li:activity:7300000000000000000".
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"urn": "string",
"url": "string",
"shareUrn": "string",
"shareAudience": "string",
"text": "string",
"publishedAt": "string",
"postedAt": 0,
"actorName": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"actorHeadline": "string",
"images": [
{
"url": "string"
}
],
"article": {
"title": "string",
"subtitle": "string",
"url": "string",
"imageUrl": "string"
},
"event": {
"title": "string",
"url": "string",
"date": "string",
"location": "string"
},
"job": {
"title": "string",
"company": "string",
"location": "string",
"url": "string"
},
"socialCounts": {
"numLikes": 0,
"numComments": 0,
"numShares": 0,
"reactionTypeCounts": [
{
"reactionType": "string",
"count": 0
}
]
},
"resharedPost": {
"actorName": "string",
"text": "string",
"actorUrn": "string",
"actorPublicIdentifier": "string",
"actorUrl": "string",
"publishedAt": "string",
"urn": "string",
"url": "string",
"shareUrn": "string"
},
"comments": [
{
"urn": "string",
"text": "string",
"commenterName": "string",
"commenterUrn": "string",
"createdTime": 0,
"parentCommentUrn": "string"
}
]
}
}
POST

/linkedin/get-activity-comments

Comments under a post with author, text, time, likes and reply counts1 credit per resultDocs →
Request body
activityUrnstringrequired
The activity to fetch comments for — a `urn:li:activity:<id>`, e.g. "urn:li:activity:7300000000000000000".
countinteger · 1–10 · default 10
Number of comments to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": [
{
"urn": "string",
"activityId": "string",
"commentId": "string",
"parentCommentId": "string",
"text": "string",
"authorName": "string",
"createdTime": 0,
"numLikes": 0,
"numComments": 0
}
]
}
POST

/linkedin/get-post-reactions

Members who reacted to a post, with name, headline, profile URL and reaction type1 credit per resultDocs →
Request body
activityUrnstringrequired
The post/update to fetch reactions for — a `urn:li:activity:<id>`, e.g. "urn:li:activity:7300000000000000000".
countinteger · 1–10 · default 10
Number of reactions to return (1–10). Defaults to 10.
startinteger
Pagination offset into the comment list. Defaults to 0.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": [
{
"reactorName": "string",
"reactorHeadline": "string",
"reactorProfileUrn": "string",
"reactorMemberId": "string",
"reactorPublicId": "string",
"reactorProfileUrl": "string",
"reactorProfileImage": "string",
"reactionType": "string"
}
]
}
POST

/linkedin/get-profile-comments

Comments a member has written, with text, time and the post they were left on1 credit per resultDocs →
Request body
publicIdstringrequired
The member public identity, e.g. "williamhgates".
countinteger · 1–10 · default 10
Number of comments to return (1–10). Defaults to 10.
startinteger
Pagination offset into the comment list. Defaults to 0.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": [
{
"urn": "string",
"text": "string",
"authorName": "string",
"createdTime": 0,
"permalink": "string",
"rootActivityUrn": "string",
"parentCommentUrn": "string"
}
]
}
POST

/linkedin/get-profile-reactions

Posts a member reacted to, with the reaction type, post text, author and counts1 credit per resultDocs →
Request body
publicIdstringrequired
The member public identity, e.g. "williamhgates".
countinteger · 1–10 · default 10
Number of reactions to return (1–10). Defaults to 10.
startinteger
Pagination offset into the comment list. Defaults to 0.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": [
{
"urn": "string",
"reactionType": "string",
"text": "string",
"createdTime": 0,
"permalink": "string",
"rootActivityUrn": "string",
"activityId": "string",
"shareUrn": "string",
"numLikes": 0,
"numComments": 0,
"numShares": 0,
"authorName": "string",
"authorType": "member",
"authorUrn": "string",
"authorProfileUrn": "string",
"authorPublicId": "string",
"authorUrl": "string",
"authorHeadline": "string",
"authorImage": "string"
}
]
}

Search

Keyword search, one endpoint per LinkedIn result type. Each returns the total result count alongside the page of results.

POST

/linkedin/search/all

Mixed results across people, companies and other types1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"results": [
{
"profileUrn": "string",
"publicIdentifier": "string",
"profileUrl": "string",
"memberUrn": "string",
"name": "string",
"headline": "string",
"location": "string",
"summary": "string",
"profilePictureUrl": "string",
"networkDistance": "self",
"degreeBadge": "string",
"verified": true,
"insight": "string",
"type": "person"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/people

Members with name, headline, location and profile URL1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"people": [
{
"profileUrn": "string",
"publicIdentifier": "string",
"profileUrl": "string",
"memberUrn": "string",
"name": "string",
"headline": "string",
"location": "string",
"summary": "string",
"profilePictureUrl": "string",
"networkDistance": "self",
"degreeBadge": "string",
"verified": true,
"insight": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/companies

Companies with industry, location, follower count and description1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"companies": [
{
"companyUrn": "string",
"companyId": "string",
"universalName": "string",
"companyUrl": "string",
"name": "string",
"industry": "string",
"location": "string",
"followersLabel": "string",
"followersCount": 0,
"description": "string",
"logoUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/posts

Posts with text, author, engagement counts and attachments1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
sortOrderenum
Result ordering: "date_posted" for newest-first, "relevance" for LinkedIn ranking.
date_posted | relevance
datePostedenum
Restrict to posts published within a recent window.
past-24h | past-week | past-month
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"posts": [
{
"urn": "string",
"shareUrn": "string",
"url": "string",
"text": "string",
"postedAgo": "string",
"author": {
"name": "string",
"headline": "string",
"profileUrl": "string",
"profileUrn": "string",
"memberUrn": "string",
"imageUrl": "string"
},
"socialCounts": {
"numLikes": 0,
"numComments": 0,
"numShares": 0,
"reactionTypeCounts": [
{
"reactionType": "string",
"count": 0
}
]
},
"content": {
"type": "article",
"title": "string",
"subtitle": "string",
"url": "string",
"imageUrl": "string"
}
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/groups

Groups with member count and description1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"groups": [
{
"groupUrn": "string",
"groupId": "string",
"groupUrl": "string",
"name": "string",
"membersLabel": "string",
"membersCount": 0,
"description": "string",
"logoUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/events

Events with date, location, organizer and attendee count1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"events": [
{
"eventUrn": "string",
"eventId": "string",
"eventUrl": "string",
"name": "string",
"dateLabel": "string",
"location": "string",
"isOnline": true,
"organizer": "string",
"attendeesLabel": "string",
"attendeesCount": 0,
"description": "string",
"imageUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/schools

Schools with location and student and alumni count1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"schools": [
{
"schoolUrn": "string",
"schoolId": "string",
"universalName": "string",
"schoolUrl": "string",
"name": "string",
"location": "string",
"studentsAndAlumniLabel": "string",
"studentsAndAlumniCount": 0,
"description": "string",
"logoUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/courses

LinkedIn Learning courses with author, duration and release date1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"courses": [
{
"courseUrn": "string",
"courseId": "string",
"universalName": "string",
"courseUrl": "string",
"name": "string",
"format": "string",
"duration": "string",
"durationMinutes": 0,
"author": "string",
"releasedDate": "string",
"releasedYear": 0,
"releasedMonth": 0,
"releasedDay": 0,
"thumbnailUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/products

Product pages with category, maker, features and users1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"products": [
{
"productUrn": "string",
"productId": "string",
"universalName": "string",
"productUrl": "string",
"name": "string",
"category": "string",
"maker": "string",
"description": "string",
"topFeatures": "string",
"integrations": "string",
"usedBy": [
{
"companyUrn": "string",
"companyId": "string",
"name": "string",
"companyUrl": "string"
}
],
"usedByOthersCount": 0,
"logoUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
POST

/linkedin/search/services

Service providers with headline, location and services offered1 credit per resultDocs →
Request body
keywordstringrequired
Keyword(s) to search LinkedIn for, e.g. "openai", "software engineer", "fintech".
startinteger
Pagination offset into the result list. Defaults to 0.
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
Response

200 OK · application/json

{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"services": [
{
"profileUrn": "string",
"memberUrn": "string",
"servicePageUrl": "string",
"servicePageId": "string",
"name": "string",
"headline": "string",
"location": "string",
"description": "string",
"services": [
"string"
],
"profilePictureUrl": "string"
}
],
"keyword": "string",
"totalResultCount": 0
}
}
[ WHY NOT THE OFFICIAL API? ]

Why not the official LinkedIn API?

LinkedIn’s official APIs are built for approved partners and for apps acting on behalf of a signed-in member. There is no self-serve way to look up any public profile, company page or job posting by its URL.

Partner approval first

Marketing, Talent and Sales Navigator API access each start with a partner application and a review. Bridgly works as soon as you create an API key.

Only the signed-in member

Sign In with LinkedIn returns the signed-in member’s own name, photo and email. Other members’ profiles, posts and reactions are not part of it.

No people or job search

Regular developer apps cannot search people or jobs. Bridgly has eleven search endpoints, including people, companies, jobs and posts.

[ HOW TO USE IT ]

Your first LinkedIn call

Terminal

curl -X POST "https://api.bridgly.app/linkedin/get-profile-from-url" \
-H "Authorization: Bearer $BRIDGLY_KEY" \
-H "Content-Type: application/json" \
-d '{
"memberIdentity": "williamhgates"
}'
[ USE CASES ]

What people build with LinkedIn data

Enrich a lead or a signup

Turn a LinkedIn URL from a form or a CRM row into current title, employer, location and work history, then score or route the lead on real data instead of what the person typed.

Source candidates

Search people by keyword, pull each profile, and filter on the openToWork flag, skills and tenure in your own code rather than paging through a recruiter seat.

Track hiring as a signal

Search jobs by keyword, location, seniority and workplace type on a schedule. A company opening five data roles in a month says something its press releases do not.

Watch what accounts are saying

Pull recent posts from the companies and people you sell to or compete with, with reaction and comment counts, and hand the text to a model or a dashboard.

[ LIMITS ]

What the LinkedIn API does not do

  • Public data only. Fields a member hides from logged-out visitors, and their email or phone number, are not returned.
  • Read-only. There are no endpoints to post, message, send connection requests or react.
  • List and search endpoints return up to 10 results per call. Page with start to get more.
  • Sales Navigator and Recruiter filters are not available. Search uses LinkedIn’s standard keyword search and job filters.
[ FAQ ]

LinkedIn API questions

Is this the official LinkedIn API?

No. Bridgly is an independent service and is not affiliated with LinkedIn. LinkedIn’s own APIs are limited to approved partners and specific use cases; Bridgly gives you self-serve access with an API key. You are responsible for using the data in line with the laws and terms that apply to you.

Do I need my own LinkedIn account, cookies or proxies?

No. A request contains only what you are looking up, such as a profile slug or a keyword. You never send a session cookie or log in anywhere.

How much does a LinkedIn profile lookup cost?

One credit. List and search endpoints cost one credit per result returned, so a full page of 10 is 10 credits. What a credit costs in dollars depends on your pricing package, and goes as low as $1 per 1,000 credits at volume.

What happens if the profile or company does not exist?

You get a 404 and are not charged. Error responses never consume credits.

Can I filter job search results?

Yes. Job search accepts a location, workplace type (on-site, remote, hybrid), experience level, job type and a posted-within window of 24 hours, a week or a month. Post search can be sorted by date or relevance and limited to the same windows.

How do I get the comments or reactions on a post?

Post detail, comments and reactions take the post’s activity URN (urn:li:activity:<id>). Every post returned by the post lists and post search includes its urn, so list first, then drill in.

[ SAME KEY, OTHER PLATFORMS ]

Your API key and credits work on every platform. See all platforms.

[ ALSO SEARCHED ]

Common terms for LinkedIn API access

  • LinkedIn API
  • LinkedIn data API
  • LinkedIn scraper API
  • LinkedIn profile API
  • LinkedIn company API
  • LinkedIn jobs API
  • LinkedIn posts API
  • LinkedIn people search API
  • LinkedIn API alternative
  • LinkedIn API without partner program

Start pulling LinkedIn data

100 free credits, no card. Your first call takes a minute.

Start free with 100 credits →