Indeed Job Search 图标

Indeed 职位搜索数据 API

Indeed Jobs · 招聘求职

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 把这些职位卡片、投递管道与收件箱会话变成可直接调用的开放数据,服务上述集成。

应用截图

  • Indeed Job Search 应用截图 1
  • Indeed Job Search 应用截图 2
  • Indeed Job Search 应用截图 3
  • Indeed Job Search 应用截图 4
  • Indeed Job Search 应用截图 5
  • Indeed Job Search 应用截图 6
  • Indeed Job Search 应用截图 7
  • Indeed Job Search 应用截图 8

API 端点一览

以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。

  • 获取相关职位(小组件)

    POST /v1/jobs/recommendations opendata

    驱动安卓主屏小组件:最多五个相关职位,含 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/cards opendata

    按 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/init opendata

    引导求职者会话: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/profile osint

    加载“我”标签页使用的登录 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/conversations osint

    分页登录求职者收件箱:会话 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/recent opendata

    返回登录求职者的最近搜索条件(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-tags osint

    从登录的 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/status opendata

    列出 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/list opendata

    加载 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-summary osint

    消息标签页的角标计数: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/token osint

    把登录会话 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/keywords opendata

    What 搜索框的联想输入: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-count opendata

    返回自某时间戳起匹配已保存关键词/地点组合的新职位数量——驱动新职位角标。

    认证方式: 可选登录会话。查询参数 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 天交付
  • 验收通过后才付款
  • 仅在授权范围内作业

获取报价