# Changelog of Website Contact Scraper - Emails, Phones & Socials (`automa-flow/website-contact-enricher`) Actor

- **URL**: https://apify.com/automa-flow/website-contact-enricher/changelog.md
- **Full Actor documentation**: https://apify.com/automa-flow/website-contact-enricher.md

## What's new

### 23 September 2026: One contact record per domain

**0.1**

Paste company domains or website URLs. Each registrable domain becomes one Dataset row with public emails, phone numbers, social profiles, a contact form URL when one is published, and the page where each email was found.

`HAS_MX` means the email domain publishes mail servers. It does not mean the mailbox exists. `NO_CONTACTS` means the pages loaded and nothing public was found. `BLOCKED` and `DOWNLOAD_FAILED` mean the site was not inspected, and those rows are not charged.

If a homepage redirects to a different registrable domain, the row keeps the domain you submitted and reads only that landing page, after that host's robots.txt allows it. When that landing page is disallowed, the row is `BLOCKED` and is not charged. A link that leaves the domain is skipped. If the bare domain does not serve a page, the www host is tried unless that host's robots.txt disallows it. A subdomain link uses that subdomain's own robots.txt: a disallow skips that page, lists it in `robotsSkipped`, and leaves the rest of the domain as `SUCCESS` or `NO_CONTACTS`. A GitHub link to an organization is kept, including `github.com/orgs/<name>`. A link to a repository is not. If Apify Proxy is turned on and cannot be created, the run continues over a direct connection and says so, instead of failing before any page is read. When a proxy is on and the first address from the DNS check does not connect, the next public address from that same check is tried. When a site publishes more than 25 emails, the row keeps same-domain addresses first, with `info` and `sales` ahead of other local parts. The overview lists the email, phone and social fields, not only the primary email.

Set `maxTotalChargeUsd` before an API or agent run. At the default 512 MB, leave at least $0.01 plus $0.002 for each domain you expect to inspect. The event price includes platform usage. Duplicates, invalid addresses, blocked sites and download failures are not charged. A run that has no `NO_CONTACTS` row does not describe that status.

`fingerprint` is set only for `SUCCESS` and `NO_CONTACTS` rows, so a week in which a site could not be read never looks like a change in its contacts. A run stops starting new domains two minutes before its timeout: the inspected rows stay in the Dataset and the rest are `NOT_INSPECTED` and not charged, instead of the whole run timing out.

This is the first version, so there is no previous input to migrate.
