mcpField
H
HasData Indeed

HasData Indeed

远程服务
hasdata.com商业与营销11今天更新

关于 HasData Indeed

HasData Indeed 是面向需要公开招聘信息的 MCP 客户端的托管只读服务。它可按关键词和地点搜索职位,并读取单条职位的完整内容,以结构化 JSON 返回。

主要功能

  1. 01按关键词和地点搜索职位
  2. 02按发布时间排序并翻页
  3. 03读取职位描述和要求
  4. 04返回薪资及雇佣信息

适用场景

  1. 01查找特定城市的近期职位
  2. 02按薪资筛选招聘信息
  3. 03比较不同地点的职位薪酬
  4. 04查看职位的完整要求和福利

MCP 相关

托管远程服务向 MCP 客户端提供两个只读工具,分别用于职位搜索和职位详情;还提供一个招聘地图提示词及参数取值资源。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.hasdata.com/mcp?apis=indeed
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.hasdata.com/mcp?apis=indeed需要授权
安装包
npm@hasdata/indeed-mcp1.0.8
pypihasdata-indeed-mcp1.0.8

工具

2
参数类型必填说明
petsnumber否宠物数量。
neLatnumber否地图边界框东北角的纬度。提供全部四个边界框坐标后,将在框内搜索房源,而不是按位置搜索。
neLngnumber否地图边界框东北角的经度。
swLatnumber否地图边界框西南角的纬度。
swLngnumber否地图边界框西南角的经度。
adultsnumber否成人数量。
checkInstring是房源的入住日期。
infantsnumber否婴幼儿数量。
checkOutstring否房源的退房日期。
childrennumber否子女数量。
locationstring否用于搜索房源的地点。除非提供完整地图边界框(neLat、neLng、swLat、swLng),否则必填。
nextPageTokenstring否用于获取下一页结果的令牌。

详细介绍

Indeed MCP Server

一个托管的 Model Context Protocol(MCP)服务,为 Claude、Cursor、Windsurf 以及其他任何 MCP 客户端提供两个只读的 Indeed 工具。按关键词和地点搜索职位列表,并以结构化 JSON 格式读取单条职位信息的完整内容,无需 Indeed 开发者账号或合作伙伴审批。

它读取已登出访客可以查看的公开职位信息。

每月免费提供 1,000 个点数,无需银行卡,可调用 Indeed 100 次。

https://mcp.hasdata.com/mcp?apis=indeed

Glama score tool contract MCP Tools

目录

所需条件

一个 MCP 客户端,以及从 控制面板 获取的 HasData API 密钥。创建密钥免费且无需银行卡;免费层级按每次调用 10 个点数计算,每月约可调用 100 次。这是一个远程服务,因此最简单的接入方式是使用 URL 和 x-api-key 标头,无需运行容器,也不需要在任何环节使用 Indeed 开发者账号。仅支持 stdio 的客户端可通过轻量启动器访问该服务。启动器已发布到 npm,包名为 @hasdata/indeed-mcp,也已发布到 PyPI,包名为 hasdata-indeed-mcp,如下所示。

快速开始

所有客户端使用相同的服务 URL。我们会在 Claude Code 和 Claude Desktop 中手动运行。其他配置块遵循各客户端为远程服务指定的格式。

字段值
URLhttps://mcp.hasdata.com/mcp?apis=indeed
传输方式HTTP,可流式传输
身份验证标头x-api-key: HASDATA_API_KEY

支持 OAuth 的客户端可以将相同的 URL 添加为连接器,然后登录,无需将密钥放入配置文件。

Claude Code
claude mcp add --transport http indeed "https://mcp.hasdata.com/mcp?apis=indeed" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

依次选择 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=indeed 并登录。

