Career Site Jobs: Workday, Oracle, Greenhouse and 21 more

io.github.danielhagever由 GitHub 账号 danielhagever 发布v1.0.0更新于 Nov 2, 2026

Open jobs from any company's careers site by name or domain, plus a search across 2.5M+ roles

已验证Streamable HTTP可网页运行网页搜索与抓取商业与电商

概览

AI 生成的概览

托管在 Apify 上的 MCP 服务器,可按公司名称或域名抓取企业招聘页上的全部在招职位,覆盖 24 种以上招聘系统。

可以做什么
  • 按公司名称或域名查找公司,并从雇主自己的招聘看板读取全部在招职位
  • 按职位标题关键词、地点关键词、仅远程以及单公司或整次运行的结果上限进行筛选
  • 可选抓取完整职位描述文本,默认关闭,因为数据量明显更大
  • 每个职位返回统一格式的一行,含标题、地点、部门、链接、发布时间、雇佣类型、办公方式及来源招聘系统
  • 返回错误行,说明某家公司为何没有结果
适用场景
适合让助手回答某家具体公司正在招什么岗位,或跨多家指定公司汇总职位,而无需事先知道每家使用哪套招聘系统。
运行要求
远程 MCP 端点 mcp.apify.com,并在 URL 中指定该工具;需通过 Apify OAuth 登录,或以 Authorization Bearer 头提供 Apify API 令牌;需要 Apify 账号,按结果计费。
安装前请注意
需要 Apify API 令牌或 Apify 登录,助手将以你的 Apify 账号身份操作。运行按结果付费,被筛选条件丢弃的行和错误行不计费。数据来自第三方招聘网站,并经 Apify 托管服务传输。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Career Site Jobs: Workday, Oracle, Greenhouse and 21 more,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.danielhagever%2Fcareer-site-jobs/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "career-site-jobs-workday-oracle-greenhou": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=glitchbound/ats-jobs-scraper,glitchbound/workday-jobs-scraper,glitchbound/ats-jobs-search"
    }
  }
}

README

Company Career Page Scraper: every open job from any company, by name or domain

