Bulk Email Extractor from Domain List — Emails, Phones, Socials avatar

Bulk Email Extractor from Domain List — Emails, Phones, Socials

Pricing

from $26.80 / 1,000 contact records

Go to Apify Store
Bulk Email Extractor from Domain List — Emails, Phones, Socials

Bulk Email Extractor from Domain List — Emails, Phones, Socials

Bulk email extractor from a list of websites or domains: one record per site with the public business emails, phones and social links on its homepage and contact pages, MX-checked. Keyless. Honour outreach and privacy law. Part of NexGen Signal — data tools and official-source data products

Pricing

from $26.80 / 1,000 contact records

Rating

0.0

(0)

Developer

NexGen Signal

NexGen Signal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Built for the list, not the single site. Paste a CSV column of website URLs or bare domains — ten or ten thousand — and get back exactly one record per site: the public business emails, phone numbers and social profiles the site publishes on its homepage and contact/about/imprint pages, with a DNS check that the domain can receive mail.

Pay per site. No API key, no login, no person data. Each site is retried up to three times, emails are classified as role (info@, sales@) or named business addresses, simple obfuscations (name [at] domain [dot] com) are decoded, and every row keeps your original input so it joins straight back onto your list.

A page-crawling contact scraper charges by page and returns a row per find; this returns one row per domain, which is what a bulk enrichment job needs.

What this is, in one paragraph

Company websites publish the contact details a sales team needs — a sales@, a switchboard number, a LinkedIn page — but they're scattered across landing pages, contact pages, and footers. This actor gathers them for you: for each URL it reads the page and a few likely contact/about/imprint pages, extracts business emails (including simple obfuscated name [at] domain [dot] com forms), phone numbers, and social links, classifies emails into role-based (info@, sales@) versus named-person business addresses, and confirms via a DNS lookup whether the domain can receive mail. The bulk path is hardened: each fetch is retried up to three times, and when you set a proxy each retry uses a fresh proxy session, so a transient block on one site doesn't sink the run. The output is a B2B prospecting dataset assembled entirely from publicly published sources.

Who buys this and for what job

  • Sales and RevOps teams turning a list of target-company domains into reachable contact records.
  • Lead-generation and agency teams enriching prospect lists with a verified point of contact per account.
  • Data teams building a company-contact table keyed by domain.
  • Builders and agents who need a keyless contact-extraction endpoint they can call over a big URL list.

The job it does: take the websites you already care about and return the business contact details published on them — at scale, with mail-server verification, and without an account or key.

Buyers usually search for this as "website contact scraper" or "email extractor from website".

Sample output

Sample output — Bulk Website Contact Extractor — Emails & Phones API

Output fields of this actor.

Pricing

Pay per event. One event: a contact record delivered (one per URL processed). Tiered by your Apify plan; the record is delivered before it is charged. No subscription. A URL that yields no contacts still returns a record and counts as one processed site, exactly as a contact API would meter a lookup.

EventFree planBronzeSilverGold / Platinum / Diamond
Contact record$0.04$0.036$0.032$0.0268

About 25 sites per dollar at the base rate.

Input

FieldTypeDefaultDescription
urlsarray(required)Website URLs or domains to extract from. Aliases domains, websites, startUrls, targetUrls, siteUrls, url are all accepted.
crawl_contact_pagesbooleantrueAlso follow likely contact / about / imprint pages for more complete data.
max_pages_per_siteinteger3Maximum pages fetched per site (landing page plus contact/about pages).
verifyMxbooleantrueCheck via DNS whether each domain can receive mail — a DNS lookup only, never a mailbox probe.
request_timeout_secsinteger20Per-request timeout.
proxyConfigurationobjectNo proxy (useApifyProxy: false)Proxy for site requests. Apify proxy with no group chosen uses the automatic datacenter proxy; residential only if you select the RESIDENTIAL group.

Output

One JSON object per URL. Real example:

