# Changelog of NAIC SBS Insurance Producer Scraper (`harvestloop/naic-sbs-licensee-scraper`) Actor

- **URL**: https://apify.com/harvestloop/naic-sbs-licensee-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/harvestloop/naic-sbs-licensee-scraper.md

## Changelog

### 1.0.0

Initial release.

#### Added

- `targeted` search mode across all 34 NAIC State Based Systems jurisdictions, filtering by name, NPN, license number, FEIN, business city/state/zipcode, mailing county and DBA name.
- `enumerate` mode that walks a name space and collects a full jurisdiction.
- Adaptive query subdivision that defeats the NAIC 25-row response cap. Truncated queries are automatically split along last-name and first-name prefixes and re-run until nothing is truncated.
- Explicit `gaps` reporting. Partitions still capped at maximum depth are recorded in the `CHECKPOINT_naic-sbs` key-value store rather than silently dropped.
- Both entity types: individuals (`IND`) and business entities / agencies (`ENT`).
- All 14 license statuses per jurisdiction, resolved dynamically. Statuses are no longer limited to active-only.
- Optional full detail enrichment: emails, websites, structured business address, per-line qualification and exam dates, continuing education compliance, company appointments, branch offices, DBA names and the NAIC internal license id.
- Key-value-store checkpointing so interrupted runs resume without re-charging for records already collected.
- Apify Proxy integration with automatic fallback to direct requests. An explicit `useProxy` toggle (default on) lets buyers turn proxying off for cheap one-off lookups; the default proxy group is left unpinned so Apify routes through the cheapest group the buyer's plan actually includes.
- Abort handling: the run persists state and exits promptly when the platform sends `ABORTING`.

#### Notes

- Billing is one charge per dataset record. The Actor does not attach a custom pay-per-event name, because `Actor.push_data` already bills the synthetic `apify-default-dataset-item` event and adding a custom event would charge twice per record.

### 1.0.6

#### Fixed

- Stopped subdividing once `maxResults` is reached. Previously the run continued refining name-space partitions whose records could never be stored, consuming the whole request budget. Measured on a 500-record `enumerate`: 307 requests dropped to 10.
- `maxResults` is now an exact cap. Previously concurrent workers could overshoot by up to `concurrency - 1` records, which meant charging for results past the requested limit.
- The buyer's `proxyConfiguration` is now respected exactly. A hardcoded proxy group previously overrode it, so buyers who selected cheaper proxy groups were billed at the residential rate.
- The default no longer pins a proxy group. Pinning `SHARED_DATACENTER`, which is a paid add-on not included with every plan, made the run fail immediately.
