Website Contact Scraper — Emails, Phones & Social Media
Pricing
from $4.00 / 1,000 email founds
Website Contact Scraper — Emails, Phones & Social Media
Email extractor and B2B lead scraper. Crawls any website and extracts emails, phone numbers, and 14 social media profiles (LinkedIn, Twitter/X, Instagram, Facebook, WhatsApp, Telegram, Discord, TikTok, YouTube, Pinterest, Snapchat, Reddit, Threads, GitHub). Pay per email found — no wasted spend.
Pricing
from $4.00 / 1,000 email founds
Rating
0.0
(0)
Developer
extractmaster01
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
Website Contact Scraper — Extract Emails, Phone Numbers & Social Media Profiles
Website Contact Scraper crawls any website and extracts emails, phone numbers, and social media profiles. Give it a list of URLs and get back a dataset with every email found, phones, and 14 social platforms per domain. No subscriptions.
What data can Website Contact Scraper extract?
| Data type | Details |
|---|---|
| 📧 Email addresses | Deduplicated per domain, quality-filtered, Cloudflare obfuscation decoded, optional MX validation |
| 📞 Phone numbers | US formats (555) 555-5555, international +44 20 7946 0958, +55 11 99999-0000 |
| Company and personal profiles | |
| 🐦 Twitter / X | Brand and personal handles |
| Business and creator profiles | |
| Pages and business profiles | |
| ▶️ YouTube | Brand channels |
| 🎵 TikTok | Brand and creator profiles |
| 💻 GitHub | Organization profiles, user profiles, and repositories |
| Business numbers, direct links, and WhatsApp Channels | |
| ✈️ Telegram | Channels, groups, and user profiles |
| 🎮 Discord | Server invite links |
| Brand profiles | |
| 👻 Snapchat | Public profiles |
| 🧵 Threads | Public profiles |
| Subreddits and user pages |
Why use Website Contact Scraper?
Most contact scrapers only return emails or lock you into a monthly subscription. This one returns the full contact profile for every domain you scrape, and you only pay for what the Actor actually does.
| Feature | This Actor | Email-only scrapers | $10–$20/mo scrapers |
|---|---|---|---|
| Email addresses | ✅ | ✅ | ✅ |
| Phone numbers | ✅ | ❌ | ✅ |
| 14 social platforms | ✅ | ❌ | ✅ |
| Email domain validation | ✅ | ❌ | Paid add-on |
| Contact page auto-discovery | ✅ | ❌ | ❌ |
| Pay per event (no subscription) | ✅ | Some | ❌ |
| Per-domain grouped output | ✅ | ❌ | ✅ |
| Cloudflare email decode | ✅ | ❌ | ❌ |
How to scrape contact information from any website
- Create a free Apify account using your email.
- Open Website Contact Scraper and go to the Input tab.
- Add your URLs — one domain per entry. Duplicates are handled automatically.
- Pick an output mode —
per-emailfor CRM import orper-domainto get everything grouped by site. - Click Start — the Actor automatically discovers contact pages and crawls up to the configured depth.
- Download your data as JSON, CSV, Excel, XML, or HTML, or connect via API.
{"urls": [{ "url": "https://company1.com" },{ "url": "https://company2.com" },{ "url": "https://company3.com" }],"contactPagesOnly": true,"outputMode": "per-domain"}
How much does it cost to scrape emails from websites?
Website Contact Scraper uses the pay-per-event (PPE) pricing model — no subscription, no monthly fee. You pay only for what the Actor actually does. Check the Pricing tab for the full event list.
There are two billable events:
| Event | Price | When it fires |
|---|---|---|
domain-processed | $0.01 | Once per domain, when the first page loads successfully. Domains where every page is blocked (status: "blocked") are not charged. |
email-found | $0.004 | Once per unique email found. Domains with no emails found are not charged this event. |
Estimated cost by batch size (assuming ~2 emails per domain on average):
| Domains | Emails found | Estimated cost |
|---|---|---|
| 10 | ~20 | ~$0.18 |
| 50 | ~100 | ~$0.90 |
| 100 | ~200 | ~$1.80 |
| 500 | ~1,000 | ~$9.00 |
| 1,000 | ~2,000 | ~$18.00 |
Note: domain-processed does not fire for domains where every page is blocked (status: "blocked") or where the site is a JavaScript-only SPA (status: "js-only") — you are not charged for sites that cannot be scraped. Domains that require residential proxies may incur additional platform proxy usage costs.
To control costs, use maxEmailsPerDomain to cap emails per site and maxPagesPerDomain to limit the number of pages crawled per domain.
⚙️ Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | array | required | Website URLs to crawl |
urls[*].userData.maxNbEmailsToScrape | integer | 0 | Per-URL email cap (0 = unlimited) |
outputMode | string | per-email | per-email: one row per email · per-domain: all contacts grouped |
maxEmailsPerDomain | integer | 0 | Global email cap per domain (cost control) |
maxPagesPerDomain | integer | 0 | Max pages to crawl per domain (cost control) |
crawlDepth | integer | 2 | How deep to follow links (1–5) |
contactPagesOnly | boolean | true | Only visit contact-related pages (faster, cheaper) |
extractPhones | boolean | true | Extract phone numbers |
extractSocials | boolean | true | Extract 14 social profiles |
validateEmails | boolean | false | DNS MX check — filters dead domains |
proxyConfiguration | object | Apify Proxy | Pass null for direct mode (no proxy) |
For the full input reference, see the Input tab.
📊 Output examples
outputMode: "per-email" — one row per email (CRM-ready)
Best for importing directly into HubSpot, Salesforce, Apollo, or any sequencer. Phones and socials are included in every row.
{"seedUrl": "https://acme.com","domain": "acme.com","pageUrl": "https://acme.com/contact","email": "sales@acme.com","phones": ["+1-555-0123"],"phonesUncertain": [],"socials": {"linkedin": "https://linkedin.com/company/acme","twitter": "https://x.com/acmecorp","instagram": null,"facebook": "https://facebook.com/acmecorp","youtube": null,"tiktok": null,"github": null,"whatsapp": "https://wa.me/15550123","telegram": null,"discord": null,"pinterest": null,"snapchat": null,"reddit": null,"threads": null},"scrapedAt": "2026-06-04T10:00:00.000Z"}
outputMode: "per-domain" — all contacts grouped
One row per domain with all emails, phones, and socials found across every page visited.
{"seedUrl": "https://acme.com","domain": "acme.com","emails": ["sales@acme.com", "info@acme.com", "support@acme.com"],"phones": ["+1-555-0123", "+1-555-9876"],"phonesUncertain": ["(800) 555-9876"],"socials": {"linkedin": "https://linkedin.com/company/acme","twitter": "https://x.com/acmecorp","instagram": null,"facebook": "https://facebook.com/acmecorp","youtube": null,"tiktok": null,"github": null,"whatsapp": "https://wa.me/15550123","telegram": null,"discord": null,"pinterest": null,"snapchat": null,"reddit": null,"threads": null},"pagesScanned": 3,"status": "success","scrapedAt": "2026-06-04T10:00:00.000Z"}
The status field tells you what happened per domain:
| Value | Meaning |
|---|---|
success | Contacts found, no pages were blocked |
partial | Contacts found, but some pages were blocked by bot protection |
empty | Crawled OK but no contacts found (contact form only, or genuinely no public email) |
blocked | All pages were blocked — no data collected |
js-only | Site renders content via JavaScript (SPA/React/Vue) — no static HTML contact data found |
You can download the dataset as JSON, CSV, Excel, XML, or HTML from the dataset view.
💡 Use cases for website contact scraping
B2B sales prospecting — Turn a list of target domains into a contact file ready to import, with email, phone, and LinkedIn in every row.
Agency lead generation — Find contacts at target companies by category and city, at scale.
CRM enrichment — Fill missing email and phone fields for existing accounts in bulk.
Recruiting — Collect contact info from company career and team pages.
Partnership outreach — Extract contacts from potential partners, resellers, or integration targets.
Competitor research — Map the social media presence and contact points of competitors.
🔗 Integrations
You can integrate Website Contact Scraper with almost any cloud service or web app. The Apify platform has built-in integrations, a full REST API, scheduling, and webhook support.
- Make / Zapier — trigger workflows when new contacts are found
- Google Sheets — direct dataset export
- HubSpot / Salesforce / Apollo — import CSV or use the API
- Webhooks — get notified when a run completes
- Apify API —
apify-clientfor Node.js and Python - MCP Server — use this Actor directly inside Claude or any MCP-compatible client
❓ Frequently asked questions
Does Website Contact Scraper work on all websites?
It works on most contact, about, and team pages since these are almost always static HTML. For sites that require JavaScript to render content, the Actor detects this and marks the domain as status: "js-only" in the output.
Why didn't it find emails on a specific site?
Check the status and debugInfo fields in per-domain mode. Common causes are emails only visible after a form submission, or the domain blocking datacenter IPs. The pagesScanned field shows which pages were visited.
How do I extract emails from multiple websites at once?
Add all your URLs to the urls array. Each domain is processed independently and results are deduplicated automatically.
Can I use Website Contact Scraper with the Apify API?
Yes. The Apify API lets you run the Actor, retrieve datasets, schedule runs, and set up webhooks. Use the apify-client package for Node.js or Python. See the API tab for the full reference.
Is it legal to scrape contact information from websites?
Scraping publicly available contact information is generally legal, but you should check compliance with GDPR, CAN-SPAM, and the terms of service of each website before using the data for outreach.
What does email validation do?
When validateEmails: true, each email domain is checked for a valid mail server via DNS. Domains without one are discarded, which filters out dead domains and placeholder addresses.
Your feedback
If you found a bug or have a feature request, please create an issue in the Issues tab.
You might also like
Apify Store Scraper — scrapes all 26,000+ Actors on the Apify Store. Useful for market research and competitor tracking.