{
"record_id": "apify.com",
"source_url": "https://apify.com",
"domain": "apify.com",
"page_title": "Apify",
"emails": ["hello@apify.com", "support@apify.com"],
"role_emails": ["hello@apify.com", "support@apify.com"],
"personal_emails": [],
"phones": [],
"social_links": ["https://github.com/apify", "https://linkedin.com/company/apify"],
"email_count": 2,
"phone_count": 0,
"pages_crawled": 3,
"has_mx": true,
"mx_provider": "Google Workspace",
"success": true,
"error": null,
"observed_at": "2026-08-25T00:00:00Z"
}

An unbilled RUN_RECEIPT records how many URLs went in, how many records were delivered, and how many yielded at least one contact.

Field reference

Each record carries record_id and domain, the source_url, the page_title, and the extracted contact data: emails (all of them), split into role_emails and personal_emails, plus phones and social_links. email_count and phone_count are convenience counts, pages_crawled says how deep it went, and has_mx / mx_provider report the domain's mail capability from a DNS check. success and error let your pipeline branch. Provenance travels on every record: source, licence, attribution, disclaimer, and observed_at.

How a run works

For each URL the actor fetches the landing page (directly by default, or through the proxy you set), and — if crawling is on — a few likely contact/about/imprint pages on the same domain. It extracts emails (dropping asset filenames and placeholder addresses), phones, and social links across those pages, de-duplicates them, classifies each email, and optionally confirms the domain's mail server via a DNS MX lookup. Every URL produces exactly one delivered, billed record, whether or not contacts were found, so your cost is predictable and every input is accounted for. Transient blocks are retried (on a fresh proxy session when a proxy is set) before the URL is marked unreachable.

Bulk hardening

This actor is built for large URL lists. Each fetch is retried up to three times — each retry on a fresh proxy session when you set a proxy — so an intermittent block or timeout on one site is transparently re-rolled rather than lost. Contact-page crawling is bounded by max_pages_per_site so cost and time stay predictable across a big batch, and every site resolves to exactly one billed record — number of URLs in equals number of records out equals number of events billed.

Use with AI agents

Point Claude, an OpenAI Agents SDK tool, an n8n or Make flow, or any MCP-aware client at this actor and hand it a list of company URLs. Because the output is flat JSON keyed by domain, an agent can enrich an account list with a point of contact per company in one pass and route the misses to a human. A typical prompt: pull the business contact emails and phone for each of these company websites.

Why one record per site

Keeping the output at one record per URL — rather than one row per email — is what makes this actor easy to join and easy to budget. Every site you feed in comes back as exactly one row keyed by its domain, with its emails, phones, and social links held together in that row, so the result slots straight into an account list without a second grouping step. It also makes cost trivial to predict: the number of URLs you submit is the number of records you get back and the number of events you are billed, full stop. When you want the emails broken out individually — for example to load them into a sequencing tool — a single flatten step on the emails array does it, while the account-level view stays intact for everything else.

Lawful use and limitations

  • Business contacts, public sources. Every field comes from the public web pages at the URLs you supply. This is a B2B prospecting dataset for contacting businesses and their published business contacts — not a tool for compiling data on private individuals.
  • Use it lawfully. Respect applicable outreach and data-protection law (for example GDPR legitimate-interest and CAN-SPAM requirements) and honour opt-outs and unsubscribe requests.
  • MX is a DNS check. Mail-server verification is a DNS lookup that confirms a domain can receive mail; it is never an SMTP mailbox probe and does not confirm a specific address is active.
  • Coverage varies. Some sites publish no contact details, obfuscate them, or load them via scripts; those return an empty but honest record. No data beyond published business contact details is collected.

Business contact details extracted from the public web pages at the supplied URLs, for B2B outreach. Intended for contacting businesses and their published business contacts, not private individuals. Use in line with applicable outreach and data-protection law, and honour opt-outs.