Apna.co scraper for India jobs: search any role and city, get title, company, pay range, location, work tags and stable IDs. Optional job-page fields add posted date, category, skills and pincode. Schedule it as a new-and-updated India jobs feed and export JSON, CSV or Excel.
📧 New option Find employer contact email adds a public contact email for each company, taken from the company's own website when it publishes one. It is off by default. Each row also says whether an email was found, and every job from the same company carries the same email.
💳 An employer email is billed only when one is found, once per company per run. Jobs and runs without an email cost the same as before.
1.9.5 - 2026-10-23
Added
🗓️ Posted within days now works. Set it to 1 for a daily fresh-jobs feed. The posted date comes from each job page, so the filter no longer leaves 0 jobs.
🧩 New option Include job page fields adds the posted date, expiry date, category, industry, skills, full address, pincode, and minimum experience in months to each row. It is off by default.
🏷️ The Categories filter now matches real Apna categories such as Telesales, Field Sales or Sales & BD.
🆓 Free Apify plans are limited to 25 rows per run with a short wait between runs. Paid plans have no limit.
Fixed
📍 Delhi searches no longer come back empty. Delhi and New Delhi now open the Apna pages that list jobs, and Delhi NCR is supported.
🛠️ Fewer failed runs: a monitor scope with capital letters, spaces or underscores no longer stops the run, and a missing proxy option or an unavailable saved state no longer fails it. Runs with unusable start URLs end with a clear message instead of an error.
⚡ Large monitor runs are faster and use less memory, and the same job found in two searches is saved once.
🛑 The run stops cleanly when the maximum charge you set is reached.
🔗 Start URLs for the plain Delhi page are redirected to a page that lists jobs.
1.9 - 2026-10-12
Fixed
💬 A run that returns no jobs now says why in its status message: no jobs listed for that keyword and city, a filter that Apna's listing pages cannot satisfy (posted date, category, education), nothing new since the last monitoring run, or Apna blocking the request.
🔗 A start URL copied with underscores in the city (for example bengaluru_bangalore) now returns jobs instead of an empty result.
🕘 The Shifts filter now matches the shift shown on each job card, such as Night Shift.
🌍 Choosing a proxy country on the free datacenter proxy no longer ends in an empty run; the country is dropped with a note in the log.
✅ A run where Apna blocks every request now ends with a clear message instead of an unexplained result.
1.8 - 2026-10-07
Fixed
🛠️ Fewer failed runs: start URLs given as objects (for example {"url": "..."}), a single city passed as plain text, or numbers passed as text are now accepted instead of stopping the run.
🔗 A start URL that is not an Apna job-search page is now skipped with a warning, so the other URLs in the same run still complete. If none are valid, the run stops with a clear message.
📭 A keyword or city that has no Apna search page now finishes as an empty run with an explanation, instead of a failed run.
💬 Running with no input now uses the same example search as the input form, so it returns jobs instead of an empty result.
1.7 - 2026-09-27
Fixed
🛠️ The example search on the input form now uses a role with plenty of openings, so a first run returns a full set of jobs instead of a single result.
1.6 - 2026-09-25
Fixed
🛠️ City searches for Chennai, Gurugram and Delhi, and several other cities, no longer come back empty. Searches now use the exact city names Apna publishes.
🔁 Fewer failed runs: requests refused by Apna are retried automatically on a fresh connection, and Apify datacenter proxy is now on by default.
💬 When a keyword or city has no Apna search page, the error now says so and points you to Start URLs.
Added
📊 The run summary now records why any request failed, so scheduled monitors are easier to diagnose.
1.5 - 2026-09-21
Changed
Renamed the monitoring scope input field to monitorScope for clarity. Existing scheduled runs that already pass the previous field name continue to work without any changes.
1.4 - 2026-09-03
Changed
⚡ Lowered the default result cap and turned off optional company- and location-detail enrichment by default so a standard run finishes faster. Both remain fully adjustable.
1.3 - 2026-07-29
Fixed
Updated public search extraction for Apna's current server-rendered React Flight job feed, with visible listing-card parsing retained as a fallback.
Preserved only fields available in the active public source representation, so missing descriptions, dates, pay periods, and contact preferences are not fabricated.
Removed unused Standby-mode configuration and readiness-server code. The Actor runs only as a batch job.
1.2 - 2026-07-29
Added
Stable source IDs, deduplication keys, search provenance, content fingerprints, and NEW / UPDATED / UNCHANGED monitoring status.
Named monitoring state with an optional reset and a run-summary record for scheduled workflows.
Batch Apna job-search URLs, strict publication-date filtering, and source-derived compensation, requirement, and work-arrangement fields when published.
Offline parser and monitoring contract tests.
Changed
Removed invented fallback company names, URLs, and opening counts; missing source fields are omitted.
Preserved query filters on supplied search URLs and capped output across all sources.
Contact preference flags are opt-in and never include phone or messaging identifiers.
Updated the Store schemas and README to match the runtime contract.