Jobs MCP Server – EU, Remote & ATS Job Search for AI Agents
Pricing
from $5.00 / 1,000 tool calls
Jobs MCP Server – EU, Remote & ATS Job Search for AI Agents
Job-search MCP server for Claude, ChatGPT & Cursor: German federal job board (Arbeitsagentur), EURES (2M EU & Swiss jobs), Jobicy, Remote OK, Arbeitnow, plus any company's Greenhouse, Lever, Ashby, Workable or SmartRecruiters board. Attribution-safe. Pay per call.
Pricing
from $5.00 / 1,000 tool calls
Rating
0.0
(0)
Developer
Cemal Atakli
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Give Claude, ChatGPT, Cursor or your own agent job-search tools over MCP. One server searches official and terms-cleared job sources:
- Bundesagentur für Arbeit (Jobbörse): the German federal job board, about 1M jobs, through its official API.
- EURES: about 2M vacancies in 30 EU/EEA countries and Switzerland, run by the European Labour Authority.
- Company career boards on Greenhouse, Lever, Ashby, Workable and SmartRecruiters. Pass a company slug, a board URL or just the company website.
- Jobicy, Remote OK and Arbeitnow, remote and EU job feeds whose terms allow re-use with credit.
It does not scrape LinkedIn, Indeed or Google Jobs. It needs no API key apart from your Apify token, and you pay only for calls that return something.
Tools
| Tool | What it does |
|---|---|
search_jobs | Search jobs by keyword, country (ISO code or name), city, remote, posted_since and source. With sources: auto, the server picks the sources: the Arbeitsagentur, EURES and Arbeitnow for Germany, EURES for other EU countries, and the remote feeds for remote: true. Each result shows the total number of matches per source. |
company_jobs | Every open job at one company, read from its official career board (Greenhouse, Lever, Ashby, Workable, SmartRecruiters). You can filter by keyword, country, city, remote and date. Results include the department, workplace type, salary (when the company publishes it) and the company's own apply link. |
job_details | The full description, salary, contract, deadline, required languages and skills (EURES) and apply link for one job id. |
count_jobs | Hiring and demand signals. For a search, it gives totals per source, with EURES broken down by country or region and Arbeitsagentur by city, profession and working time. For one company, it breaks open jobs down by department, location, workplace and employment type. |
list_sources | The coverage, terms and attribution of each source. Free. |
Each job carries id, title, company, location, country, remote, postedAt, employmentType, salary (when given), applyUrl, sourceUrl, source and attribution.
Use cases
- Job-search assistants: "Find remote DevOps jobs posted this week that are open to people in Spain."
- Recruiting and sales intelligence: "How many engineers is OpenAI hiring, and in which cities?" or "Which companies in Berlin are hiring Python developers?"
- Labour-market research: "How many nursing vacancies are open in the Netherlands, and in which regions?" (EURES totals by region, Arbeitsagentur totals by profession.)
- Career agents and relocation tools: search the official EU job boards in several countries with one tool.
- Automations in n8n, Make or Zapier, or scheduled batch runs that send new jobs to Slack or a sheet.
Connect it to your AI client (MCP)
The server runs in Apify Standby mode and speaks MCP over Streamable HTTP:
https://gazidev--jobs-mcp-server.apify.actor/mcp
Authenticate with your Apify API token (Authorization: Bearer <APIFY_TOKEN>).
Claude Desktop / Cursor (mcp.json):
{"mcpServers": {"jobs": {"url": "https://gazidev--jobs-mcp-server.apify.actor/mcp","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Claude Code: claude mcp add --transport http jobs https://gazidev--jobs-mcp-server.apify.actor/mcp --header "Authorization: Bearer YOUR_APIFY_TOKEN"
It also works through the Apify MCP server and with any client that supports remote MCP servers, such as the OpenAI Agents SDK, LangChain or n8n.
Query tips
countryacceptsde,fr,nl,pl,es,ch,us, or names like"Germany". Outside the EU/EEA,search_jobsreturns remote jobs that are open to that country. Usecompany_jobsfor specific employers anywhere.posted_sinceaccepts a number of days (7),"24h","2w"or a date ("2026-10-01").keywordmatches every word you give. UseORfor alternatives, for example"data engineer OR analytics engineer". German keywords work best on the Arbeitsagentur, for examplePflegefachkraftorElektriker.company_jobsacceptsgreenhouse:stripe,lever:palantir,ashby:openai,https://jobs.lever.co/palantir, or a website such aslinear.app, from which the server detects the board.
Batch mode (normal Actor run)
You can also start the Actor like any other Actor, from the Console, the API, a schedule or an integration. Pick a tool and pass arguments, or list several calls. Each job becomes one dataset row.
{"tool": "search_jobs","arguments": { "keyword": "python", "country": "de", "posted_since": 14, "limit": 20 }}
{"calls": [{ "tool": "search_jobs", "arguments": { "keyword": "data engineer", "remote": true } },{ "tool": "company_jobs", "arguments": { "company": "greenhouse:stripe", "country": "ie" } },{ "tool": "count_jobs", "arguments": { "keyword": "nurse", "country": "nl" } }]}
Output example (dataset row)
{"tool": "search_jobs","status": "ok","id": "arbeitsagentur:12265-271357_JB5283341-S","title": "Softwareentwickler Python/C# (m/w/d)","company": "FERCHAU GmbH Niederlassung Friedrichshafen","location": "88046, Friedrichshafen","country": "DE","postedAt": "2026-10-27T00:00:00+00:00","employmentType": "full-time","applyUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12265-271357_JB5283341-S","sourceUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12265-271357_JB5283341-S","source": "Bundesagentur für Arbeit (Jobbörse)","attribution": "Source: Bundesagentur für Arbeit, Jobbörse (arbeitsagentur.de). Link to sourceUrl.","details": { "sourceKey": "arbeitsagentur", "profession": "Softwareentwickler/in", "offerType": "job" }}
A count_jobs call for one company returns, for example: {"company": "OpenAI", "ats": "ashby", "totalOpenJobs": 811, "byDepartment": {"Go To Market": 153, "Applied AI": 118, ...}, "byLocation": {"San Francisco": 570, "New York City": 98, ...}}.
Pricing
Pay per event, with no subscription:
| Event | Price | When |
|---|---|---|
tool-call | $0.005 | A successful search_jobs, company_jobs, job_details or count_jobs call that returns a result |
job-returned | $0.0003 | Each job record returned by search_jobs or company_jobs |
| Actor start | $0.00005 | Once per run or Standby session |
Failed calls, calls that find nothing, invalid input and list_sources are free. A search that returns 20 jobs costs $0.011. When your maximum charge for a run is reached, the job list is cut short and further calls are refused, so you never pay more than you set.
Compared with other job MCP servers on Apify (November 2026)
| Actor | Sources | Price |
|---|---|---|
| This server | Arbeitsagentur, EURES, 5 ATS, Jobicy, Remote OK, Arbeitnow | $0.005 per call + $0.0003 per job |
| India Jobs MCP | Indian job platforms | $0.035–0.475 per tool call |
| Google Jobs scraper ("MCP-ready") | Google Jobs | $0.003 per job |
| LinkedIn Jobs MCP Server | not listed |
Data sources and attribution
- Bundesagentur für Arbeit: the official Jobsuche API. Each job links to its Jobbörse page.
- EURES: © European Labour Authority. Re-use is authorised if ELA is acknowledged as the source, so each EURES job carries
sourceandattribution. Requests are spaced 10 seconds apart, as europa.eu's robots.txt asks. - Greenhouse, Lever, Ashby, Workable and SmartRecruiters: the public job-board APIs behind the companies' own career pages. Links go to the company's board.
- Jobicy: redistribution is allowed with credit, and apply links must point to the original Jobicy listing, which
applyUrldoes. Responses are cached for 1 hour. - Remote OK: link back to the Remote OK listing and mention Remote OK. Only the latest ~100 public jobs are available. Cached for 30 minutes.
- Arbeitnow: free public API, used with a link back. Cached for 30 minutes.
- Not used: Himalayas and Remotive, whose terms forbid passing their jobs to other boards or aggregators, and LinkedIn, Indeed and Google Jobs.
When you show jobs to users, keep source, sourceUrl and applyUrl unchanged.
FAQ
Which countries are covered? Germany in depth (Arbeitsagentur, EURES and Arbeitnow), all 30 EURES countries (EU, Iceland, Liechtenstein, Norway and Switzerland), remote jobs worldwide, and any company on the five supported ATS platforms, wherever it hires.
Why do totals differ from the number of jobs returned? totalAvailable is the number of matches at the source. A call returns up to limit jobs, and you can raise limit (max 100) or narrow the query.
Are there duplicates? Many German employers post on both the Arbeitsagentur and EURES. Results are de-duplicated by title and company within a call.
Is the UK covered? The UK is not part of EURES. Use company_jobs for UK employers, or search_jobs with remote: true.
Is the data fresh? The Arbeitsagentur, EURES and company boards are queried live. The remote feeds are cached for 30–60 minutes because of their polling rules.
Use with AI agents / Apify MCP
This Actor is an MCP server. Connect it directly (see above), or add it through mcp.apify.com next to other Apify Actors. In batch mode, call it from the Apify API, the Python or JS client, or any integration.