Kariyer.net job search, CV and apply data API
Kariyer.net Job Search is Kariyer.net Yazılım Geliştirme's Android client for Kariyer.net, a long-running Turkish employment marketplace. Jobseekers sign in with email or Google/Facebook, then search openings by keyword, city and district, sector, position level, work type and Easy Apply, open a full job description with qualifications and an advertised salary band, apply from a stored CV, set job-alarm saved searches, follow companies, and keep several resumes with an occupancy meter. In Turkey's hiring market it competes with LinkedIn, Indeed and local boards, serving white-collar and blue-collar candidates rather than gig-only apps.
Search hits come back as a paginated vacancy set keyed by totalJobCount, each card carrying isEasyApply, locationText, workModel and jobCode.
Job-detail records add jobSalaryBudget bands (minValue/maxValue/currency) and totalApplication; CVs expose occupancyRatio and resumeVisibility; an apply call returns jobApplicationId. Labour-market dashboards can census advertised TRY salary bands, ATS tools can reconcile Easy Apply pipelines, and HRIS bots can join resume occupancy onto applicant records — openData Studio turns those fields into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Candidate token login
POST
/v1/aday/oturumosintAuthenticates a Kariyer.net candidate with the OAuth password grant and returns access_token, refresh_token and expires_in used as Authorization on later calls.
Auth: Unauthenticated form POST. Api-Version: 1.1. ClientType=5 and ApplicationVersion 8.18.1. Body is application/x-www-form-urlencoded with client_id, client_secret, client_type=5, grant_type=password, userNameOrEmail and password.
- client_id
- client_secret
- client_type
- grant_type
- userNameOrEmail
- password
- access_token
- token_type
- refresh_token
- expires_in
- isChangePassword
- IsDeleted
- isTrustedDevice
POST /v1/aday/oturum HTTP/1.1 Content-Type: application/x-www-form-urlencoded Api-Version: 1.1 ClientType: 5 ApplicationVersion: 8.18.1 client_id=<client_id>&client_secret=<client_secret>&client_type=5&grant_type=password&[email protected]&password=<password>{ "access_token": "<access_token>", "token_type": "bearer", "refresh_token": "<refresh_token>", "expires_in": 3600, "isChangePassword": false, "IsDeleted": false, "isTrustedDevice": true }Search jobs
POST
/v1/ilanlar/aramaopendataRuns the main job-search screen: POST a SearchModel (keyword, location, Easy Apply, work model/type, sectors) and return totalJobCount plus SearchItemModel cards (title, companyName, locationText, isEasyApply, workModel, jobCode).
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- statusCode
- status
- data
- totalJobCount
- title
- currentPage
- locationText
- searchUrl
- jobSortType
- isSearched
- jobs
- items
- id
- companyId
- companyName
- companyUrl
- jobCode
- jobUrl
- postingDate
- jobDateText
- isEasyApply
- isFavorite
- isSponsored
- workModel
- workType
- workTypeText
- positionName
- squareLogoUrl
- confidential
- memberJobStatus
- keyword
- uiKeyword
- uiLocation
- isRemote
- dontShowAppliedJobs
- showSponsored
- sortType
- workModels
- workTypes
- sectors
- positionLevels
- memberId
- size
POST /v1/ilanlar/arama HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json { "memberId": 44189012, "currentPage": 1, "size": 20, "keyword": "yazılım geliştirme", "uiKeyword": "yazılım geliştirme", "uiLocation": "İstanbul", "locationText": "İstanbul", "isEasyApply": true, "isRemote": false, "dontShowAppliedJobs": true, "showSponsored": true, "sortType": "date", "workModels": ["hybrid"], "workTypes": ["fulltime"], "sectors": ["bilişim"], "positionLevels": ["uzman"] }{ "statusCode": 200, "status": true, "data": { "totalJobCount": 1284, "title": "yazılım geliştirme iş ilanları", "currentPage": 1, "locationText": "İstanbul", "searchUrl": "/is-ilanlari/yazilim-gelistirme", "jobSortType": "date", "isSearched": true, "jobs": { "currentPage": 1, "items": [{ "id": 8675012, "title": "Yazılım Geliştirme Uzmanı", "companyId": 4412, "companyName": "Example Yazılım A.Ş.", "companyUrl": "/firma/example-yazilim", "locationText": "İstanbul, Kadıköy", "jobCode": "KN-8675012", "jobUrl": "/is-ilani/yazilim-gelistirme-uzmani-8675012", "postingDate": "2026-09-24T08:12:00", "jobDateText": "2 gün önce", "isEasyApply": true, "isFavorite": false, "isSponsored": true, "workModel": "hybrid", "workType": "fulltime", "workTypeText": "Tam Zamanlı", "positionName": "Yazılım Geliştirici", "squareLogoUrl": "https://cdn.example.com/logo/4412.png", "confidential": false, "memberJobStatus": null }] } }, "message": null, "error": null }Job detail
GET
/v1/ilanlar/{jobId}/detayopendataHydrates the job-detail screen: jobDescription, qualifications, advertised jobSalaryBudget (minValue/maxValue/currency), company block and totalApplication.
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- isCompanyFollowed
- jobGeneralInformation
- id
- title
- jobCode
- jobDescription
- qualifications
- qualificationsWithHtml
- jobUrl
- locationText
- postingDate
- publishDate
- closingDate
- logoUrl
- squareLogoUrl
- isActive
- isEasyApply
- isSponsored
- isPublishedKariyerNet
- confidential
- hasVideo
- jobCompanyInformation
- companyId
- companyName
- companyAbout
- companyUrl
- profileId
- jobPositionInformation
- positionId
- positionName
- positionLevel
- positionLevelText
- isRemoteWork
- workModel
- workType
- workTypeText
- jobSalaryBudget
- minValue
- maxValue
- salaryPeriodType
- salaryType
- currency
- jobStatistics
- totalApplication
GET /v1/ilanlar/8675012/detay?memberId=44189012 HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": { "isCompanyFollowed": false, "jobGeneralInformation": { "id": 8675012, "title": "Yazılım Geliştirme Uzmanı", "jobCode": "KN-8675012", "jobDescription": "Kadıköy ofisinde hibrit çalışan bir geliştirme ekibine katılın.", "qualifications": "C#, REST, SQL", "qualificationsWithHtml": "<ul><li>C#</li><li>REST</li></ul>", "jobUrl": "/is-ilani/yazilim-gelistirme-uzmani-8675012", "locationText": "İstanbul, Kadıköy", "postingDate": "2026-09-24T08:12:00", "publishDate": "2026-09-24T08:12:00", "closingDate": "2026-10-24T21:00:00", "logoUrl": "https://cdn.example.com/logo/4412.png", "squareLogoUrl": "https://cdn.example.com/logo/4412-sq.png", "isActive": true, "isEasyApply": true, "isSponsored": true, "isPublishedKariyerNet": true, "confidential": false, "hasVideo": false }, "jobCompanyInformation": { "companyId": 4412, "companyName": "Example Yazılım A.Ş.", "companyAbout": "Fintech yazılım evi", "companyUrl": "/firma/example-yazilim", "profileId": 8801 }, "jobPositionInformation": { "positionId": 312, "positionName": "Yazılım Geliştirici", "positionLevel": 3, "positionLevelText": "Uzman", "isRemoteWork": false, "workModel": "hybrid", "workType": "fulltime", "workTypeText": "Tam Zamanlı" }, "jobSalaryBudget": { "minValue": 45000, "maxValue": 65000, "salaryPeriodType": "monthly", "salaryType": "gross", "currency": "TRY" }, "jobStatistics": { "totalApplication": 86 } } }Search autocomplete
GET
/v1/ilanlar/oneri-metinopendataFeeds the search box as-you-type suggestions grouped by category (position, company, location) with name, count and type.
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- autoCompleteItems
- id
- category
- autoCompleteLists
- name
- image
- count
- type
- profileId
- keyword
- size
GET /v1/ilanlar/oneri-metin?keyword=yazilim&category=position&size=8 HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": { "autoCompleteItems": [{ "id": 1, "category": "position", "autoCompleteLists": [{ "id": "312", "name": "Yazılım Geliştirici", "image": "", "count": "1840", "category": "position", "type": "position", "profileId": null }] }] } }Apply to a job
POST
/v1/basvuru/kolay-gonderopendataSubmits an Easy Apply / full apply from a chosen resumeId and returns body.jobApplicationId when isSuccess is true.
Auth: Authorization: Bearer <access_token> from POST /v1/aday/oturum. NeedAuth. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel, DeviceVersion; Content-Type application/json. X-Hash when present.
- jobId
- jobCode
- companyId
- resumeId
- coverLetterId
- jobApplicationType
- formQuestionAnswerDtos
- cityAnswer
- isJobApplySaveCandidateControl
- isQualificationNotified
- shouldFollowCompany
- body
- isSuccess
- jobApplicationId
- header
- responseCode
- message
- globalId
- hostDateTime
- exceptionList
POST /v1/basvuru/kolay-gonder HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json ClientType: 5 ApplicationVersion: 8.18.1 { "jobId": 8675012, "jobCode": "KN-8675012", "companyId": 4412, "resumeId": "enc-res-441", "coverLetterId": 0, "jobApplicationType": 1, "formQuestionAnswerDtos": [], "cityAnswer": [], "isJobApplySaveCandidateControl": true, "isQualificationNotified": false, "shouldFollowCompany": true }{ "body": { "isSuccess": true, "jobApplicationId": "902114" }, "header": { "isSuccess": true, "responseCode": 200, "message": null, "globalId": "g-441", "hostDateTime": "2026-09-24T11:04:12" }, "exceptionList": [] }Applied and my jobs
POST
/v1/aday/basvurularimopendataLists the candidate's applied / my-jobs pipeline with appliedDetail (applicationId, applyStatus, appliedDate, cvName, inspectedCount).
Auth: Authorization: Bearer <access_token> from POST /v1/aday/oturum. NeedAuth. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel, DeviceVersion; Content-Type application/json. X-Hash when present.
- totalJobCount
- jobs
- items
- id
- title
- companyId
- companyName
- locationText
- jobCode
- jobUrl
- postingDate
- isEasyApply
- isFavorite
- memberJobStatus
- workModel
- workType
- appliedDetail
- applicationId
- appliedDate
- applyStatus
- applyStatusText
- cvId
- cvName
- isActive
- isArchived
- jobId
- jobTotalApplicationCount
- inspectedCount
- jobApplicationViewDay
- memberId
- currentPage
- size
- sortType
POST /v1/aday/basvurularim HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json ClientType: 5 ApplicationVersion: 8.18.1 { "memberId": 44189012, "currentPage": 1, "size": 20, "keyword": "", "sortType": "date", "dontShowAppliedJobs": false, "isSearchFromProfilePage": false, "jobProperties": [] }{ "data": { "totalJobCount": 18, "jobs": { "items": [{ "id": 8675012, "title": "Yazılım Geliştirme Uzmanı", "companyId": 4412, "companyName": "Example Yazılım A.Ş.", "locationText": "İstanbul, Kadıköy", "jobCode": "KN-8675012", "jobUrl": "/is-ilani/yazilim-gelistirme-uzmani-8675012", "postingDate": "2026-09-24T08:12:00", "isEasyApply": true, "isFavorite": false, "memberJobStatus": "applied", "workModel": "hybrid", "workType": "fulltime", "appliedDetail": { "applicationId": 902114, "appliedDate": "2026-09-24T11:04:12", "applyStatus": "applied", "applyStatusText": "Başvuruldu", "cvId": "enc-res-441", "cvName": "Varsayılan Özgeçmiş", "isActive": true, "isArchived": false, "jobId": 8675012, "jobTotalApplicationCount": 86, "inspectedCount": 12, "jobApplicationViewDay": 3 } }] } } }Saved searches and job alarms
GET
/v1/aday/is-alarmlariopendataReturns saved searches used as job alarms: keywordText, locationText, jobCount and isReporter for the alarms list.
Auth: Authorization: Bearer <access_token> from POST /v1/aday/oturum. NeedAuth. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel, DeviceVersion; Content-Type application/json. X-Hash when present.
- totalCount
- savedSearchLogItems
- id
- logId
- title
- keywordText
- locationText
- jobCount
- jobCountDescription
- creationDate
- selectedFilterCount
- isReporter
- memberId
- size
- from
GET /v1/aday/is-alarmlari?memberId=44189012&size=20&from=0 HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": { "totalCount": 4, "savedSearchLogItems": [{ "id": "ss-19", "logId": 19, "title": "İstanbul yazılım", "keywordText": "yazılım geliştirme", "locationText": "İstanbul", "jobCount": 128, "jobCountDescription": "128 ilan", "creationDate": "2026-08-01T10:00:00", "selectedFilterCount": 3, "isReporter": true }] } }Recommended jobs
POST
/v1/ilanlar/benzeropendataReturns recommended / similar vacancy cards (relatedNumber, resultJobList with isEasyApply and jobRecommendationModel) used under a job or on home.
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- jobId
- clientType
- isHomePage
- applyJobIdList
- relatedNumber
- resultJobList
- id
- title
- companyId
- companyName
- locationText
- jobCode
- isEasyApply
- isFavorite
- postingDate
- squareLogoUrl
- workModelDesc
- positionTypeText
- jobRecommendationModel
- isNewJob
- confidential
POST /v1/ilanlar/benzer HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json ClientType: 5 ApplicationVersion: 8.18.1 { "jobId": 8675012, "clientType": "5", "isHomePage": false, "applyJobIdList": [8675012] }{ "data": { "relatedNumber": 6, "resultJobList": [{ "id": 8675099, "title": "Backend Developer", "companyId": 5521, "companyName": "Example Fintech", "locationText": "İstanbul, Şişli", "jobCode": "KN-8675099", "isEasyApply": true, "isFavorite": false, "postingDate": "2026-09-22T09:00:00", "squareLogoUrl": "https://cdn.example.com/logo/5521.png", "workModelDesc": "Hibrit", "positionTypeText": "Tam Zamanlı", "jobRecommendationModel": "similar", "isNewJob": true, "confidential": false }] } }Candidate resumes
GET
/v1/aday/ozgecmislerosintLists the candidate's CVs with occupancyRatio, resumeVisibility, defaultCv and publicResumeUrl for the profile / apply-resume picker.
Auth: Authorization: Bearer <access_token> from POST /v1/aday/oturum. NeedAuth. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel, DeviceVersion; Content-Type application/json. X-Hash when present.
- resumeId
- encryptedId
- resumeName
- creationDate
- lastUpdateDate
- publicResumeUrl
- publicUrl
- status
- resumeLanguage
- language
- isExecutive
- resumeVisibility
- defaultCv
- occupancyRatio
- totalCount
- hasReverseContact
GET /v1/aday/ozgecmisler HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": [{ "resumeId": "441890", "encryptedId": "enc-res-441", "resumeName": "Varsayılan Özgeçmiş", "creationDate": "2025-03-12T10:00:00", "lastUpdateDate": "2026-09-20T18:22:00", "publicResumeUrl": "https://cdn.example.com/cv/enc-res-441", "publicUrl": "ayse-yilmaz", "status": "active", "resumeLanguage": "tr", "language": "tr", "isExecutive": false, "resumeVisibility": "public", "defaultCv": 1, "occupancyRatio": "82", "totalCount": 2, "hasReverseContact": false }] }Extended company profile
GET
/v1/firmalar/{companyId}/profilopendataHydrates the employer profile: companyInfo, companyFollowers, benefitList, working hours and isActiv used on the company screen.
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- companyInformation
- companyId
- companyName
- companyInfo
- companyLogoUrl
- companyWebSite
- companyFollowers
- companyFoundingDate
- benefitList
- workingTime
- phone
- profileId
- isActiv
- companyProfileStatus
- weekdayStart
- weekDayEnd
- isWeekDay
- isSaturday
- isSunday
- clientType
GET /v1/firmalar/4412/profil?profileId=8801&clientType=5 HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": { "companyInformation": { "companyId": 4412, "companyName": "Example Yazılım A.Ş.", "companyInfo": "2012'de kurulmuş fintech yazılım evi", "companyLogoUrl": "https://cdn.example.com/logo/4412.png", "companyWebSite": "https://www.example.com", "companyFollowers": 12840, "companyFoundingDate": "2012", "benefitList": ["yemek kartı", "özel sağlık sigortası"], "workingTime": "09:00-18:00", "phone": "+90-212-000-00-00", "profileId": 8801, "isActiv": true, "companyProfileStatus": 1, "weekdayStart": "09:00", "weekDayEnd": "18:00", "isWeekDay": true, "isSaturday": false, "isSunday": false } } }Salary expectation list
GET
/v1/maas/beklenti-dilimleriopendataReturns the shared salary-band lookup (id, minValue, maxValue, salary label) used on CV preferences and filters.
Auth: Optional Authorization: Bearer <access_token> from POST /v1/aday/oturum. ClientType=5, ApplicationVersion 8.18.1, DeviceId, DeviceOperator, DeviceManufacturer, DeviceModel and DeviceVersion; Content-Type application/json. Signed-in calls also send the stored user token; X-Hash is attached when present.
- id
- minValue
- maxValue
- salary
GET /v1/maas/beklenti-dilimleri HTTP/1.1 Authorization: Bearer <access_token> ClientType: 5 ApplicationVersion: 8.18.1 Accept: application/json{ "data": [ {"id": 1, "minValue": 0, "maxValue": 20000, "salary": "20.000 TL altı"}, {"id": 6, "minValue": 40000, "maxValue": 50000, "salary": "40.000 - 50.000 TL"}, {"id": 7, "minValue": 50000, "maxValue": 65000, "salary": "50.000 - 65.000 TL"} ] }
Data categories
- job listings
- job details
- applications
- candidate resumes
- saved searches
- salary bands
- company profiles
- auth sessions
- autocomplete
Where teams use this data
Turkey vacancy market census
A labour-market pipeline can page vacancy cards filtered by locationText, sectors and workModels, then store title, companyName, isEasyApply, workModel and jobSalaryBudget.minValue/maxValue/currency for a live Kariyer.net vacancy catalog.
Candidate CRM enrichment
HRIS tools can read the signed-in resume list after token login and attach resumeName, occupancyRatio, resumeVisibility, defaultCv and publicResumeUrl onto an existing applicant record.
Apply-pipeline reconciliation
ATS bots can submit an Easy Apply with resumeId, then read the applied-jobs list and map jobApplicationId, applyStatus, appliedDate, cvName and inspectedCount into interview-stage dashboards.
Advertised salary-band benchmarking
Compensation teams can join jobSalaryBudget.minValue/maxValue/currency from job detail with the shared salary-band lookup (salary, minValue, maxValue) to compare offered TRY ranges against the CV preference picker.
Frequently asked questions
How does Kariyer.net Job Search authenticate candidates?
A password-grant form (client_id, client_secret, client_type=5, grant_type=password, userNameOrEmail, password) with Api-Version 1.1 returns access_token, refresh_token and expires_in. Later calls send Authorization: Bearer plus ClientType=5 and ApplicationVersion 8.18.1.
What fields sit on a Kariyer.net job card?
A vacancy search returns totalJobCount and items with id, title, companyName, locationText, jobCode, isEasyApply, isSponsored, workModel, workTypeText and squareLogoUrl. Job detail hydrates jobDescription, qualifications, jobSalaryBudget.minValue/maxValue/currency and jobStatistics.totalApplication.
How does Easy Apply show up in the data?
Search and detail cards carry isEasyApply. An apply call submits resumeId and returns body.jobApplicationId when body.isSuccess is true. The applied-jobs list then exposes appliedDetail.applyStatus, appliedDate and cvName.
What CV fields can a CRM pull?
The resume list returns resumeId, encryptedId, resumeName, occupancyRatio, resumeVisibility, defaultCv, publicResumeUrl and lastUpdateDate for the profile picker used at apply time.
Apps similar to Kariyer.net Job Search
- Indeed Job Search — Global job board whose Turkey app aggregates postings from company sites and other boards, used alongside Kariyer.net for keyword search.
- LinkedIn — Professional network whose job board is widely used in Turkey for mid-to-senior roles, adding recruiter outreach and company pages on top of listings.
- Glassdoor — Pairs job listings with anonymous employee reviews and salary reports, so candidates can research an employer before applying.
- Secretcv — Turkish job portal used for CV hosting and vacancy search, often compared with Kariyer.net as a complementary local board.
- Yenibiriş — Turkish employment site covering corporate and entry-level openings, a long-running local alternative to Kariyer.net.
- Naukri: Job Search App — Info Edge's India job-search app with keyword search, apply and resume tracking, a comparable national employment marketplace outside Turkey.
Topics
- kariyer.net
- kariyer
- turkey jobs
- iş ilanları
- occupancyRatio
- isEasyApply
- jobSalaryBudget
- totalJobCount
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use