# Changelog of Bulk Email Verifier — MX, Disposable & Deliverability (`haketa/bulk-email-verifier`) Actor

- **URL**: https://apify.com/haketa/bulk-email-verifier/changelog.md
- **Full Actor documentation**: https://apify.com/haketa/bulk-email-verifier.md

## Changelog

### 1.0.1 — 2026-11-01

- **Fresh verification benchmark:** processed **490 mixed addresses in 3.7 seconds** (datacenter, no proxy, `maxConcurrency` 100) across ~85 unique domains. Core fields — `email`, `status`, `isValid`, `deliverabilityScore`, `reason` — populated at **100%**; `hasMx`/`domain` correctly empty only for dead-domain and malformed inputs. Zero value bugs, zero type errors, and perfect `isValid`↔`status` / MX↔score / `mxHost`↔`hasMx` logic consistency. Status mix: valid 64.9% / risky 24.9% / invalid 10.2%.
- **README refreshed to the gold standard:** output examples now use **real records from the fresh run** (real `mxHost` and `scrapedAt` values); added a second valid-business example; added a runnable Apify API `curl` snippet; refreshed benchmark numbers and the status-mix table throughout.
- **Accuracy fix (docs):** the README previously implied results were "de-duplicated". The Actor emits **one record per input row** and does not drop duplicate addresses — clarified this in the Output, Pagination, Tips and a new FAQ entry so users de-duplicate their list (or filter by `email`) when they want each address once.
- **Field-reference precision:** documented that `domain` is empty only for malformed addresses (no `@`) and `mxHost` is empty when a domain has no MX records.
- No code, input-schema, or output-field changes — verification logic verified correct and left untouched.

### 1.0.0 — initial release

- Bulk email verification over DNS: RFC-style **syntax** check, **MX / domain** lookup (with primary `mxHost`), **disposable** detection against a 7,900+ community blocklist (refreshed per run, with fallback), **role-based** and **free-provider** flags.
- Per-address **0–100 deliverability score** and a **valid / risky / invalid** status with a human-readable `reason`.
- Unique-domain **MX caching** and adjustable **concurrency** (1–200) for fast, scalable runs; keyless, no proxy, no SMTP.
- Export to **JSON, CSV, Excel, or the Apify API**.
