Monitor public Apna.co job listings with source-derived titles, companies, pay ranges, locations, visible work tags, and change detection. Filter by posting recency and reuse a named monitoring state across scheduled runs. Export flat JSON or CSV with stable IDs for scheduled workflows.
💬 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.