Give it company names or websites (stripe.com, Marriott, Casey's) and get every open job on each company's careers page as one clean row, whichever hiring system the page runs on: Workday, Oracle, ADP, iCIMS, SAP SuccessFactors, Eightfold, Phenom, Greenhouse, Lever, Ashby and 14 more. No board tokens to look up, no API key for any of those systems, no proxy.

This repo is the quick start for the hosted Company Career Page Jobs Scraper on Apify: one HTTP call from the shell, a standard-library Python script, and the setup for using it as a tool in Claude, ChatGPT or Cursor.

Quick start: one curl

Get a free Apify API token at console.apify.com/settings/integrations, then:

bash
export APIFY_TOKEN=apify_api_...curl -s -X POST \  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \  -d '{"companies": ["stripe.com", "Marriott", "Casey'"'"'s"], "titleKeywords": ["manager"], "maxItems": 20}' \  "https://api.apify.com/v2/acts/glitchbound~ats-jobs-scraper/run-sync-get-dataset-items"

The response is a JSON array, one object per job. Stripe is on Greenhouse, Marriott on Oracle, Casey's on ADP; you did not need to know any of that. For runs longer than five minutes, start the run and fetch the dataset when it finishes.

Quick start: Python

example.py uses only the standard library and writes a CSV:

bash
python3 example.py --company stripe.com --company Marriott --company "Casey's" --title manager --max 6python3 example.py inputs/security-roles.json

A real run of the first command:

6 jobs written to jobs.csv  Stripe: AEO and GEO Marketing Manager (Remote in the US)  Stripe: AI Solutions Program Manager, Finance (SEA, SF, NYC, CHI)  Marriott: Revenue Manager (LONDON, United Kingdom)  Marriott: Analytics Manager (Goa, India)  Casey's: Center Store Manager - Gardner, KS (Gardner, Kansas, United States)

Use it from an AI agent (MCP)

Add this as a connector in Claude or ChatGPT:

https://mcp.apify.com?tools=glitchbound/ats-jobs-scraper

In Cursor or VS Code, the same address goes in mcp.json:

json
{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=glitchbound/ats-jobs-scraper" } } }

The first call asks you to sign in to Apify or takes an API token. Then "what is Stripe hiring for in Dublin?" is one tool call.

It is also listed in the official MCP Registry as io.github.danielhagever/career-site-jobs, together with the Workday and Job Listings tools (server.json).

Input

FieldWhat it does
companiesCompany names or domains: NVIDIA, Home Depot, stripe.com. Each is looked up in a directory of career sites already read, and guessed (then verified against the live board) only when the directory has nothing.
boardsSkip discovery and read a board directly as platform:token, e.g. greenhouse:stripe or lever:palantir. Workday takes its careers URL: workday:https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite.
titleKeywordsKeep roles whose title contains any of these. Plain text, so c++ means c++.
locationKeywordsKeep roles whose location contains any of these, e.g. London.
remoteOnlyKeep remote roles only.
includeDescriptionAlso fetch the description text. Off by default, because some sources are many times heavier with it.
maxResultsPerCompanyCeiling per board (default 1,000).
maxItemsCeiling for the whole run.

Ready-made inputs are in inputs/. Rows your filters drop are not charged, and on large Workday, Oracle, Eightfold, Phenom and Amazon boards a title or city filter is sent to the employer's own search, so it finds every match rather than skimming the newest postings.

Output

Every system names things differently; every row comes back in one shape. One real row from each of the three systems in the run above is in sample-output.json:

json
{  "jobId": "5001234068100",  "title": "Center Store Manager - Gardner, KS",  "location": "Gardner, Kansas, United States",  "departments": ["Store / Field Leadership"],  "url": "https://myjobs.adp.com/caseysstore/cx/job-details?reqId=5001234068100",  "postedAt": "2026-10-25T13:02:33Z",  "employmentType": "full-time",  "company": "Casey's",  "atsPlatform": "adp",  "boardToken": "caseysstore",  "boardUrl": "https://myjobs.adp.com/caseysstore",  "workArrangement": "onsite",  "isRemote": false,  "country": "United States",  "region": "Kansas",  "city": "Gardner"}

atsPlatform says which system each row came from. Error rows ("recordType": "error") say why a company returned nothing and are not charged.

How a name becomes a board

Most scrapers that take a company name can only guess at a board token, which finds startups on Greenhouse or Lever and misses the employers people ask about first: Workday, Oracle, ADP and iCIMS addresses carry ids that no name or domain can be turned into.

So the Actor ships a directory of over 75,000 company names, each mapped to a career site it has already read real postings from, refreshed nightly. A name is looked up there first. Only when the directory has nothing does it derive candidate tokens from the domain, and then it checks each one against the live board: on the systems where a board that does not exist answers 404, a 200 is proof, not a guess.

Some companies run careers software of their own (Google, Apple, Meta, Tesla). For those the run says so and charges nothing, instead of returning some other company's board that happens to share the name.

The systems it reads

SystemExamples of employers it answers by name
WorkdayNVIDIA, Walmart, Salesforce, Disney, Wells Fargo
Oracle Recruiting CloudMarriott, Kroger, JPMorgan Chase, Hilton, Uber
ADPCasey's, PepsiCo Beverages North America
iCIMSCharles Schwab, Liberty Mutual, EMCOR
SAP SuccessFactors (on the employer's own site)EY, Compass Group, Aramark, Union Pacific
EightfoldMicrosoft, Starbucks, Lockheed Martin, Qualcomm
PhenomUPS, RTX, Eli Lilly, United Airlines
RadancyUnitedHealth Group, Comcast, Kaiser Permanente
JibeCostco, H&R Block, PetSmart, AMD
BrassRingHome Depot, Best Buy, Publix, Edward Jones
TaleoValero, Textron
Amazon (its own search)Amazon, AWS
Greenhouse, Lever, AshbyStripe, Airbnb, Palantir, OpenAI, Notion
Workable, Recruitee, Rippling, Teamtailor, Personio, BambooHR, Breezy, JazzHR, Paylocitythe long tail of small and mid-size employers, many in Europe

The raw public endpoint of each of these, with a tested curl, is in job-board-apis.

FAQ

How do I get every open job from a company's career page? Put its name or website in companies. The Actor works out which system the careers page runs on and reads that system's own job feed, so you never need the board's URL or token.

Does it work for the biggest employers? Yes, that is what the directory is for. Each board gives up to 1,000 roles by default; raise maxResultsPerCompany and a 20,000-job board such as Costco's is read in full. A title or city filter goes to the employer's own search, so it finds every match either way.

Why not just scrape Indeed or Glassdoor? They have no public jobs API and block automated requests at the edge. They also aggregate from these same career pages, so the source is fresher.

What does it cost? It is paid per result; rows dropped by your filters and error rows are not charged. The current rate for your plan is on the Actor page.

I want what is new, not everything. Job Listings API searches the whole index by title, place or salary, with newWithin for only the roles that appeared since the last daily refresh.

Related

Questions, or a company that does not resolve? Open an issue here or on the Actor page.

License

MIT

来源:README.md,提交 d8e1d21

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v1.0.0最新Oct 26, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分