Website Contact Scraper - Emails, Phones & Socials avatar

Website Contact Scraper - Emails, Phones & Socials

Pricing

$5.00 / 1,000 contact founds

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

Website Contact Scraper - Emails, Phones & Socials

Extract emails, phone numbers, social profiles & addresses from any list of websites or domains. Crawls home + contact/about pages, decodes Cloudflare-obfuscated emails, and outputs one clean lead record per domain with a lead score. Export JSON, CSV, Excel.

Pricing

$5.00 / 1,000 contact founds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Website Contact Scraper — Emails, Phone Numbers, Socials & Addresses

Turn any list of websites or domains into ready-to-contact B2B leads. This actor visits each site's home page plus its contact, about, team and imprint pages and extracts every public contact signal: email addresses (including Cloudflare-obfuscated and [at] / [dot] ones), phone numbers, social profiles (LinkedIn, Twitter/X, Facebook, Instagram, YouTube, TikTok, Pinterest, GitHub), the physical address, the company name, and a contact-form URL — then ships one clean, de-duplicated lead record per domain with a 0–100 lead score.

No browser, no login, no API keys — fast direct HTTP, cheap on datacenter proxies, 99%+ reliable.

Why this contact scraper?

It's the last mile of every lead pipeline: you already have a list of company websites — now get the contacts. Unlike basic email grabbers, this actor crawls the pages where contacts actually live, decodes obfuscated emails, validates phone numbers, and merges everything per domain so you get dense, deliverable leads instead of noise.

DataBasic email grabbersThis actor
Emails from mailto: and page text
Cloudflare-obfuscated emails (__cf_email__)✅ decoded
[at] / [dot] obfuscated emails
Junk-email filtering (images, no-reply, fake TLDs)
Phone numbers (validated)partial
LinkedIn / X / Facebook / Instagram / YouTube / TikTok / Pinterest / GitHub
Physical address (Schema.org / JSON-LD)
Company name + description
Auto-crawls contact / about / team pages
One de-duplicated record per domain + lead score
Monitor mode — only new/changed contacts

Use cases

  • Lead generation & cold outreach — turn a list of company domains into emails, phones, and social handles for your CRM or sequence.
  • Enrich any prospect list — feed website URLs you already have (from a directory, an export, a scrape) and get back deliverable contact data.
  • Sales & agency prospecting — qualify and contact businesses at scale, scored by how reachable they are.
  • Recruiting — pull contact details for target companies.
  • Data cleaning & verification — re-check a list on a schedule with monitor mode to catch newly-added or changed contacts.
  • Link building & PR — find the right contact on each target site for outreach.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Website Contact Scraper, paste your websites or domains, set how many pages per site to scan, and click Start.
  3. Watch lead records stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"startUrls": [
{ "url": "https://stripe.com" },
{ "url": "https://basecamp.com/contact" }
],
"domains": ["notion.so", "figma.com"],
"maxPagesPerSite": 5,
"crawlContactPages": true,
"includePhones": true,
"includeSocials": true,
"onlyWithEmail": false
}
  • startUrls — websites/pages to scrape (full URLs or bare domains).
  • domains — a plain list of domains; combined with startUrls.
  • maxPagesPerSite (default 5) — home page + the best contact/about/team/imprint pages.
  • crawlContactPages (default true) — auto-discover and scan contact/about pages.
  • sameDomainOnly (default true) — only follow internal links.
  • includePhones / includeSocials / includeAddress (default true) — toggle each field group.
  • onlyWithEmail (default false) — keep only sites where a public email was found.
  • monitorMode (default false) — only output sites whose contacts changed since the last run with the same list.
  • maxResults / maxConcurrency — caps and parallelism.
  • proxyConfiguration — default Apify datacenter proxy works for the vast majority of sites.

Output

One de-duplicated record per domain:

{
"domain": "stripe.com",
"websiteUrl": "https://stripe.com/",
"companyName": "Stripe",
"description": "Stripe is a suite of APIs powering online payment processing…",
"emails": ["sales@stripe.com", "jane.diaz@stripe.com"],
"emailCount": 2,
"primaryEmail": "sales@stripe.com",
"emailSources": [{ "email": "sales@stripe.com", "source": "mailto" }],
"phones": ["+1 888 926 2289"],
"primaryPhone": "+1 888 926 2289",
"socials": {
"linkedin": "https://www.linkedin.com/company/stripe/",
"twitter": "https://twitter.com/stripe",
"facebook": "https://www.facebook.com/StripeHQ",
"instagram": "https://www.instagram.com/stripehq/",
"youtube": "https://youtube.com/@stripe",
"github": "https://github.com/stripe"
},
"socialCount": 6,
"address": "354 Oyster Point Blvd, South San Francisco, CA, 94080, US",
"contactFormUrl": "https://stripe.com/contact/sales",
"pagesCrawled": ["https://stripe.com/", "https://stripe.com/contact"],
"hasEmail": true,
"leadScore": 88,
"scrapedAt": "2026-06-16T22:00:00.000Z"
}

What to expect

Coverage depends on what each site publishes. Big SaaS sites often route contact through forms (so you'll get the form URL + socials + address rather than a personal email); small and mid-market businesses usually expose role emails (info@, sales@, contact@) and phones directly. Emails are aggressively de-junked — image hashes, no-reply, analytics strings, and fake TLDs are dropped — so what you get is deliverable. A field is blank only when the site doesn't publish it.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/website-contact-scraper').call({
domains: ['stripe.com', 'notion.so', 'figma.com'],
maxPagesPerSite: 5,
onlyWithEmail: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} contact leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new leads straight into your CRM.
  • Slack — get notified when monitor mode finds new contacts.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find the contact email and LinkedIn for each of these company websites" and let it run this scraper for you.

More scrapers from scrapesage

This actor is the last mile of any lead pipeline — pair it with a directory scraper to get the websites, then extract the contacts:

Tips

  • Feed it directory output — export website URLs from any of the scrapers above and drop them into domains or startUrls to enrich them with contacts.
  • Tune pages per sitemaxPagesPerSite: 1 is fastest (home page only); 5–8 finds the most contacts on sites that bury them in contact/about pages.
  • Keep only contactable leads — set onlyWithEmail: true to drop sites with no public email.
  • Re-check on a schedule — turn on monitorMode and schedule the run to catch newly-published emails, phones, or socials over time.

FAQ

Where do the contacts come from? From each website's own public pages — mailto: links, visible text, structured data (Schema.org / JSON-LD), and social links — the same things a human visitor would see. No private databases or logins.

Does it decode hidden / Cloudflare emails? Yes. It decodes Cloudflare's __cf_email__ obfuscation and common [at] / [dot] patterns, while filtering out junk like image filenames, no-reply, and fake TLDs.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

Why did a big company return no email? Many large companies route contact through a form rather than publishing an address — you'll still get the contact-form URL, socials, and address. Small and mid-market sites usually expose emails directly.

How does monitor mode work? It remembers each site's contact "fingerprint" in a named key-value store and only re-emits a site when its emails, phones, or socials change — ideal for keeping a prospect list fresh on a schedule.

Is this legal? This actor collects publicly available business contact information only. You are responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data, CAN-SPAM for outreach) and each site's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.