Indeed 职位搜索数据 API
Indeed Job Search 是 Indeed Jobs 推出的官方安卓应用;Indeed 是全球最大的招聘网站之一,隶属日本 Recruit Holdings。求职者在 What 搜索框输入关键词即可获得联想建议,浏览展示薪资、雇主星级评分、公司 logo 与工作地点的职位结果卡片,并通过 Indeed Apply 凭已保存的简历一键投递。My Jobs 标签页跟踪每条投递从投递到录用的进度,并汇总视频或电话面试邀请及可选时间段;Messages 标签页承载与雇主的对话,并以未读角标提醒。已保存的搜索会提示自上次查看以来新增了多少职位,桌面小组件则根据最近的搜索推送最多五个相关职位。应用可匿名浏览,也可登录 Indeed 账号使用 Me 标签页,主要服务美国求职者,与 LinkedIn、ZipRecruiter、Monster、Dice 等平台同台竞争。
Indeed 职位卡片承载记录中公开的一半:每个职位的 key 对应 title、sourceEmployerName、雇主 overallRating 与 squareLogoUrls、格式化的 location、以 compensation.formattedText 表示的薪资以及 indeedApply 标记;小组件推荐还附带 matchReason,把职位关联到最近一次搜索。已保存的关键词/地点组合返回新增职位数 newCount,What 搜索框则为未输完的查询返回 suggestion 联想词。
登录后的另一半是求职者自己的投递管道。My Jobs 条目记录 jobKey、company 名称、applyTime、带 applicationStatusTimestamp 的 applicationStatus、雇主侧的 employerJobStatus 与求职者自报的 selfReportedStatus,以及 Indeed Apply 投递的 encryptedIaAppId;面试邀请补充 formatType、status、durationInMinutes、invitationNote 与可选的 timeSlots。雇主会话提供 unreadCount、participantName、messagePreview 与 moderationStatus,收件箱总数见 totalUnreadConversationCount;账号本身带 firstName、lastName、emailAddress、isVerified 与 accountId,求职者资料含简历 id 及其 tags,recentJobSearches 则以 timestamp 保存每次搜索的 criteria(关键词与地点)。
ATS 可每晚同步 applicationStatus、encryptedIaAppId 与面试 formatType,让招聘方看到与候选人在 My Jobs 中一致的管道;劳动力市场看板可基于公开卡片追踪职位名称、薪资文本与雇主评分,而无需存储候选人个人信息;求职者 CRM 可在雇主会话的 unreadCount 长时间未处理时触发提醒;背景调查服务商可在提交 Indeed Apply 之前,把账号姓名、邮箱与 accountId 绑定到简历 id。openData Studio 把这些职位卡片、投递管道与收件箱会话变成可直接调用的开放数据,服务上述集成。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
获取相关职位(小组件)
POST
/v1/jobs/recommendationsopendata驱动安卓主屏小组件:最多五个相关职位,含 matchReason、title、sourceEmployerName、overallRating、compensation.formattedText 与 viewJobRedirectClickUrl。
认证方式: 应用 API-key 请求头加国家、语言、客户端与跟踪请求头。登录后可选 OAuth Bearer 访问令牌。
- findRelevantJobs
- trackingKey
- matchReason
- title
- sourceEmployerName
- employer
- key
- overallRating
- location
- formatted
- compensation
- formattedText
- indeedApply
- scopes
- dateOnIndeed
- description
- viewJobRedirectClickUrl
POST /v1/jobs/recommendations HTTP/1.1 Content-Type: application/json X-App-Key: <app-api-key> X-Country: US X-Locale: en_US X-Client: android-widget X-Tracking-Key: <tk> { "limit": 5, "context": "homeWidget" }{ "trackingKey": "1abcdefghijklmn", "results": [{ "matchReason": {"type": "RECENT_QUERY", "query": "product manager", "location": "Austin, TX"}, "job": { "title": "Staff Product Manager", "sourceEmployerName": "Example Corp", "employer": {"key": "example-corp", "overallRating": {"value": 4.1}}, "location": {"formatted": {"short": "Austin, TX"}}, "compensation": {"key": "USD_140K_180K", "formattedText": "$140,000 - $180,000 a year"}, "indeedApply": {"scopes": ["RESUME"]}, "dateOnIndeed": "2026-09-24T12:00:00Z", "description": {"text": "Own the job-seeker home feed."} }, "viewJobRedirectClickUrl": "https://example.com/viewjob?jk=abc123" }] }水合职位卡片
POST
/v1/jobs/cardsopendata按 jobKeys 水合搜索结果页与会话中的职位卡片:title、格式化 location、雇主 logo、overallRating、compensation.formattedText 与 attributes。
认证方式: 应用 API-key 请求头加国家、语言与跟踪请求头。可选 OAuth Bearer 访问令牌。
- jobData
- key
- url
- title
- location
- formatted
- short
- long
- sourceEmployerName
- squareLogoUrls
- url64
- url128
- overallRating
- compensation
- formattedText
- attributes
- label
POST /v1/jobs/cards HTTP/1.1 Content-Type: application/json X-App-Key: <app-api-key> X-Country: US X-Locale: en_US X-Tracking-Key: <tk> { "jobKeys": ["abc123def456"] }{ "results": [{ "job": { "key": "abc123def456", "url": "https://example.com/viewjob?jk=abc123def456", "title": "Staff Product Manager", "location": {"formatted": {"short": "Austin, TX", "long": "Austin, TX 78701"}}, "sourceEmployerName": "Example Corp", "employer": { "squareLogoUrls": {"url64": "https://example.com/s/logo64.png", "url128": "https://example.com/s/logo128.png"}, "overallRating": {"value": 4.1} }, "compensation": {"formattedText": "$140,000 - $180,000 a year"}, "attributes": [{"key": "jobtype", "label": "Full-time"}] } }] }求职者移动应用初始化
POST
/v1/session/initopendata引导求职者会话:cookie 跟踪键(ctk)、服务 URL、实验分桶、IP 国家、服务条款横幅与强制升级标记。
认证方式: 应用 API-key 请求头加国家与语言请求头。可选 OAuth Bearer 访问令牌。
- jobseekerMobileAppInit
- ctk
- services
- name
- url
- proctorResult
- deviceId
- matrixVersion
- ipCountry
- ipLookupCountry
- attributionParametersPayload
- affiliateKey
- showBlockingTOSBanner
- showForceUpgradeModal
- tosModalContent
POST /v1/session/init HTTP/1.1 Content-Type: application/json X-App-Key: <app-api-key> X-Country: US X-Locale: en_US { "platform": "ANDROID", "appVersion": "296.1.0" }{ "ctk": "1ctkexample", "services": [{"name": "jobgraph", "url": "https://example.com/v1"}], "proctorResult": {"deviceId": "dev-9f2a", "matrixVersion": "2026.09.1"}, "ipCountry": "US", "ipLookupCountry": "US", "attributionParametersPayload": {"affiliateKey": "", "host": "www.example.com", "keywords": "product manager"}, "showBlockingTOSBanner": false, "showForceUpgradeModal": false, "tosModalContent": {"version": "2026-01"} }当前 Passport 账号
POST
/v1/account/profileosint加载“我”标签页使用的登录 Passport 身份——firstName、lastName、emailAddress、isVerified、accountId——以及收件箱未读计数。
认证方式: 来自会话换令牌的 OAuth Bearer 访问令牌,加应用 API-key、国家与语言请求头。
- currentUser
- PassportAccount
- firstName
- lastName
- emailAddress
- isVerified
- accountId
- isConfirmed
- isSignedIn
- creationDate
- globalUnreadEventCount
- unreadConversationCount
POST /v1/account/profile HTTP/1.1 Content-Type: application/json Authorization: Bearer <access_token> X-App-Key: <app-api-key> X-Country: US X-Locale: en_US { "include": ["accountProfile", "unreadCounts"] }{ "currentUser": { "account": { "type": "PassportAccount", "accountProfile": { "accountName": {"firstName": "Alex", "lastName": "Rivera"}, "email": {"emailAddress": "[email protected]", "isVerified": true} }, "accountId": "acct-1001", "emailAddress": "[email protected]", "isConfirmed": true, "isSignedIn": true, "creationDate": "2019-04-12T08:11:00Z" } }, "globalUnreadEventCount": 3, "unreadConversationCount": 2 }查找雇主会话
POST
/v1/messages/conversationsosint分页登录求职者收件箱:会话 id、unreadCount、雇主参与者、关联职位、lastEvent.messagePreview 与 moderationStatus。
认证方式: 来自会话换令牌的 OAuth Bearer 访问令牌,加应用 API-key、国家、语言与跟踪请求头。
- findConversations
- conversations
- id
- unreadCount
- participants
- role
- accountKey
- participantName
- job
- key
- title
- lastEvent
- messagePreview
- locks
- reasonCode
- moderationStatus
- pageInfo
POST /v1/messages/conversations HTTP/1.1 Content-Type: application/json Authorization: Bearer <access_token> X-App-Key: <app-api-key> X-Country: US X-Locale: en_US X-Tracking-Key: <tk> { "conversationFilter": {"excludedLabels": ["ARCHIVE", "SPAM"]}, "first": 20 }{ "conversations": [{ "id": "Y29udjoxMjM", "userReadsInfo": {"unreadCount": 1}, "participants": [{"role": "EMPLOYER", "accountKey": "emp-441", "participantName": "Example Corp Recruiter"}], "job": {"key": "abc123def456", "title": "Staff Product Manager"}, "lastEvent": {"type": "MESSAGE", "messagePreview": "Are you free Thursday?"}, "locks": {"reasonCode": null}, "moderationStatus": "NONE" }], "pageInfo": {"endCursor": "cursor-20", "hasNextPage": true} }最近职位搜索
POST
/v1/search/recentopendata返回登录求职者的最近搜索条件(query、location),用于为首页信息流与小组件提供种子数据。
认证方式: 来自会话换令牌的 OAuth Bearer 访问令牌,加应用 API-key、国家与语言请求头。
- currentJobSeekerPortrait
- rawActivities
- recentJobSearches
- uid
- timestamp
- criteria
- query
- location
POST /v1/search/recent HTTP/1.1 Content-Type: application/json Authorization: Bearer <access_token> X-App-Key: <app-api-key> X-Country: US X-Locale: en_US {}{ "recentJobSearches": [{ "uid": "rjs-7788", "timestamp": "2026-09-26T18:04:00Z", "criteria": {"query": "product manager", "location": "Austin, TX"} }] }求职者资料上的简历标签
POST
/v1/profile/resume-tagsosint从登录的 jobSeekerProfile 读取简历 id 与 tags,供投递与职位匹配使用。
认证方式: 来自会话换令牌的 OAuth Bearer 访问令牌,加应用 API-key、国家与语言请求头。
- jobSeekerProfile
- profile
- resume
- id
- tags
POST /v1/profile/resume-tags HTTP/1.1 Content-Type: application/json Authorization: Bearer <access_token> X-App-Key: <app-api-key> X-Country: US X-Locale: en_US {}{ "jobSeekerProfile": { "profile": { "resume": { "id": "resume-9", "tags": ["product-management", "b2b-saas"] } } } }投递状态职位(My Jobs)
GET
/v1/applications/statusopendata列出 My Jobs 标签页已投递与浏览过的职位:jobKey、company.name、管道状态、applyTime、encryptedIaAppId 与 applicationStatus。
认证方式: 会话 cookie 或 OAuth Bearer 访问令牌。查询参数 type、applyUpdateStartTime、tk(跟踪键)与 from。
- success
- appStatusJobs
- appTk
- jobTitle
- jobKey
- jobUrl
- jobExpired
- jobFraudulent
- withdrawn
- location
- company
- name
- candidateStatus
- selfReportedStatus
- employerJobStatus
- userJobStatus
- applyTime
- indeedApplyable
- encryptedIaAppId
- encryptedAdvCandId
- applicationStatus
- applicationStatusAction
- applicationStatusTimestamp
GET /v1/applications/status?type=APPLIED&applyUpdateStartTime=0&tk=<tk>&from=myjobs HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "success": true, "body": { "appStatusJobs": [{ "appTk": "1apptk", "jobTitle": "Staff Product Manager", "jobKey": "abc123def456", "jobUrl": "https://example.com/viewjob?jk=abc123def456", "jobExpired": false, "jobReported": false, "jobFraudulent": false, "withdrawn": false, "location": "Austin, TX", "company": {"name": "Example Corp"}, "statuses": { "candidateStatus": {"status": "APPLIED", "timestamp": 1727049600000}, "selfReportedStatus": {"status": "WAITING", "timestamp": 1727049600000}, "employerJobStatus": {"status": "ACTIVE", "timestamp": 1727049600000}, "userJobStatus": {"status": "APPLIED"} }, "applyTime": 1727049600000, "indeedApplyable": true, "hasIaAppId": true, "hasApplicationPreview": true, "hasInterviewNowAccess": false, "normalizedJobTitle": "product manager", "employerEstimatedResponseDays": 7, "encryptedIaAppId": "ia-enc-1", "encryptedAdvCandId": "cand-enc-1", "applicationStatus": "UNDER_REVIEW", "applicationStatusAction": "WAIT", "applicationStatusTimestamp": 1727136000000, "companyApplyUrl": null }] } }列出面试
GET
/v1/interviews/listopendata加载 My Jobs 的面试邀请:formatType、status、durationInMinutes、invitationNote、jobDetails 与 timeSlots。
认证方式: 会话 cookie 或 OAuth Bearer 访问令牌。查询参数 statuses、formats、start、tk 与 from。
- id
- externalInterviewId
- formatType
- status
- durationInMinutes
- interviewGTS
- outcome
- invitationNote
- availabilityBasedScheduling
- jobDetails
- title
- company
- jobKey
- jobUrl
- location
- fraudulent
- timeSlots
GET /v1/interviews/list?statuses=INVITED,SCHEDULED&formats=VIDEO,PHONE&start=0&tk=<tk>&from=myjobs HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "success": true, "body": { "interviews": [{ "id": "int-441", "externalInterviewId": "ext-882", "formatType": "VIDEO", "status": "SCHEDULED", "durationInMinutes": "30", "interviewGTS": true, "outcome": null, "invitationNote": "Looking forward to chatting.", "availabilityBasedScheduling": true, "jobDetails": { "title": "Staff Product Manager", "company": "Example Corp", "jobKey": "abc123def456", "jobUrl": "https://example.com/viewjob?jk=abc123def456", "location": "Austin, TX", "fraudulent": "false", "reportedByUser": "false" }, "timeSlots": [{"start": "2026-09-30T16:00:00Z", "end": "2026-09-30T16:30:00Z"}] }] } }未读消息汇总
GET
/v1/messages/unread-summaryosint消息标签页的角标计数:totalUnreadConversationCount 与 totalUnreadMessageCount。
认证方式: 会话 cookie 或 OAuth Bearer 访问令牌。固定的 client 查询参数标识安卓应用。
- data
- totalUnreadConversationCount
- totalUnreadMessageCount
GET /v1/messages/unread-summary?client=android-app HTTP/1.1 Authorization: Bearer <access_token> Accept: application/json{ "data": { "totalUnreadConversationCount": 2, "totalUnreadMessageCount": 5 } }会话 cookie 换 OAuth 令牌
POST
/v1/auth/tokenosint把登录会话 cookie 换成 OAuth access_token / expires_in / scope / token_type,用作应用 graph 与职位服务的 Bearer 认证。
认证方式: 请求携带会话 cookie(含刷新令牌 cookie)。表单字段 client_id 与 scope。后续调用发送 Authorization: Bearer access_token。
- client_id
- scope
- access_token
- expires_in
- token_type
POST /v1/auth/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cookie: refresh_token=<refresh> client_id=android-app&scope=openid%20profile%20email{ "access_token": "eyJhbGciOi...", "expires_in": 3600, "scope": "openid profile email", "token_type": "Bearer" }关键词自动补全(what)
GET
/v1/suggest/keywordsopendataWhat 搜索框的联想输入:query 加 country/language/ctk 返回搜索结果页使用的 suggestion 字符串。
认证方式: 无需认证。查询参数 query、ctk、country、language、count;可选会话标识。
- query
- ctk
- country
- language
- count
- formatted
- suggestion
- formattedSuggestion
GET /v1/suggest/keywords?query=product%20man&ctk=<ctk>&country=US&language=en&count=8&formatted=1 HTTP/1.1 Accept: application/json[ { "suggestion": "product manager", "formattedSuggestion": "<b>product man</b>ager" }, { "suggestion": "product management intern", "formattedSuggestion": "<b>product man</b>agement intern" } ]已保存搜索的新职位计数
GET
/v1/jobs/new-countopendata返回自某时间戳起匹配已保存关键词/地点组合的新职位数量——驱动新职位角标。
认证方式: 可选登录会话。查询参数 hl、q(关键词)、l(地点)与 since(epoch 时间戳)。
- status
- body
- key
- newCount
GET /v1/jobs/new-count?hl=en&q=product%20manager&l=Austin%2C%20TX&since=1727049600000 HTTP/1.1 Accept: application/json{ "status": "ok", "body": { "key": "product manager|Austin, TX", "newCount": 14 } }
数据类别
- 职位列表
- 投递申请
- 面试
- 身份信息
- 消息
- 搜索历史
- 简历
数据使用场景与案例
人才管道对账
ATS 每晚同步 My Jobs 的 applicationStatus、encryptedIaAppId 与面试 formatType/status,让招聘方看到的管道与候选人在 Indeed 中看到的一致。
公开卡片中的职位市场脉搏
劳动力市场看板可水合 getJobsData 卡片(title、compensation.formattedText、overallRating、location.formatted),且不存储候选人个人身份信息。
雇主回复的收件箱 SLA
求职者 CRM 可监控 FindConversations 的 unreadCount 与 /v1/messages/unread-summary 的未读总数,当雇主会话停滞时触发提醒。
投递时的身份匹配
背景调查服务商可在提交 Indeed Apply 前,把 initGraph 返回的 Passport firstName/lastName/emailAddress/accountId 与 GetResumeTags 返回的简历 id 绑定。
常见问题
Indeed 职位卡片来自哪里?
应用向 graph 风格职位 API 发 POST——首页小组件对应 /v1/jobs/recommendations,结果卡片对应 /v1/jobs/cards——返回标题、雇主名称、薪资文本与总体评分。
Indeed 职位搜索如何认证?
调用发送应用 API-key 请求头及国家、语言请求头。登录后应用在 /v1/auth/token 把会话换成 OAuth 访问令牌,并以 Bearer 方式发送。
登录账号暴露哪些身份字段?
账号资料调用返回名字、姓氏、邮箱地址、验证状态与账号 id,以及收件箱未读计数。
哪些调用驱动 My Jobs?
GET /v1/applications/status 列出已投递职位及每条投递的管道状态;GET /v1/interviews/list 列出面试邀请,含形式、时间段与职位详情。
与 Indeed Job Search 相似的应用
- LinkedIn: Community & Network — 职业社交平台,职位信息通过人脉关系与招聘方主动触达呈现。
- ZipRecruiter — 通过 AI 匹配连接求职者与雇主,并将职位同步分发到 100 多个合作招聘网站。
- Glassdoor | Jobs & Careers — 在职位列表之外提供员工撰写的公司点评、薪资数据与面试经验。
- Monster — 运营多年的综合招聘网站,职位列表与招聘方使用的简历库相结合。
- Snagajob — 专为小时工、轮班、零售与仓储类岗位打造的求职平台。
- Dice — 面向技术与 IT 岗位的招聘平台,可按编程语言、框架与认证筛选职位。
- Handshake — 面向在校生与应届毕业生的职业平台,与大学就业指导中心直接对接。
- Wellfound — 专注初创公司岗位的招聘平台,企业会提前公开薪资与股权范围。
相关主题
- Indeed 职位搜索 API
- Indeed 职位推荐 API
- Indeed 投递状态 API
- Indeed 会话令牌交换
- Indeed 面试 API
- Indeed 自动补全建议
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业