LinkedIn: The LinkedIn Data API offers access to detailed information on individuals, companies.
Should I use this
Quality & Safety
Findings (6)
- LOWin get_company_companyId_employees
- LOWin get_company_companyId_employees
- LOWin get_company_companyId_jobs
- LOWin get_jobs_detail_jobId
- LOWin get_posts_postId_comments
- LOWin get_posts_postId_reactions
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"linkedin": {
"url": "https://mcp.jojapi.com/linkedin"
}
}
}Remote endpoints
https://mcp.jojapi.com/linkedinstreamable-httpWhat it can do
Tool inventory
Tools (12)
π’get_person_profile(memberId)
Returns a full profile including experience, education, and skills. Obtain a `memberId` from `/people/search` or `/company/{companyId}/employees`. Note that profiles which are private or outside your network cannot be retrieved; these appear in listings with the name `LinkedIn Member`. Group: Person. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"memberId": {
"type": "string",
"example": "ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ",
"description": "A LinkedIn member identifier, returned by `/people/search` and\n`/company/{companyId}/employees`."
}
},
"required": [
"memberId"
],
"additionalProperties": false
}π’get_person_profile_posts(memberId, start, count)
Returns an empty list if the person has not posted. Group: Person. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"memberId": {
"type": "string",
"example": "ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ",
"description": "A LinkedIn member identifier, returned by `/people/search` and\n`/company/{companyId}/employees`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 10,
"description": "Number of posts per page."
}
},
"required": [
"memberId"
],
"additionalProperties": false
}π’get_people_search(keyword, companyId, geoUrn, title, start, ...)
All filters are optional and can be combined. Returns the same person structure as `/company/{companyId}/employees`. Returns an empty list when nothing matches. Group: Person. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"keyword": {
"type": "string",
"example": "software engineer",
"description": "Free-text search term."
},
"companyId": {
"type": "string",
"description": "Restrict results to people at this company."
},
"geoUrn": {
"type": "string",
"example": "102105699",
"description": "Location code. TΓΌrkiye is `102105699`."
},
"title": {
"type": "string",
"example": "engineer",
"description": "Restrict results by job title."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"additionalProperties": false
}π’get_company(slug, companyId)
Provide either `slug` or `companyId`. If neither is given, the request fails with `400 VALIDATION_ERROR`. Take the `slug` from a `/company/search` result rather than guessing it from the company name β a company's slug often differs from its display name. Group: Companies. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"example": "intel-corporation",
"description": "The company's short name, as it appears in its LinkedIn URL.\nRequired unless `companyId` is provided."
},
"companyId": {
"type": "string",
"example": "1035",
"description": "The company's numeric identifier. Required unless `slug` is provided."
}
},
"additionalProperties": false
}π’get_company_search(keyword, start, count)
Use the `slug` or `companyId` from a result to fetch full details from `/company`, the employee list, or the job list. Group: Companies. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"keyword": {
"type": "string",
"example": "teknoloji",
"description": "Free-text search term."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"keyword"
],
"additionalProperties": false
}π’get_company_companyId_employees(companyId, start, count)
Returns people who list this company as their employer. Results may include private or out-of-network profiles, which appear with the name `LinkedIn Member`. Full profiles cannot be retrieved for those records, so check the name before calling `/person-profile` with the returned `memberId`. Group: Companies. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"companyId": {
"type": "string",
"example": "1035",
"description": "The company's numeric identifier, from `/company/search` or `/company`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"companyId"
],
"additionalProperties": false
}π’get_company_companyId_jobs(companyId, start, count)
Returns an empty list if the company has no open postings. Use the `jobId` from a result with `/jobs/detail/{jobId}`. Group: Companies. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"companyId": {
"type": "string",
"example": "1035",
"description": "The company's numeric identifier, from `/company/search` or `/company`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"companyId"
],
"additionalProperties": false
}π‘get_company_posts(slug, start, count)
Returns the same post structure as `/person-profile/posts`. This endpoint is addressed by `slug` only. Group: Companies. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"example": "microsoft-azure",
"description": "The company's short name, as it appears in its LinkedIn URL."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 10,
"description": "Number of posts per page."
}
},
"required": [
"slug"
],
"additionalProperties": false
}π’get_jobs_search(keyword, geoId, start, count)
Use the `jobId` from a result with `/jobs/detail/{jobId}`. Group: Jobs. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"keyword": {
"type": "string",
"example": "backend",
"description": "Search term for the job title or description."
},
"geoId": {
"type": "string",
"example": "102105699",
"description": "Location code. TΓΌrkiye is `102105699`; worldwide is `92000000`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"keyword"
],
"additionalProperties": false
}π’get_jobs_detail_jobId(jobId)
Returns the full description for a posting. Several fields are only present on some postings; the company name is most reliably taken from the search result that provided the `jobId`. Group: Jobs. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"example": "4458090637",
"description": "The posting's identifier, from `/jobs/search` or `/company/{companyId}/jobs`."
}
},
"required": [
"jobId"
],
"additionalProperties": false
}π‘get_posts_postId_comments(postId, start, count)
Returns an empty list when the post has no comments. Group: Posts. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"example": "7499133701344083968",
"description": "The post's `ugcPostId`, taken from `/person-profile/posts` or `/company/posts`.\nUse `ugcPostId` here, not `activityId`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"postId"
],
"additionalProperties": false
}π‘get_posts_postId_reactions(postId, start, count)
Returns an empty list when the post has no reactions. Group: Posts. Billing per call: 1 Credits.
Input Schema
{
"type": "object",
"properties": {
"postId": {
"type": "string",
"example": "7499133701344083968",
"description": "The post's `ugcPostId`, taken from `/person-profile/posts` or `/company/posts`.\nUse `ugcPostId` here, not `activityId`."
},
"start": {
"type": "integer",
"default": 0,
"description": "Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page."
},
"count": {
"type": "integer",
"default": 25,
"description": "Number of results per page."
}
},
"required": [
"postId"
],
"additionalProperties": false
}Community
Evidence