# Changelog of Justdial.com Business Search Scraper (`codingfrontend/justdial-business-search-scraper`) Actor

- **URL**: https://apify.com/codingfrontend/justdial-business-search-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/codingfrontend/justdial-business-search-scraper.md

## Changelog

All notable changes to the JustDial Business Search Scraper are documented here.

### Unreleased — 2026-10-03 (offline candidate; version unchanged)

- Disabled browser fingerprinting, fabricated browser metadata fallbacks, custom language headers, blocked-session rotation, and retries after explicit denial.
- Corrected exact numeric/flag semantics, Justdial profile URL validation, source endpoint/row provenance, global identity/cap reservations and partial-failure handling.
- Separated pure handler/run logic for explicit offline mocks; retained authenticated proxy configuration branches and all existing input modes/defaults.
- Added 33 pure tests, official schema verification, fictional fixtures, package/Docker allowlists and a frozen SHA manifest.
- Current status is offline only. No live browser/SDK integration, source recovery or cloud result is established.

The older entries below are retained historical project notes. They do not describe the current fingerprint/retry behavior or establish current production verification.

### \[1.0.1] - 2026-08-31

#### Changed

- Replaced manual lifecycle handling and exact-quota failures with bounded `Actor.main` execution and cap semantics.
- Added strict Justdial URL, proxy, search-count, and item-limit validation.
- Added per-search counters, request uniqueness, global `docid` deduplication, bounded retries, diagnostics, and run summaries.
- Retire blocked or incomplete sessions and one-page browser instances so residential retries receive a fresh proxy identity and Windows Chrome fingerprint.
- Reduced the runtime dependency surface to Apify, focused Crawlee Puppeteer, and Puppeteer.
- Added typed rating/review fields, canonical business URLs, provenance, contract tests, semantic dataset validation, QA inputs, and valid platform schemas.
- Removed unused duplicate scraper, error, filtering, formatting, and generated sample files from deployments.

### \[1.0.0] - 2026-05-20

#### Added

- Initial production release of the JustDial Business Search Scraper.
- `PuppeteerCrawler`-based architecture using Chrome (`apify/actor-node-puppeteer-chrome:latest`).
- Modular project structure following Brave Apify actor pattern:
  - `src/main.js` — entry point with input validation, proxy setup, and crawler init.
  - `src/routes.js` — Crawlee router factory.
  - `src/routes/handlers.js` — request handler orchestrating navigation and API response capture.
  - `src/extractors/index.js` — `mapBusinessRow` and `parseListingResponse` (columnar, array, and top-level formats).
  - `src/schema/input.js` — input validation (searchUrls, maxCrawlPerSearch, headless, proxyConfiguration).
  - `src/filters/index.js` — URL-based deduplication filter.
  - `src/utils/index.js` — `delay`, `scrollToCurrentBottom`, `waitForPageGrowth`, `removePopups`, fingerprint injection helpers.
  - `src/errors/` — `ScraperError`, `ErrorTypes`, `ErrorHandler`.
- Response-intercept approach: attaches `page.on('response')` listener before navigation to capture JustDial's `resultsPageListing` API batches.
- Incremental scroll strategy to trigger JustDial's scroll-position load-more listener.
- Fingerprint injection via `fingerprint-generator` + `fingerprint-injector` for Puppeteer stealth.
- `.actor/actor.json`, `input_schema.json`, `dataset_schema.json` for Apify platform compatibility.
- `validate-datasets.js` for local dataset output validation.
- `Dockerfile` using `apify/actor-node-puppeteer-chrome:latest` image.
- `README.md` with full Apify usage guide, input/output field reference, and example JSON.
- Dataset views: `overview`, `location`, `contact`, `ratings_reviews`, `media`.
