Building a lead list or enriching a set of domains means visiting each site, hunting through contact and about pages, and copying out emails, phone numbers, and social links. It doesn’t scale past a handful of sites, and it’s exactly the kind of repetitive extraction that should be automated.
This guide shows how to pull public contact data from any list of websites as clean JSON.
Who uses contact-extraction data
Pulling public contact details from websites at scale supports several teams. Sales and business-development teams build and enrich outbound lists from a set of target domains. Recruiters and partnership teams find the right point of contact at a company. Data and operations teams keep an existing CRM current by re-checking domains for new or changed contact details. And researchers assemble directories — of vendors, agencies, or local businesses — from lists of sites.
What the data looks like
One record per contact found. A real row from a live run against apify.com:
| Field | Example |
|---|---|
| domain | apify.com |
| type | social |
| platform | youtube |
| value | https://www.youtube.com/apify |
| url | https://apify.com |
| http_status | 200 |
Types include email, phone, and social; each row records the page it was found on and the fetch status.
How to get it
Run the Website Contact Scraper on Apify with one or more URLs or domains. It crawls contact/about pages and returns emails, phones, and social profiles as JSON, CSV, or Excel, priced per result.
Run it on a schedule
{
"urls": ["https://example.com"],
"crawl_contact_pages": true,
"max_pages_per_site": 3
}Common workflows
The usual jobs are: an enrichment pass over a list of domains to attach emails, phones, and social profiles to each; a directory build that crawls a set of sites and compiles their public contacts; a refresh job that re-checks known domains on a schedule to catch changes; and a first-touch research step that finds a company’s channels before outreach. Because the output is clean JSON or CSV keyed by domain, each of these merges straight into a spreadsheet or CRM.
Why pull it as structured data
Visiting each site and hunting through contact and about pages is exactly the kind of repetitive work that does not scale and produces no reusable dataset. Turning it into structured records — type, value, platform, source page, and fetch status on every row — means you can dedupe, validate, and route contacts programmatically instead of copying them by hand.
Getting clean results
A few habits keep output tidy. Feed clean root domains rather than deep URLs where possible, keep the pages-per-site limit modest so the crawl stays focused on contact and about pages, and validate a small sample first to confirm the fields match your CRM. Each row records the page it came from and the HTTP status, so you can filter out anything that did not resolve cleanly.
Responsible use
The Actor collects only publicly published contact information — the same details a visitor would find on a site’s contact or about page. Use the output in line with the applicable anti-spam and data-protection rules for your region and your outreach; structured collection does not change the obligations that apply to how you contact people.
Cost and control
Pricing is per result with no subscription, so cost tracks how many contacts you actually collect. A tight enrichment pass over a focused domain list is inexpensive; a broad multi-site crawl scales in proportion. You set the domain list and the crawl depth on every run, so both cost and noise stay under your control, and a site that yields nothing costs almost nothing.
FAQ
Can I feed it a list of domains? Yes — pass an array of URLs or domains.
Does it find socials as well as emails? Yes — emails, phone numbers, and social profile links.
Can an AI agent run it? Yes — Pay-Per-Event, callable by agents via Apify’s x402 support.
Can I feed it a list of domains? Yes — pass an array of URLs or domains and it processes each.
Does it find socials as well as emails? Yes — emails, phone numbers, and social profile links, each tagged by type and platform.
Can an AI agent run it? Yes — Pay-Per-Event, callable by agents via Apify’s x402 support in USDC, no account required.
Run as a scheduled refresh, contact extraction also keeps an existing list from going stale: domains change their published emails and add or drop social channels over time, and a periodic re-check catches those changes without anyone auditing sites by hand.
The net effect is a dependable enrichment step you can point at any list of domains and trust to return structured, source-tagged contacts ready for your CRM.
Point it at a list, schedule the refresh, and contact enrichment becomes a maintained pipeline rather than a recurring manual chore.
Related: LinkedIn Jobs Scraper and Startup Funding Tracker for building targeted lead lists.
We cover AI agents, automation, and the tools that make them work. Our mission is to make AI accessible to everyone.