Zoho Recruit & Keka Jobs Scraper - India Career Sites avatar

Zoho Recruit & Keka Jobs Scraper - India Career Sites

Pricing

from $2.60 / 1,000 job returneds

Go to Apify Store
Zoho Recruit & Keka Jobs Scraper - India Career Sites

Zoho Recruit & Keka Jobs Scraper - India Career Sites

Scrape open jobs from any company careers page on Zoho Recruit or Keka: title, department, city, state, country, experience, salary, skills, posted date and apply link in one row shape. Full description optional. Zero open roles and a missing careers page come back as their own rows. Unofficial.

Pricing

from $2.60 / 1,000 job returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

Get every open job from a company careers page on Zoho Recruit or Keka as one clean table: title, company, department, employment type, experience, city, state, country, salary where published, skills, posted date and the apply link. Enter a company name or paste the careers page URL. No login or API key needed.

You get the jobs the company itself has published, in the same columns for Zoho Recruit and Keka, ready for Excel, CSV or your own tool.


What you get

  • One row per open job, same 31 columns on Zoho Recruit and Keka, so one spreadsheet or filter works for both
  • City, state and country as separate columns, so filtering by Hyderabad or India is one click in a spreadsheet
  • Experience (for example "20+ years") and department where the company publishes them
  • Full job description as plain text on request (includeDescription); with it on, Zoho Recruit rows also get skills, salary and industry where the company published them
  • Posted date in ISO 8601, so "jobs from the last 7 days" works with postedWithinDays
  • Remote jobs flagged as the company set them (isRemote); a separate remoteHint column gives a best guess from the title or location
  • Salary shown only where the company published it; otherwise the cell stays empty

Know why a company returned nothing

Every company you enter returns at least one row, so an empty result is never a mystery. Only job rows are charged. The rowType column says which case you got:

rowTypeWhat it meansCharged?
jobOne open jobYes
no-open-rolesThe careers page is live and has no open jobs (or none matching your filters - the reason column says which)No
board-not-foundNo careers page with that name exists on Zoho Recruit or KekaNo
unavailableThe page could not be read after retries (temporary error)No
budget-reachedYour maximum total charge for the run was reached; says how many jobs you got of how manyNo

If a filter cannot work for a company - for example remoteOnly on Keka, whose careers pages have no remote field - you get a free row that says so, instead of a silent zero.


Input

FieldExampleWhat it does
companieszoho:talent-shore, keka:pennanttechOne entry per company, up to 200 per run
titleContainsdeveloperKeep jobs whose title contains this text
departmentContainssalesKeep jobs whose department contains this text
locationContainsBengaluruMatches city, state, country or any of several locations
remoteOnlytrueOnly jobs the company marked as remote
postedWithinDays7Only jobs opened in the last N days
maxJobsPerCompany50Cap rows per company
includeDescriptiontrueAdd the full description (slower on Zoho Recruit: one extra page per job)

Three ways to name a company

{
"companies": [
"zoho:talent-shore",
"https://pennanttech.keka.com/careers/",
"pennanttech"
]
}
  • zoho:<company> - the part before .zohorecruit.com. Regional addresses such as acme.zohorecruit.in are accepted too
  • keka:<company> - the part before .keka.com
  • A pasted careers page URL
  • Just the name - Zoho Recruit is tried first, then Keka

Left empty, the run uses the two examples above.


Output example

A real row from a run on 2026-10-29 (some columns left out here):

{
"rowType": "job",
"ats": "Keka",
"companySlug": "pennanttech",
"companyName": "Pennant Technologies",
"jobId": "143320",
"title": "Chief Delivery Officer",
"department": "Client Services",
"employmentType": "full-time",
"experience": "20+ years",
"locationRaw": "Corporate Office, Hyderabad, TG, India",
"city": "Hyderabad",
"state": "TG",
"country": "India",
"isRemote": null,
"postedAt": "2026-10-16T09:54:29.917Z",
"jobUrl": "https://pennanttech.keka.com/careers/jobdetails/143320",
"applyUrl": "https://pennanttech.keka.com/careers/jobdetails/143320"
}

All columns: rowType, ok, reason, ats, companySlug, companyName, jobId, title, department, employmentType, experience, locationRaw, locationsAll, country, state, city, isRemote, remoteHint, salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryText, skills, industry, postedAt, jobUrl, applyUrl, descriptionSnippet, descriptionText, source.


Measured on the live sites (2026-10-29)

  • Default input (one Zoho Recruit and one Keka company): 250 jobs in under 5 seconds
  • With full descriptions for three companies: 280 jobs, every one with its full description, about 3 minutes (Zoho Recruit reads one page per job)
  • Two company names that do not exist: two free board-not-found rows, no charge

Questions this answers

  • How do I scrape jobs from a Zoho Recruit careers page? Put zoho:<company> or the careers page URL in companies and run.
  • How do I export Keka job openings to Excel or CSV? Use keka:<company>, then download the dataset as CSV or Excel.
  • Which of these companies is hiring developers in Bengaluru right now? titleContains: developer with locationContains: Bengaluru.
  • Did this company stop hiring, or is the page gone? Two different rows: no-open-roles and board-not-found.

Typical uses

  • Hiring signals for sales - a company that just opened 20 roles is a different lead than one with none
  • Job boards and aggregators for India - one schema for two platforms that Indian employers use
  • Recruiting and staffing - track client and competitor openings daily and compare on jobId
  • Salary and skills research - structured salary where the company published it, required skills from Zoho Recruit job pages (with includeDescription)

Pricing

Pay per result: a small start fee once per run, charged only when the first job row is returned, then a fee per job row. Rows that say a page does not exist, has no open jobs, could not be read, or that your limit was reached are free. The same company entered twice in one run is read and charged once.

Notes and limits

  • Unofficial. Not affiliated with, endorsed by, or sponsored by Zoho Corporation or Keka Technologies. All product names are trademarks of their respective owners.
  • Only public careers pages are read. Nothing needs a login.
  • Keka careers pages have no remote field, so remoteOnly keeps no Keka jobs (a free row explains this). Use remoteHint for a guess.
  • Some companies leave fields empty (for example city or department); those stay null rather than guessed.
  • Company names on Zoho Recruit come from the page title when it reads "Jobs at ..." or "Careers at ..."; other titles leave companyName empty.
  • Up to 200 companies per run. Temporary errors (HTTP 429 or 5xx, timeouts) are retried; a page that does not exist is reported, not retried.

Other tools by NeverEmpty

Support

If a company page does not work as expected, or you want another Indian applicant tracking system added, open an issue on the Issues tab of this Actor with the company name. It will be reproduced on the live page before anything is changed.