apna - Search Job, Vacancy App 图标

apna 求职招聘数据 API:职位、投递与资料

apna: Search Latest Job Vacancies in India · 身份

apna 是印度求职者用来浏览职位、一键投递并跟踪招聘方回复的安卓求职客户端。这些界面背后的数据 API 从 /v1/jobs/feed 的城市职位流与 /v1/jobs/detail/{jobId} 的单个职位卡片开始,再叠加 /v1/profile/me 的已登录资料与 /v1/jobs/applied 的已投递职位管道。

apna 是印度面向蓝领、灰领与初入职场岗位的求职招聘应用:求职者浏览按城市筛选的职位流、打开职位卡片、一键投递,并跟踪招聘进度,招聘方则通过电话联系。其背后是 HTTPS 上的 JSON API:登录后的调用附带 Authorization 令牌头及会话、客户端版本头,令牌对来自手机 OTP 登录。下面的接口覆盖员工职位流、职位详情、已投递职位管道、聚合候选人资料、OTP 登录与一键投递。

应用截图

  • apna - Search Job, Vacancy App 应用截图 1
  • apna - Search Job, Vacancy App 应用截图 2
  • apna - Search Job, Vacancy App 应用截图 3
  • apna - Search Job, Vacancy App 应用截图 4
  • apna - Search Job, Vacancy App 应用截图 5
  • apna - Search Job, Vacancy App 应用截图 6
  • apna - Search Job, Vacancy App 应用截图 7