如果选择配置文件方式,Claude Desktop 只会加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/indeed-mcp 包就是这个启动器,它会从环境中读取密钥。将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "indeed": {
      "command": "npx",
      "args": ["-y", "@hasdata/indeed-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

如果想使用 Python 而不是 Node,可将启动器替换为 PyPI 包,uvx 无需手动安装即可运行它:

{
  "mcpServers": {
    "indeed": {
      "command": "uvx",
      "args": ["hasdata-indeed-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

适用于所有项目的 ~/.cursor/mcp.json,或仅适用于一个项目的 .cursor/mcp.json:

{
  "mcpServers": {
    "indeed": {
      "url": "https://mcp.hasdata.com/mcp?apis=indeed",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json。Windsurf 将此字段称为 serverUrl,而不是 url:

{
  "mcpServers": {
    "indeed": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=indeed",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

工作区中的 .vscode/mcp.json:

{
  "servers": {
    "indeed": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=indeed",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

提示词示例

这些是提示词,不是代码。粘贴一条,Agent 就会自行选择工具。每条提示词都标注了所需的调用次数,因为每次成功调用会消耗 10 个积分。

搜索纽约按日期排序的“python developer”职位,并列出最新的 10 个职位及其公司和薪资。

一次调用,10 个积分。职位列表页本身已包含公司、薪资和发布日期。

获取这次搜索中排名第一的职位的完整描述和要求。

一次调用,10 个积分。职位列表包含职位 URL,详情工具可以直接使用该 URL。

查找奥斯汀的“data analyst”职位,然后获取其中标明薪资的 3 个职位的完整详情。

4 次调用,40 个积分。先调用一次获取职位列表,再为这 3 个职位分别调用一次详情工具。

比较芝加哥和休斯敦发布的“registered nurse”职位的薪资。

两次调用,20 个积分,每个城市各获取一次职位列表。

只有职位发布信息中注明薪资时,职位列表才会显示薪资,因此,“带薪资的职位”提示词会根据该字段进行筛选,而不是假定所有职位都包含薪资。分页每次都会消耗一次调用,通过 start 偏移量进行翻页。

工具

工具返回内容
hasdata_indeed_job_getJobDetails职位名称、公司、地点、薪资/报酬、雇佣类型、发布日期、完整描述、要求/福利和申请 URL。每次调用消耗 10 个积分
hasdata_indeed_listing_getJobListings职位数组,包含请求页面中的职位名称、公司、地点、薪资、发布日期、职位 URL 和 jobKey。每次调用消耗 10 个积分

这两个工具均为只读。下面的示例取自真实调用,但已做精简,数字也会随着 Indeed 更新而变化。请将它们视为结构示例。每个工具名称都链接到相应的端点参考,其中包含完整字段列表。

这些示例展示的是负载,而非完整响应。tools/call 的结果包含一个文本块,该文本块本身是一个 JSON 对象,包含 url、status、text 和 json,抓取的数据位于 json 下。从原始 JSON-RPC 响应中,路径为 result.content[0].text,解析后再访问 .json。聊天客户端会为你解包,而直接与端点交互的代码则不会。

获取 Indeed 职位列表

hasdata_indeed_listing_getJobListings

按关键词和地点搜索结果页面。

参数类型必填说明
keywordstring是搜索词,即求职者会输入的内容
locationstring是城市和州,或 Indeed 接受的任意地点字符串
sortstring默认按 relevance 排序;也可使用 date,按最新发布优先
domainstring国家站点,例如 au.indeed.com。默认使用美国站点
startnumber下一页结果的偏移量,必须是数字,而不是 URL。从上一个响应的 pagination.nextPage 中读取偏移量

返回 searchInformation、jobs 数组、peopleAlsoSearchFor,以及 pagination;其中 nextPage 是下一页的 URL。每个职位包含 title、company、location、url、简短的 description、sponsored、相对日期 date 和绝对日期 isoDate、由 Full-time 和 Hybrid work 等标签组成的 details 数组、benefits 数组,以及职位信息中注明薪资时提供的 salary 对象。

职位列表中的 details 是纯字符串数组。下方的职位详情工具返回的 details 是包含 jobType 和 workSetting 数组的对象。名称相同,但结构不同,因此请根据各自的工具分别读取。

{
  "title": "Hedge Fund Application Developer",
  "company": "TBA",
  "location": "Stamford, CT 06901",
  "url": "https://www.indeed.com/pagead/clk?...",
  "sponsored": true,
  "date": "30+ days ago",
  "isoDate": "2025-06-03T17:22:54.869Z",
  "details": ["Full-time", "Hybrid work"],
  "benefits": ["Health insurance", "401(k)", "401(k) matching"],
  "salary": { "min": 80000, "max": 150000, "type": "YEARLY" }
}
获取 Indeed 职位详情

hasdata_indeed_job_getJobDetails

根据职位 URL 获取完整的职位信息。

参数类型必填说明
urlstring是职位信息的 URL,即职位列表结果中的 url 字段

返回 title、company、location、sponsored、包含 jobType 和 workSetting 数组的 details 对象、存在时提供的 salary 对象,以及职位正文,包括纯文本形式的 description 和保留列表与段落标记的 descriptionHtml。需要保留结构时使用 descriptionHtml;需要向模型提供干净的文本时使用 description。

{
  "title": "Python Developer",
  "company": "Think IT Technologies",
  "location": "New York, NY 10114",
  "sponsored": false,
  "details": { "jobType": ["Contract"], "workSetting": ["In-person"] },
  "salary": { "min": 60.5, "max": 65, "type": "HOURLY" },
  "description": "Overview\nWe are seeking a Python Developer...",
  "descriptionHtml": "<p><b>Overview</b></p><p>We are seeking a Python Developer...</p>"
}

提示词和资源

该服务提供一个提示词,即客户端可直接提供给用户的现成工作流,无需用户自行编写工具调用。

提示词功能
indeed_hiring_map查看某个职位在哪些地点招聘,以及薪资水平。

此外,该服务还提供 4 个资源,每个资源对应一个可接受值为固定列表的参数。读取资源比从被拒绝的调用中摸索可用词汇更省事,而且不消耗积分。每个 URI 的格式为 hasdata://indeed/<parameter>。

参数值选择内容
sort2搜索结果的排序选项。
domain62Indeed 站点的域名(可选)。
datePosted4仅返回在指定天数内发布的职位。
remoteType2仅返回远程(remote)或混合办公(hybrid)职位。在美国,Indeed 会将完全远程的职位关联到国家而非城市,因此请使用全国范围的地点,例如 United States:若指定城市,Indeed 返回的远程职位会很少或没有。

这两个列表均无需 API 密钥即可获取,因此客户端可在用户注册前读取。

错误和失败路径

客户端几乎不会从工具调用中收到 HTTP 错误代码。MCP 层会返回 200,并将失败信息放在结果中,isError 设为 true,原因以文本形式显示。Agent 读取的是一条消息,而不是你可能预期的状态行。

错误的密钥会作为工具输出显示,而不是连接失败。 tools/list 接受任何非空密钥,并返回两个工具,因此客户端可以完成握手并显示绿色状态。第一次工具调用随后会返回 isError: true,文本为 HasData API error: 401 Unauthorized。请留意这段字符串,因为流程前面的任何环节都不会报告此问题。

缺少密钥是唯一真正的 HTTP 错误。 授权会在调用任何工具前执行,连接本身会因 401 而失败。响应中包含 CORS 标头,浏览器客户端可以读取状态,而不会只收到不透明的网络失败。

违反工具架构的参数会在变成抓取请求之前被拒绝。 服务会返回 isError: true,文本为 MCP error -32602: Input validation error,并指出有问题的字段。不会获取任何内容,也不会扣费。

未匹配到任何内容的搜索会返回成功结果,其中 jobs 数组为空,而不是报错。即使关键字和地点组合没有职位空缺,返回结果中的 requestMetadata.status 仍会设为 ok。遍历数组前,请先检查数组长度。

已下架的职位信息会返回 400,且 requestMetadata.status 设为 error。Indeed 会很快使职位信息过期,因此旧搜索中的 URL 可能已失效。

包含数据的结果也会带有 requestMetadata.id,在联系支持时值得提供。

定价、免费套餐和限制

每次成功调用 Indeed 工具需 10 个额度。响应大小不会影响价格。包含 50 个职位的列表页与包含 2 个职位的列表页价格相同。

免费套餐每月提供 1,000 个额度,无需绑定银行卡,可调用 Indeed 工具 100 次。额度会随计费周期续期,因此低频使用的 Agent 可以无限期使用免费套餐。

付费套餐起价为每月 59 美元,提供 200,000 个额度,可调用 20,000 次。调用量越大,单价越低:入门套餐为每 1,000 次调用 1.48 美元,Basic 套餐为 0.60 美元,Growth 套餐各级别为 0.41 美元。当前价格请参阅定价页面。

套餐还决定了并发数。免费套餐允许同时发出 1 个请求,Startup 为 5 个,Basic 为 15 个,Growth 各级别则为 50 至 500 个。对于任何无人值守的任务,请妥善处理超出限制的情况。

返回非 200 状态码的请求不会计费。成功但没有找到结果的调用仍然计费。

工具选择

apis 查询参数决定 Agent 可以看到哪些工具。工具越少,为工具定义消耗的上下文就越少,模型选错工具的机会也越少。

?apis=indeed                     the two tools in this repo
?apis=indeed,glassdoor           add Glassdoor jobs
?apis=indeed,google_serp         add Google search

该参数接受 indeed 这样的提供方名称,也接受 indeed_listing 这样的单个 API 名称。拼写错误的名称会被忽略。如果所有名称都无效,请求会失败并返回 400,响应正文会列出无法识别的名称和所有有效值。移除此参数后,同一端点会公开全部 57 个 HasData 工具。

对比

Indeed 已停用其公开的 Publisher 和 Job Search API。如今,程序化访问需要通过获批的合作关系和 ATS 集成,而非自助申请密钥。对于读取任意搜索条件下的公开职位列表和招聘信息,目前没有开放的官方渠道。

Indeed 官方访问此服务
访问方式合作伙伴或 ATS 审批一个密钥和一个 URL
范围合作关系授权的内容任意公开搜索或招聘信息
设置商务审核无
输出取决于集成方式结构化 JSON,预先解析薪资
写入面向获批合作伙伴的申请流程只读,仅限公开数据

此服务不提供的功能。 不提交申请、不提供雇主控制面板、不提供候选人数据、不提供私密招聘信息。它只读取未登录访客能够看到的内容。

常见问题

是否有官方的 Indeed MCP 服务?

Indeed 未发布此类服务。此服务由 HasData 维护,读取公开页面,因此无需 Indeed 开发者账号。

什么是 Indeed MCP 服务?

这是一种将 Indeed 职位数据作为工具开放、供 AI 客户端调用的服务。客户端通过 Model Context Protocol 发送工具调用,服务获取数据并返回结构化 JSON,然后由模型处理结果。此服务提供两个工具,并在远程运行。

我需要 Indeed API 密钥或合作伙伴账号吗?

不需要。唯一需要的凭据是你的 HasData 密钥。你无需申请 Publisher 账号,因为这些工具读取的是公开的 Indeed 页面。

如何翻阅多于一屏的搜索结果?

将 start 偏移量作为数字传递给职位列表工具,而不是传入 URL。响应会返回 pagination.nextPage,其中的 start 值就是下一页的偏移量。因此,请读取该数字并将其传回,而不要传入 URL。

为什么有时没有薪资信息?

因为招聘信息没有注明薪资。只有在 Indeed 显示了薪资数值时,才会包含 salary 对象。请稳妥地读取该对象。

我可以将此服务与其他 HasData API 一起使用吗?

可以。apis 参数接受一个列表,使用 ?apis=indeed,glassdoor 即可让你的 Agent 同时使用 Indeed 和 Glassdoor。 移除该参数,即可获取全部内容。

合规与个人数据

HasData 仅访问公开可用的数据。平台条款可能会限制自动化访问,你需要自行负责合规。如果收集的数据包含个人信息,请确保根据 GDPR、CCPA 或所在司法辖区的同等规定,具备合法处理依据。

HasData 链接

产品页面和请求构建器Indeed Scraper API
服务文档MCP 服务文档
一个服务中的全部 57 个工具HasData/hasdata-mcp
客户端使用指南MCP 客户端和集成
我们抓取的其他所有内容Indeed Scraper API 及另外 54 项服务
套餐与点数费用套餐与点数费用
密钥与用量HasData 控制面板
npm 上的 Node 启动器@hasdata/indeed-mcp
PyPI 上的 Python 启动器hasdata-indeed-mcp

开发

此仓库包含远程服务的配置和文档。无需构建,也无需容器化。

test/ 中的测试会验证工具契约,也就是此仓库中可能在未提交更改时发生问题的部分。测试会检查 ?apis=indeed 是否恰好返回两个工具、每个工具是否仍声明了必需参数、名称是否未更改,以及正在使用的密钥是否确实可用。最后一项检查会实际调用工具,耗费 10 个额度,这是为了一次能以正确原因失败的金丝雀测试所付出的代价。

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

同一套测试会在每次推送时于 CI 中运行,也会按计划每周运行一次,因为上游工具列表可能在无人修改此仓库的情况下发生变化。失败意味着工具列表发生了变化、密钥已失效,或端点无法访问;断言消息会说明具体原因。

贡献

修正工具表和响应示例是最有价值的贡献,因为这些内容最容易过时。请附上你执行的调用和收到的响应。来自 fork 的拉取请求会在没有密钥的情况下运行测试套件,实时检查则会跳过,而不会导致测试失败。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。