apna 求职招聘数据 API:职位、投递与资料
apna 是印度求职者用来浏览职位、一键投递并跟踪招聘方回复的安卓求职客户端。这些界面背后的数据 API 从 /v1/jobs/feed 的城市职位流与 /v1/jobs/detail/{jobId} 的单个职位卡片开始,再叠加 /v1/profile/me 的已登录资料与 /v1/jobs/applied 的已投递职位管道。
apna 是印度面向蓝领、灰领与初入职场岗位的求职招聘应用:求职者浏览按城市筛选的职位流、打开职位卡片、一键投递,并跟踪招聘进度,招聘方则通过电话联系。其背后是 HTTPS 上的 JSON API:登录后的调用附带 Authorization 令牌头及会话、客户端版本头,令牌对来自手机 OTP 登录。下面的接口覆盖员工职位流、职位详情、已投递职位管道、聚合候选人资料、OTP 登录与一键投递。
应用截图
API 端点一览
员工职位流
GET
/v1/jobs/feedopendata返回首页 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/appliedopendata列出求职者已投递的职位及管道字段(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/meosint返回 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
- 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/verifyosint用手机 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 登录
- 一键投递职位
- 印度求职数据