Website Contact Scraper - Emails, Phones & 5 Socials avatar

Website Contact Scraper - Emails, Phones & 5 Socials

Under maintenance

Pricing

from $1.50 / 1,000 domains

Go to Apify Store
Website Contact Scraper - Emails, Phones & 5 Socials

Website Contact Scraper - Emails, Phones & 5 Socials

Under maintenance

Crawl any list of domains and extract business emails, phone numbers and social profile links (LinkedIn, X, Facebook, Instagram, YouTube) from homepages, contact & about pages. No API key. Use as an MCP server in Claude, ChatGPT & AI agents.

Pricing

from $1.50 / 1,000 domains

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

3

Monthly active users

21 hours ago

Last modified

Share

Website Contact Scraper — Emails, Phones & 5 Socials

The Mine Works: 544 users across 100 public Actors, >99% run success. Pay only for results delivered. Browse all Actors.

How to extract emails and phone numbers from a list of websites

Give it domains. It crawls each site's homepage plus /contact, /about, /contact-us, and /team, follows footer links, and returns one deduplicated record per domain with every publicly published email, phone number, and social profile URL across five networks (LinkedIn, X/Twitter, Facebook, Instagram, YouTube).

No API key, no signup, no per-seat licence. And the billing rule that matters: a domain that returns no contact at all is never charged. You pay for domains that actually produced something.

✅ No API key or login · ✅ 5 social networks detected · ✅ One clean record per domain · ✅ Empty domains never billed · ✅ MCP-ready for AI agents

Scrape contact details from a list of company domains

The core run. Bare domains, www. forms, and full URLs are all normalised to a root domain.

{
"domains": ["stripe.com", "notion.so", "https://linear.app/about"],
"maxPagesPerSite": 5
}

Crawl deeper on sites that bury their contact page

maxPagesPerSite is the whole cost lever: it caps how many pages are fetched per domain. Raise it for sites with a deep footer or a multi-level about section.

{
"domains": ["bigcorp.com", "enterprise-vendor.io"],
"maxPagesPerSite": 15
}

Do a cheap first pass over a large domain list

Set the page budget to 1 and the actor only fetches the homepage of each domain. Most small businesses publish their phone and email in the header or footer, so a homepage-only pass is often enough — and it is the cheapest way to triage a long list before spending on the survivors.

{
"domains": ["...", "...", "..."],
"maxPagesPerSite": 1
}

Enrich a Google Maps or CRM list with social profiles

Pipe the domains from Google Maps Leads Scraper straight in. The socials object gives you a LinkedIn company URL you can hand to LinkedIn Company Scraper for firmographics.

{
"domains": ["localdentist.com", "citylawfirm.co.uk", "acmeplumbing.in"],
"maxPagesPerSite": 5
}

What data do you get for each domain

Real record from a live crawl of basecamp.com:

{
"domain": "basecamp.com",
"emails": ["jason@basecamp.com"],
"phones": [],
"socials": {},
"pagesScanned": 4,
"scrapedAt": "2026-07-15T04:22:21.685Z"
}
FieldDescription
🌐 domainThe website domain that was crawled (e.g. stripe.com)
📧 emailsDeduplicated array of email addresses found across the crawled pages
📞 phonesDeduplicated array of phone numbers found across the crawled pages
🔗 socialsSocial profile URLs keyed by platform: linkedin, twitter, facebook, instagram, youtube
📄 pagesScannedNumber of pages successfully fetched for this domain
🕒 scrapedAtISO timestamp when this domain was processed

phones and socials come back empty in the example above because neither was found within the page budget — which is common and worth planning for: not every site publishes a phone number, and social links often live outside the default crawl depth. Raise maxPagesPerSite when a domain matters.

How the extraction works. Emails come from mailto: links and address patterns in visible page text. Phones come from tel: links and properly formatted numbers. Social links are matched only on real profile paths — linkedin.com/company|in|school/…, and a non-root path on x.com/twitter.com, facebook.com, instagram.com, youtube.com — so a bare share button does not get recorded as a profile. Everything is merged and deduplicated per domain before the record is written.

What does contact scraping cost here

EventPriceYou pay when
Domain processed$0.001A domain returns at least one email, phone, or social profile

$1.00 per 1,000 domains with contacts. A domain that fails to crawl, or returns nothing at all, produces a record for your audit trail but is not charged. There is no start fee and no subscription.

Common use cases

Outbound list building. Turn a target account list into a contactable one without a data subscription.

Lead enrichment. Append emails, phones, and social handles to domains you already hold in a CRM.

Agency prospecting. Crawl a directory export or a conference exhibitor list and get straight to who to contact.

Partner and supplier research. Pull published contact routes for a set of vendors in one pass.

Getting started

  1. Paste your domains into the domains field, one per line. Bare domains, www. forms, and full URLs all work.
  2. Set maxPagesPerSite (default 5). This is your main cost and speed control.
  3. There's no proxy option to configure — this actor fetches pages directly over plain HTTP, always. A domain that blocks direct requests is skipped, not retried through a paid proxy.
  4. Click Start, then export as JSON, CSV, or Excel, or pull it via API or MCP.

Run it on a schedule

  1. Run the actor once with the input you want repeated, then click Save as a task.
  2. In the Apify Console, go to SchedulesCreate new.
  3. Name it, set your timezone, and pick a frequency or a cron expression (e.g. 0 6 * * *).
  4. Under Actors or tasks to run, add the task you saved.
  5. Save. Nothing is charged just for a schedule existing.

Full options are in Apify's Schedules documentation.

FAQ

Which pages does it actually crawl? The homepage, then /contact, /about, /contact-us, and /team, then footer-discovered links — up to your maxPagesPerSite budget.

Which social networks are detected? Five: LinkedIn, X/Twitter, Facebook, Instagram, and YouTube. Only genuine profile paths are recorded, not share widgets.

Am I charged for a domain with no contacts? No. The charge fires only when at least one email, phone, or social profile was found. You still get a record, so you can see the domain was tried.

Why did I get fewer phone numbers than expected? Numbers are taken from tel: links and properly formatted text. Bare digit runs are rejected, because a digit run is indistinguishable from an order ID or a date. Fewer numbers, but the ones you get are real.

Are the emails verified? No — they are extracted as published. Pipe the output into Email Verifier & Validator for MX and SMTP checks before you send.

Can it get past bot protection? No. This actor is direct HTTP only — no proxy, no browser, by design, not as an option you can change. A domain with real bot protection returns fewer pages, or none; those are simply not counted or charged, rather than retried through a paid workaround.

Is this GDPR compliant? It collects only contact details a business has published on its own website. You are responsible for having a lawful basis for contacting them under GDPR, CCPA, and local marketing law.

Use from Claude, ChatGPT and any MCP agent

https://mcp.apify.com/?tools=themineworks/website-contact-finder

Or call it programmatically:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('themineworks/website-contact-finder').call({
domains: ['stripe.com', 'notion.so'],
maxPagesPerSite: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Complete your outbound pipeline

Extracted the contacts. Now find the people behind them and verify:

Typical flow: maps-leads finds the businesses, website-contact-finder pulls the site contacts, email-verifier-validator confirms deliverability.

Questions or need a custom field set? Reach out through the Apify profile.

Last verified: 2026-08