~/business/indeed-scraper
Indeed 爬虫——职位、雇主、评价与薪资
抓取 Indeed 职位信息,含完整职位描述与解析后的薪资,并在同一次运行中带回背后的雇主:公司资料、员工评价、薪资表与问答,按 Indeed 自有雇主 ID 关联。支持 62 个国家站点,无需登录。
招聘职位
TypeScriptCrawlee
全球
分类business / 招聘职位
语言TypeScript
技术栈TypeScript, Crawlee
市场全球
输出干净、RAG 就绪的 JSON
核心特性
一次运行拿到 Indeed 的两端——职位与其背后的雇主
按 Indeed 自有雇主 ID 关联,而非按公司名匹配
完整职位描述按基础价计费,批量获取
每个筛选条件都经对照验证——无效的直接移除
62 个国家站点,自动处理货币、语言环境与距离单位
支持定时监控——只返回上次运行之后的新职位
应用场景
- 跨岗位与市场的招聘与人才情报
- 基于解析薪资与雇主薪资表的薪酬对标
- 竞争对手研究——在招人数、评分与招聘节奏
- 招聘聚合平台所需的干净去重数据流
- 获客线索——每条招聘都是一家正在花钱招人的公司
- 按技能清单打分的候选人匹配
输入参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
scrapeMode | string | 可选 | 抓取内容——职位、公司,或两者 |
keywords | array | 可选 | 职位名称或搜索关键词 |
location | string | 可选 | 搜索所在的城市、州或邮编 |
country | string | 可选 | Indeed 国家站点(支持 62 个) |
startUrls | array | 可选 | Indeed 的搜索页、职位页、公司页或薪资页 URL |
includeDescription | boolean | 可选 | 包含完整职位描述(HTML 与纯文本) |
includeCompanyDetails | boolean | 可选 | 同时返回雇主资料、评价、薪资与问答 |
strictMatch | boolean | 可选 | 剔除标题与描述中不含你的关键词的职位(Indeed 会在结果中掺入相关性较弱的职位与赞助职位) |
resumeKeywords | array | 可选 | 来自简历的技能列表;每个职位都会得到 0-100 的匹配分,以及匹配与缺失的技能。不是搜索过滤器 |
onlyNewJobs | boolean | 可选 | 只返回此前运行未见过的职位 |
maxItems | number | 可选 | 返回职位数上限——即本次运行的花费硬上限 |
proxyConfiguration | object | 可选 | 建议使用住宅代理 |
输出示例
1{
2 "recordType": "job",
3 "source": {
4 "jobKey": "f687cbdb754c430a",
5 "canonicalUrl": "https://www.indeed.com/viewjob?jk=f687cbdb754c430a",
6 "country": "US",
7 "domain": "www.indeed.com",
8 "scrapedAt": "2026-08-27T03:23:45.483Z"
9 },
10 "title": "Registered Nurse (Multiple Openings)",
11 "normalizedTitle": "Registered Nurse",
12 "company": {
13 "name": "AdventHealth Central Texas",
14 "fccId": "11994ad5a40ae7aa",
15 "rating": 3.7,
16 "reviewCount": 4166
17 },
18 "location": {
19 "formatted": "Killeen, TX 76549",
20 "city": "Killeen",
21 "state": "TX",
22 "postalCode": "76549",
23 "country": "US",
24 "isRemote": false
25 },
26 "salary": { "min": 33.28, "max": 61.91, "currency": "USD", "period": "HOURLY", "isEstimate": true }
27}
数据集中共有五种记录类型——职位、公司、评价、薪资与问答——由 recordType 区分。职位通过 company.fccId 与公司关联。
定价
按事件计费——只为你保留下来的记录付费:
| 事件 | 价格 | 计费内容 |
|---|---|---|
| 职位 | $0.003 | 一条职位,含标题、地点、解析薪资与描述 |
| 职位附加详情 | $0.002 | 标准记录之外的可选附加详情 |
| 搜索请求 | $0.002 | 一次搜索或翻页请求 |
| 公司资料 | $0.006 | 一份雇主资料,含规模、营收与评分 |
| 公司评价 | $0.004 | 一条员工评价,含分项评分 |
| 薪资记录 | $0.003 | 一条按岗位与雇主区分的薪资表记录 |
| 问答 | $0.003 | 一条社区提问及其热门回答 |
| 雇主联系方式(附加) | $0.01 | 来自雇主官网的商务联系地址 |
使用建议
- 自己界定搜索范围。 你已限定到某个城市的查询不会被悄悄放宽;只有在你开启范围扩展时,宽泛查询才会被拆成更窄的切片重跑。
- 监控场景请用 onlyNewJobs。 被跳过的职位既不消耗请求也不计费,因此对稳定查询做每日运行的成本很低。
- maxItems 就是你的花费上限。 它是本次运行可计费量的硬上限——请在提高并发之前先设好它。
- 把结果喂给模型时开启 strictMatch。 掺入的弱相关与赞助结果是 Indeed 数据中噪声的主要来源。
常见问题
可以在同一次运行里同时拿到职位和公司数据吗?
可以。开启 includeCompanyDetails,本次搜索发现的每个雇主都会一并返回,并按你所选的资料、评价、薪资与问答输出。职位与公司按 Indeed 的雇主 ID 关联,而不是按公司名。
一次搜索实际能采集多少?
在 Indeed 声称有 2,676 条职位的搜索中,仅靠翻页在 41 次请求内取到 737 条去重职位;开启范围扩展后为 369 次请求取到 1,388 条。每次运行都会记录实际采集量与 Indeed 声称的数量对比。
会返回赞助位和相关性很弱的职位吗?
只有你需要时才会。Indeed 会在每页结果里掺入这类职位;strictMatch 会依据完整职位描述(而非摘要)把它们剔除。