Skip to main content
Glama
LinkedIn Jobs Feed MCP Server

LinkedIn Jobs Feed MCP Server

Search LinkedIn jobs with the employer domain

search_linkedin_jobs
Read-only

Search LinkedIn's public job listings by keywords and location, returning one row per job with title, company, link, posting details, and the employer website domain when it clearly matches.

Instructions

Search LinkedIn jobs by keywords and location and return one row per job with the employer's own website domain attached. Reads only LinkedIn's public guest job search and job posting pages, with no login. Each job row carries title, company, company page, location, posting date, job link, and by default the description, seniority level, employment type, job function, industries, and applicant count. The employer domain comes from a public company name autocomplete, then a web search, and is returned only when it clearly matches (domain_status resolved). Filters: posted within 24h, week, or month; workplace type; experience level; job type; excluded companies. only_new with a state_key returns only jobs earlier runs did not return. One free search row per search and location gives the counts. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per job row returned and once per run start; search rows are free.

Input Schema

NameRequiredDescriptionDefault
keywordsNoOne job search per line, as you would type it in LinkedIn's job search, for example account executive, or sdr manager saas. Up to 50 searches per run (keywords times locations)
only_newNotrue returns only jobs that an earlier run with the same state key did not return. The first run returns every job in the window
job_typesNoOptional. Any of: full_time, part_time, contract, temporary, internship, volunteer, other
locationsNoOptional. One location per line, as LinkedIn's job search takes it: a country (Germany), a city (London, England, United Kingdom), or a region (European Union). Each search runs once per location. Empty searches worldwide
state_keyNoNames the saved state for only new jobs. Use one key per schedule, for example ae-germany-daily
reset_stateNotrue forgets the saved state for this state key
posted_withinNoOnly jobs posted in this window, as LinkedIn dates them
max_charge_usdNoOptional. The run stops before it would charge more than this
include_detailsNotrue reads each job's public posting page. No extra charge
workplace_typesNoOptional. Any of: on_site, remote, hybrid
exclude_companiesNoOptional. Drop jobs whose company name contains one of these, ignoring case, for example staffing agencies you do not want
experience_levelsNoOptional. Any of: internship, entry, associate, mid_senior, director, executive
find_company_domainNotrue looks up each employer's own website domain by name with a web search, and returns it only when the domain clearly matches the name. No extra charge
max_jobs_per_searchNoJob rows returned per search, newest first. Default 100, up to 1000 (LinkedIn shows guests about 1,000 results per search)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations say read-only and open-world, and the description adds what the annotations cannot: no login required, only public guest pages read, APIFY_TOKEN required, billing per job row plus once per run start, search rows free, a max_charge_usd ceiling, and that domains are only returned on a clear match. Error behavior (run ID on failure) is also disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and return shape, then filters, then cost — a sensible order for a 14-parameter tool. It is a dense single paragraph with mild redundancy (the employer-domain provenance is explained twice, once for the company autocomplete and again for find_company_domain).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with no output schema, the description compensates by enumerating the returned fields (title, company, company page, location, posting date, job link, plus default details) and covering auth, cost, and error behavior. Nothing an agent needs before calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries the parameter documentation and a 3 baseline applies. The description reinforces the filter set, the only_new/state_key pairing, and the domain-matching condition, but it adds little syntax or default detail the schema doesn't already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Search LinkedIn jobs by keywords and location") plus the distinguishing output ("one row per job with the employer's own website domain attached"). An agent immediately knows what it gets back that a plain job search wouldn't give.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: filters available, that only_new + state_key yields incremental jobs across scheduled runs, that each search/location pair yields a free count row, and that failures come back as errors with a run ID. It lacks explicit when-not-to-use guidance, but there are no siblings to route against and the cost/free-row hints effectively steer call design.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools