# Changelog of Naukri Job Scraper (Pay-Per-Event) (`prodiger/naukri-scraper`) Actor

- **URL**: https://apify.com/prodiger/naukri-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/prodiger/naukri-scraper.md

## Changelog

### 0.1.0 — 2026-06-02

Initial release. Pay-per-event Naukri.com job scraper, a cheaper drop-in for `automation-lab/naukri-scraper`:

- Input (drop-in field names): `keyword` and `location` (each a string OR a list — multiple keywords × locations run in one job), `maxJobs` (1–5000), `experienceMin`, `experienceMax`, `salaryMin`, `workMode` (any/remote/hybrid/office), `sortBy` (relevance/date), `maxRequestRetries`, `proxyConfiguration`.
- Output: `jobId`, `jobUrl`, `title`, `companyName`, `companyUrl`, `companyLogoUrl`, `companyRating`, `companyReviewsCount`, `ambitionBoxUrl`, `location`, `workMode`, `isRemote`, `isHybrid`, `experienceText`, `experienceMin`, `experienceMax`, `salary`, `salaryMin`, `salaryMax`, `salaryCurrency`, `skills`, `skillsCount`, `jobDescription`, `postedDate`, `postedDateRelative`, `postedDaysAgo`, `applyByDate`, `vacancy`, `keyword`, `locationSearched`, `searchUrl`, `scrapedAt`.
- Run-scoped deduplication by `jobId` — overlapping keyword/location searches are billed at most once per job.
- Charges `job_scraped` ($0.002) only after `pushData` succeeds; `actor_start` is $0.001. ~13% cheaper per job and 80% cheaper run-start than the reference ($0.0023/job + $0.005/run).
- **PlaywrightCrawler + residential proxy**: Naukri's `jobapi/v3/search` is reCAPTCHA-gated (HTTP returns 406) and the SSR page ships empty `jobDetails`, so the actor renders the SEO search-results page in a real browser and parses `.srp-jobtuple-wrapper` cards with Cheerio. SRP pagination via `/<keyword>-jobs-<N>` URLs.
- Quality enrichments over the reference: `postedDaysAgo` (numeric), `isRemote`/`isHybrid` booleans, `skillsCount`, `searchUrl` provenance, batch keyword × location input.
- Client-side filtering for `workMode`, `experienceMin`/`experienceMax`, and `salaryMin` (more reliable than Naukri's brittle filter query params); `sortBy=date` maps to Naukri's freshness sort.
- Session rotation on 403/429/challenge pages; `Actor.on('aborting')` flushes state and exits within 1s so user cost ceilings are honored.
