# Changelog of Ohio eLicense Scraper - Pharmacy & Professional (`haketa/ohio-elicense-scraper`) Actor

- **URL**: https://apify.com/haketa/ohio-elicense-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/haketa/ohio-elicense-scraper.md

## Changelog

### 1.1.0 — 2026-11-01

- **Fixed a pagination spin-out that wasted long residential-proxy runs.** The Ohio eLicense results grid (jQuery DataTables re-rendered by Ajax4JSF) does **not** reliably mark its **Next** control `disabled` at the true end of a result set — on the final pages it re-renders a single stale row and keeps **Next** clickable. The scraper previously kept clicking **Next** indefinitely (1 stale row, `+0` new records per page) until the run timed out. It now tracks how many *new unique* license records each page contributes and stops after consecutive pages add nothing new, so runs finish promptly once the data is exhausted.
- **Verified 151 unique de-duplicated Nursing Board records** (surname `Smith`, list-level, residential US proxy) with **100% coverage** on all core identity fields — `licenseNumber`, `board`, `licenseType`, `licenseStatus`, `lastName`, `firstName`, `detailUrl` — plus `city` 100%, `county`/`zip` 99.3%, `state` 100%, `disciplinaryAction` 100%. **0 duplicates** on the `board` + `licenseNumber` key and **no value bugs** (no `[object Object]`, no scheme-less URLs).
- Confirmed `issueDate`, `expirationDate` and `address` are detail-page-only fields (not present in the leaner list view) and documented them as "present when available" — enable `scrapeDetails: true` to populate them.
- Refreshed the README against the live sample: corrected the Output example and field-reference table to match real records, clarified the DataTables pagination + end-of-results behavior, and tightened the field-coverage notes.
- Added this changelog.