API 端点一览

  • 员工职位流

    GET /v1/jobs/feed opendata

    返回首页 Jobs 标签所用的分页城市/区域职位流:职位名、薪资区间、类别、远程/兼职标记、招聘名额与雇主 logo。

    认证方式: Authorization: Token <accessToken>(来自 OTP 登录);以及 Client-Session 与 Client-Version 头。

    • count
    • defaultSalary
    • jobs
    • id
    • title
    • minSalary
    • maxSalary
    • jobCategory
    • jobCategoryName
    • locationName
    • locationType
    • experienceLevel
    • education
    • openings
    • isWfh
    • isPartTime
    • expired
    • promoted
    • shift
    • workDaysDesc
    • workHoursDesc
    • organization
    • name
    • logoUrl
    • externalId
    • lastUpdated
    • myJobsCount
    • otherJobsCount
    • currentPageNumber
    • isLastPage
    • jobsCountMessage
    • callBackCount

    依据应用界面重构的示意示例,并非实时抓包。

    GET /v1/jobs/feed?area_id=14094&page_vertical=0&page=1&categoryId=42&minSalary=15000&isWfh=false HTTP/1.1
    Authorization: Token <accessToken>
    Client-Session: <session>
    Client-Version: 2026.16.09
    Accept: application/json
    {
      "count": 1284,
      "defaultSalary": 18000,
      "jobs": [{
        "id": "86750",
        "title": "Delivery Executive",
        "minSalary": "15000",
        "maxSalary": "22000",
        "jobCategory": "delivery",
        "jobCategoryName": "Delivery",
        "locationName": "Bengaluru",
        "locationType": "city",
        "experienceLevel": "0-1",
        "education": "10th pass",
        "openings": 12,
        "isWfh": false,
        "isPartTime": false,
        "expired": false,
        "promoted": true,
        "shift": "day",
        "workDaysDesc": "6 days a week",
        "workHoursDesc": "8 hours",
        "organization": {"name": "Example Logistics", "logoUrl": "https://cdn.example.com/org/logo.png", "externalId": "org-4412"},
        "lastUpdated": "2026-09-23T08:12:00Z"
      }],
      "myJobsCount": 18,
      "otherJobsCount": 1266,
      "currentPageNumber": 1,
      "isLastPage": false,
      "jobsCountMessage": "1,284 jobs near you",
      "callBackCount": 3
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据应用的首页 Jobs 标签及其按城市筛选的职位列表重构。
    • 字段集与求职者职位流中展示的职位卡片一致。
  • 职位详情

    GET /v1/jobs/detail/{jobId} opendata

    水合职位详情页:完整 jobDescription、薪资区间、HR 电话、skillTags、工作时长,以及投递前使用的 candidateEligibility。

    认证方式: Authorization: Token <accessToken>;以及 Client-Session 与 Client-Version 头。

    • job
    • id
    • title
    • jobDescription
    • minSalary
    • maxSalary
    • salaryDetail
    • hrNumber
    • locationName
    • experienceLevel
    • education
    • gender
    • openings
    • isWfh
    • isPartTime
    • isNearbyLocation
    • expired
    • skillTags
    • organization
    • application_status
    • consultancyName
    • isCreatorConsultant
    • isCreatorInternal
    • isHrVideoVisible
    • workingHour
    • candidateEligibility
    • assessment

    依据应用界面重构的示意示例,并非实时抓包。

    GET /v1/jobs/detail/86750 HTTP/1.1
    Authorization: Token <accessToken>
    Client-Session: <session>
    Client-Version: 2026.16.09
    Accept: application/json
    {
      "job": {
        "id": "86750",
        "title": "Delivery Executive",
        "jobDescription": "Pick up and drop parcels across Bengaluru. Two-wheeler required.",
        "minSalary": "15000",
        "maxSalary": "22000",
        "salaryDetail": "Plus fuel incentive",
        "hrNumber": "+91-98XXXXXX21",
        "locationName": "Bengaluru",
        "experienceLevel": "0-1",
        "education": "10th pass",
        "gender": "any",
        "openings": 12,
        "isWfh": false,
        "isPartTime": false,
        "isNearbyLocation": true,
        "expired": false,
        "skillTags": ["driving", "navigation"],
        "organization": {"name": "Example Logistics", "logoUrl": "https://cdn.example.com/org/logo.png", "externalId": "org-4412"},
        "application_status": null
      },
      "consultancyName": null,
      "isCreatorConsultant": false,
      "isCreatorInternal": true,
      "isNearbyLocation": true,
      "isHrVideoVisible": false,
      "workingHour": {"start": "09:00", "end": "18:00"},
      "candidateEligibility": {"eligible": true, "reason": null},
      "assessment": {"required": false}
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据求职者投递前打开的职位详情页重构。
  • 已投递职位管道

    GET /v1/jobs/applied opendata

    列出求职者已投递的职位及管道字段(hiringState、connectionStatus、appliedAt、numberShareStatus),用于 My Jobs / 投递跟踪页。

    认证方式: Authorization: Token <accessToken>;以及 Client-Session 与 Client-Version 头。

    • count
    • nextPageUrl
    • previousPageUrl
    • results
    • id
    • title
    • minSalary
    • maxSalary
    • locationName
    • organization
    • application_status
    • userApplication
    • status
    • originalStatus
    • hiringState
    • connectionStatus
    • communicationStatus
    • appliedAt
    • leadCreatedAt
    • lastUpdated
    • numberShareStatus
    • userMatched
    • softRejected
    • searchedJob

    依据应用界面重构的示意示例,并非实时抓包。

    GET /v1/jobs/applied?col_id=my_jobs&page=1&page_size=10 HTTP/1.1
    Authorization: Token <accessToken>
    Client-Session: <session>
    Client-Version: 2026.16.09
    Accept: application/json
    {
      "count": 18,
      "nextPageUrl": "/v1/jobs/applied?col_id=my_jobs&page=2&page_size=10",
      "previousPageUrl": null,
      "results": [{
        "id": "86750",
        "title": "Delivery Executive",
        "minSalary": "15000",
        "maxSalary": "22000",
        "locationName": "Bengaluru",
        "organization": {"name": "Example Logistics", "externalId": "org-4412"},
        "application_status": "applied",
        "userApplication": {
          "id": 902114,
          "status": "applied",
          "originalStatus": "applied",
          "hiringState": "shortlisted",
          "connectionStatus": "number_shared",
          "communicationStatus": "whatsapp_sent",
          "appliedAt": "2026-09-20T11:04:00Z",
          "leadCreatedAt": "2026-09-20T11:04:12Z",
          "lastUpdated": "2026-09-21T09:30:00Z",
          "numberShareStatus": "shared",
          "userMatched": true,
          "softRejected": false
        }
      }],
      "searchedJob": null
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据 My Jobs / 投递跟踪页重构。
  • 聚合候选人资料

    GET /v1/profile/me osint

    返回 Profile 标签所用的已登录求职者聚合资料:fullName、薪资、工作年限、技能、学历、简历 URL、已验证邮箱与城市/区域。

    认证方式: Authorization: Token <accessToken>;以及 Client-Session 与 Client-Version 头。

    • userId
    • enrichedProfile
    • id
    • fullName
    • gender
    • profileUrl
    • currentSalary
    • currentSalaryV2
    • totalYearsOfExperience
    • totalMonthsOfExperience
    • noticePeriod
    • isExperienced
    • isVerifiedProfile
    • views
    • dateOfBirth
    • experienceType
    • contactInfo
    • email
    • emailStatus
    • city
    • area
    • skills
    • educations
    • experiences
    • resume
    • format
    • url
    • pageCount
    • uploadedAt
    • enrichedPrefs
    • jobRoles
    • jobTypes
    • languageId
    • oldProfile
    • phoneNumber
    • community

    依据应用界面重构的示意示例,并非实时抓包。

    GET /v1/profile/me HTTP/1.1
    Authorization: Token <accessToken>
    Client-Session: <session>
    Client-Version: 2026.16.09
    Accept: application/json
    {
      "userId": "1851645",
      "enrichedProfile": {
        "id": "1851645",
        "fullName": "Ravi Kumar",
        "gender": "male",
        "profileUrl": "https://profiles.example.com/1851645",
        "currentSalary": 18000,
        "currentSalaryV2": 18000,
        "totalYearsOfExperience": 2.5,
        "totalMonthsOfExperience": 30,
        "noticePeriod": 15,
        "isExperienced": true,
        "isVerifiedProfile": true,
        "views": 142,
        "dateOfBirth": "1999-04-12",
        "experienceType": "experienced",
        "contactInfo": {"email": "[email protected]", "emailStatus": "verified"},
        "city": {"id": 1, "name": "Bengaluru"},
        "area": {"id": 14094, "name": "Whitefield"},
        "skills": [{"id": 11, "name": "driving"}],
        "educations": [{"degree": "12th pass", "institute": "Govt PU College"}],
        "experiences": [{"title": "Delivery Executive", "company": "Example Logistics"}],
        "resume": {"isValid": true, "format": "pdf", "url": "https://cdn.example.com/resume/1851645.pdf", "pageCount": 1, "uploadedAt": "2026-08-01T10:00:00Z"}
      },
      "enrichedPrefs": {
        "userId": "1851645",
        "languageId": "hi",
        "jobRoles": [{"id": 73, "name": "Delivery Executive"}],
        "jobTypes": [{"id": 4, "name": "Full time"}]
      },
      "oldProfile": {"id": 1851645, "fullName": "Ravi Kumar", "phoneNumber": "9876543210"},
      "community": {"claps": 12, "friends": 34}
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据 Profile 标签的聚合候选人视图重构。
  • OTP 登录

    POST /v1/auth/otp/verify osint

    用手机 OTP 换取 accessToken/refreshToken 对与 userId,后续每个职位、资料与投递调用都将其作为 Authorization: Token 附加。

    认证方式: 无需认证。后续调用使用本响应返回的 Authorization: Token <accessToken>。

    • phone_number
    • otp
    • requestId
    • channel
    • accessToken
    • refreshToken
    • userId
    • isProfileComplete

    依据应用界面重构的示意示例,并非实时抓包。

    POST /v1/auth/otp/verify HTTP/1.1
    Content-Type: application/json
    Client-Version: 2026.16.09
    Accept: application/json
    
    {
      "phone_number": "9876543210",
      "otp": "482193",
      "requestId": "req-9f3a",
      "channel": "sms"
    }
    {
      "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "refreshToken": "rt_8c1e2b...",
      "userId": 1851645,
      "isProfileComplete": true
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据手机号登录流程重构。
  • 一键 / 快速投递职位

    GET /v1/jobs/quick-apply/{userId} opendata

    返回已登录求职者可一键投递的职位(userEligible、allowSuperApply),用于 Easy Apply / Super Apply 流程。

    认证方式: Authorization: Token <accessToken>;以及 Client-Session 与 Client-Version 头。

    • jobs
    • id
    • title
    • minSalary
    • maxSalary
    • locationName
    • allowSuperApply
    • isSuperApplyJob
    • organization
    • userEligible
    • userInUnleash
    • message
    • title
    • subtitle

    依据应用界面重构的示意示例,并非实时抓包。

    GET /v1/jobs/quick-apply/1851645?areaId=14094 HTTP/1.1
    Authorization: Token <accessToken>
    Client-Session: <session>
    Client-Version: 2026.16.09
    Accept: application/json
    {
      "jobs": [{
        "id": "86750",
        "title": "Delivery Executive",
        "minSalary": "15000",
        "maxSalary": "22000",
        "locationName": "Bengaluru",
        "allowSuperApply": true,
        "isSuperApplyJob": true,
        "organization": {"name": "Example Logistics", "externalId": "org-4412"}
      }],
      "userEligible": true,
      "userInUnleash": true,
      "message": {
        "title": "Apply in one tap",
        "subtitle": "We will share your apna profile with the recruiter"
      }
    }

    依据应用界面推导;端点细节为示意说明,并非实际抓包。

    • 依据 Easy Apply / Super Apply 流程重构。

数据类别

  • 职位列表
  • 职位详情
  • 投递记录
  • 候选人资料
  • 登录会话

数据使用场景与案例

  • 超本地职位采集

    劳动力市场平台可按 area_id、categoryId 与 minSalary 轮询 /v1/jobs/feed,存储 title、薪资区间、locationName、openings 与 organization.name,构建实时印度职位目录。

  • 候选人 CRM 增强

    HRIS 工具可调用 /v1/profile/me,把 fullName、currentSalary、totalYearsOfExperience、skills、educations、resume.url 与已验证邮箱附加到既有候选人记录上。

  • 投递管道同步

    ATS 机器人可分页拉取 /v1/jobs/applied,把 userApplication.hiringState、connectionStatus、appliedAt 与 numberShareStatus 映射进面试阶段看板。

  • 一键投递资格

    人力合作方可读取 /v1/jobs/quick-apply/{userId} 查看候选人可 Super Apply(userEligible)的职位,提交前再打开 /v1/jobs/detail/{jobId} 查看 jobDescription 与 candidateEligibility。

常见问题

apna 职位流返回哪些职位字段?

职位流返回 title、minSalary、maxSalary、jobCategoryName、locationName、experienceLevel、openings、isWfh、isPartTime,以及雇主 organization 的 name 与 logoUrl。职位详情另加 jobDescription、hrNumber、skillTags 与 candidateEligibility。

求职者如何认证?

应用向 /v1/auth/otp/verify 提交手机 OTP,并存储 accessToken、refreshToken、userId 与 isProfileComplete。后续调用发送 Authorization: Token <accessToken> 及 Client-Session、Client-Version 头。

我能读取求职者的资料与投递记录吗?

可以。/v1/profile/me 返回 fullName、currentSalary、skills、educations、简历 URL 与已验证邮箱。/v1/jobs/applied 返回每条投递的 hiringState、connectionStatus 与 appliedAt。

一键投递在哪个端点?

/v1/jobs/quick-apply/{userId} 列出已登录用户可 Super Apply(userEligible)的职位,每张职位卡片上含 allowSuperApply。

相关主题

  • apna 求职 API
  • apna 职位流
  • 职位流端点
  • 候选人资料 API
  • 已投递职位 hiringState
  • apna OTP 登录
  • 一键投递职位
  • 印度求职数据

需要集成这个 App 的数据 API?

我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。

获取报价