Website Contact Scraper — Bulk Emails, Phones & Socials | $1/1k
Pricing
from $1.00 / 1,000 results
Website Contact Scraper — Bulk Emails, Phones & Socials | $1/1k
Bulk contact scraper for up to 100 domains in parallel — emails, phones, and 7 social platforms in one run. Decodes obfuscated emails ([at], HTML entities). $1 per 1000 results.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Raven
Maintained by CommunityActor stats
1
Bookmarked
138
Total users
28
Monthly active users
10 hours ago
Last modified
Categories
Share
Website Contact Scraper — Extract Emails, Phone Numbers & Social Links from Any Website | $1 / 1,000
Extract emails, phone numbers, and social media profiles (Facebook, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, GitHub) from any website — from $1 per 1,000 results on paid plans. Feed a list of websites or domains and download clean, deduplicated contact data as JSON, CSV, Excel, or XML. No login, no API key, no code, and no proxy setup — everything runs on Apify.
This is a bulk email extractor, phone number scraper, and lead generation tool in one: crawl up to 100 domains per run in parallel, decode obfuscated emails, validate real phone numbers, and pull social profiles — all billed only for the results you actually get.
What does this Website Contact Scraper do?
Websites don't hand you their contact list through an official API — you have to visit each page, hunt for the email, decode the [at] tricks, and copy the phone number by hand. This Actor is the unofficial contact API for any website: give it URLs, get back structured contacts.
| Mode | What you provide | What you get back |
|---|---|---|
| Single domain | One website URL | All emails, phones, and 7 social profiles found across its pages |
| Bulk list | Up to 100 domains per run | One clean contact record per domain, crawled in parallel |
| Deep crawl | Any URL + a depth setting | Contact/about/impressum pages prioritized, then the rest of the site |
It accepts URLs in any format — example.com, www.example.com, https://example.com/page, or a bare domain — normalizes them, skips duplicates and junk domains (social networks, search engines, CDNs, analytics), and crawls what's left.
Why use this scraper?
- ✅ Bulk extraction — process up to 100 domains per run, crawled in parallel (1–20 domains at a time, your choice)
- ✅ 3 data types per site — emails, phone numbers, and 7 social platforms (Facebook, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, GitHub)
- ✅ Decodes obfuscated emails — unpacks
[at],(at),[dot],(dot), HTML entities (@), and URL-encoded addresses that hide from basic scrapers - ✅ Real phone numbers only — validated with Google's libphonenumber and returned in clean E.164 format; prices, VAT/tax IDs, dates, postcodes, and SKUs are filtered out so you don't get garbage numbers
- ✅ Company vs. third-party emails split — the site's own emails land in
emails; emails on other domains (agencies, partners) go inexternalEmails - ✅ Smart crawling — contact, about, impressum, team, and support pages are crawled first, so you get results with fewer pages scanned
- ✅ Finds sites that moved — if the domain you gave is dead, it automatically probes alternate TLDs of the same brand (e.g. a dead
.uk→ live.de) and scrapes the working one - ✅ Handles broken HTTPS — retries sites with expired or misconfigured SSL certificates instead of skipping them
- ✅ CRM-ready — your original input URL is preserved as
requestedUrlso you can map results back to your spreadsheet rows - ✅ You're never charged for empty results — domains that return nothing (dead, blocked, timed out) are skipped and not billed
- ✅ No browser overhead — uses raw HTTP with browser-like TLS fingerprints, so it runs lean and cheap
How does it compare?
| Contact databases (Apollo, Hunter, ZoomInfo) | Typical website scrapers | This Website Contact Scraper | |
|---|---|---|---|
| Data source | Fixed, often-stale database | Live websites | Live websites you choose |
| Pricing | Subscriptions / per-credit, seats, contracts | Often adds Apify platform fees on top | From $1 / 1,000 results, all-inclusive, no subscription |
| Emails + phones + socials | Usually emails only | Varies | All three in one run |
| Obfuscated email decoding | N/A | Rarely | Yes — [at], entities, URL-encoding |
| Charged for misses | Often yes | Often yes | No — empty domains aren't billed |
| Setup | Account + API keys | Often needs proxies/config | No login, no API key, no proxies |
Competitor capabilities vary by actor — check each listing.
What data can you extract?
Each result is one record per domain with all contacts merged across the pages that were crawled:
| Field | Type | Description |
|---|---|---|
url | string | The final URL that was actually crawled |
requestedUrl | string | The original URL you submitted (for CRM/row mapping) |
domain | string | Domain name of the crawled site |
emails | array | Unique emails on the site's own domain |
externalEmails | array | Unique emails found on other domains (partners, agencies) |
phones | array | Unique, validated phone numbers in E.164 format |
socialLinks | object | Profile URLs for 7 platforms (null when not found) |
pagesScanned | integer | Number of pages actually crawled on this domain |
scrapedAt | string | ISO 8601 timestamp of when the crawl finished |
Social platforms detected (7): facebook, twitter (Twitter/X), linkedin, instagram, youtube, tiktok, github. Share/intent links and platform home pages are filtered out — only real brand profiles are returned.
How to scrape website contacts step by step
- Create a free Apify account — you get free monthly platform credits, no credit card required.
- Open the Website Contact Scraper in the Apify Console.
- Add your websites — paste domains or URLs into Start URLs (any format works), or upload a list.
- (Optional) Tune the crawl — set crawl depth, pages per domain, and how many domains to process in parallel.
- Click Start and watch results stream into the dataset in real time.
- Download your contacts as JSON, CSV, Excel, HTML, or XML — or pull them via the Apify API.
How to scrape more contacts per site (crawl depth & page limits)
Two settings control how deeply each site is crawled:
maxDepth(default2) — how many link-hops from the start page.0= start page only (fastest, cheapest);2covers most small-business sites;3+ for large corporate sites with deep navigation.maxPagesPerDomain(default10, up to500) — a hard cap per domain so a single huge site can't run away with your budget.
The crawler always visits contact, about, impressum, team, and support pages first, so even a low page limit tends to surface the contact details you actually want.
Why some domains return no contacts (and aren't charged)
If a site is offline, blocks all requests, times out, serves non-HTML, or simply has no published contacts, the domain is skipped and not written to your dataset — which means you are not billed for it. This keeps your cost tied to real results. When a site's primary domain is dead, the scraper also probes common alternate TLDs of the same brand and scrapes the live one automatically before giving up.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | required | Websites to scrape (max 100). Accepts full URLs, www. URLs, or bare domains |
maxDepth | integer | 2 | Crawl depth from the start page. 0 = start page only (min 0, max 10) |
maxPagesPerDomain | integer | 10 | Max pages to crawl per domain (min 1, max 500) |
concurrency | integer | 10 | How many domains to process in parallel (min 1, max 20) |
All requests are automatically routed through Apify's proxy network with automatic rotation — no proxy configuration required.
Ready-to-paste input recipes
1. Fast homepage-only sweep (cheapest) — grab contacts from landing pages only:
{"startUrls": [{ "url": "example.com" },{ "url": "another-site.org" }],"maxDepth": 0}
2. Standard contact crawl (recommended default) — homepage + contact/about pages:
{"startUrls": [{ "url": "https://example.com" },{ "url": "www.company.ch" }],"maxDepth": 2,"maxPagesPerDomain": 10}
3. Deep crawl of large corporate sites — dig through big multi-page websites:
{"startUrls": [{ "url": "https://bigcorp.com" }],"maxDepth": 3,"maxPagesPerDomain": 100}
4. High-throughput bulk list — process a large prospect list fast:
{"startUrls": [{ "url": "site-one.com" },{ "url": "site-two.com" },{ "url": "site-three.com" }],"maxDepth": 1,"maxPagesPerDomain": 5,"concurrency": 20}
5. Single-domain deep dive — everything findable on one website:
{"startUrls": [{ "url": "https://example.com" }],"maxDepth": 3,"maxPagesPerDomain": 200,"concurrency": 1}
6. Mixed URL formats — the scraper normalizes them all:
{"startUrls": [{ "url": "example.com" },{ "url": "www.example.org" },{ "url": "https://example.net/contact" }],"maxDepth": 2}
Output example
{"url": "https://example.com","requestedUrl": "example.com","domain": "example.com","emails": ["info@example.com", "sales@example.com"],"externalEmails": ["studio@design-partner.com"],"phones": ["+41441234567"],"socialLinks": {"facebook": "https://facebook.com/example","twitter": "https://x.com/example","linkedin": "https://linkedin.com/company/example","instagram": null,"youtube": null,"tiktok": null,"github": null},"pagesScanned": 12,"scrapedAt": "2026-07-05T12:00:00.000Z"}
Every dataset row uses this exact shape, with null for any social platform that wasn't found — so it maps cleanly into a spreadsheet or database.
How much does it cost to scrape website contacts?
This Actor uses Apify's pay-per-result model: you're charged per contact record returned (one record = one domain successfully scraped). There are no separate charges for compute time, proxies, or platform usage — the price below is all-inclusive.
| Plan | Price per result | Price per 1,000 results |
|---|---|---|
| Free tier | $0.005 | $5 |
| Paid plans (Starter and up) | $0.001 | $1 |
Worked examples (paid-plan rate)
| Domains scraped | Records returned | Cost |
|---|---|---|
| 100 | up to 100 | up to $0.10 |
| 1,000 | up to 1,000 | up to $1.00 |
| 5,000 | up to 5,000 | up to $5.00 |
Because domains that return nothing are never written to the dataset, your actual bill is usually lower than the number of URLs you submitted.
Free plan translation: the Apify Free plan's $5 in monthly credits covers roughly 1,000 contact records per month at the free-tier rate — enough to test real lists before upgrading.
Integrations
Push your extracted contacts straight into your stack — no glue code required:
- Google Sheets — append new contacts to a sheet automatically
- Make, Zapier & n8n — trigger workflows on every run (e.g. add rows to a CRM)
- Slack — get notified when a run finishes
- HubSpot, Salesforce, Pipedrive — enrich CRM records via your automation tool of choice
- Webhooks — POST results to your own endpoint on completion
- Apify API & client libraries (JavaScript / Python) — run the scraper and fetch data programmatically
- Schedules — run the scraper daily, weekly, or on any cron you like
Use with AI agents (MCP)
This Actor works with the Apify MCP server, so AI assistants and agent frameworks (Claude, ChatGPT, LangChain, and any MCP-compatible client) can run it with natural language and use the results as a live contact-lookup tool.
Example prompt to an MCP-connected agent:
"Use the Website Contact Scraper to extract emails, phones, and social profiles from example.com, competitor.com, and partner.io, then give me a table of every company email you found."
Popular use cases
- Lead generation — turn a list of prospect websites into a contact list
- Sales prospecting — find decision-maker emails and company phone numbers at scale
- Cold email & outreach — build targeted outreach lists from real business sites
- CRM enrichment — fill in missing emails, phones, and socials on existing records
- Recruiting & sourcing — collect company contact details for candidate and client outreach
- Market & competitive research — map contact info and social presence across a market
- Agencies — deliver contact datasets for clients without manual research
Is it legal to scrape website contacts?
Web scraping is legal when you collect publicly available data, and business contact details published on a company's own website are public information. However, your results may contain personal data, which is protected by GDPR in the EU and by laws such as CAN-SPAM and CASL elsewhere. You should only collect and use contact data when you have a legitimate reason to do so, and you're responsible for complying with the applicable privacy and anti-spam laws when you contact anyone.
For a deeper overview, see Apify's guide: Is web scraping legal?
FAQ
Does this scraper have a public API?
Yes. Every Apify Actor can be run through the Apify API and the official JavaScript and Python clients, so you can trigger runs and download contacts programmatically. It effectively gives any website a contact-extraction API.
Do I need proxies or an API key from the target sites?
No. Requests are automatically routed through Apify's proxy network with rotation built in. You don't configure proxies, and you never need credentials from the websites you scrape.
Will every website return an email?
No — some sites publish contacts only in images, PDFs, or JavaScript-rendered contact forms, which this scraper doesn't read. It extracts contacts from HTML pages (visible text, mailto:/tel: links, and social links). Sites that return nothing simply aren't charged.
Why did I get fewer results than the number of URLs I submitted?
Domains that are offline, blocking requests, timing out, or have no published contacts are skipped and left out of the dataset — so you're not billed for them. That's why your result count (and cost) is often lower than your input list.
Will I be charged for URLs that return nothing?
No. You're only charged per contact record written to the dataset. Empty, dead, or blocked domains produce no record and no charge.
What's the difference between emails and externalEmails?
emails are addresses on the site's own domain (the ones you usually want). externalEmails are addresses found on the site but hosted on other domains — often an agency, partner, or third-party tool.
How many websites can I scrape in one run?
Up to 100 domains per run, processed in parallel. For larger lists, split them across multiple runs or schedule recurring runs.
What phone number format do I get?
Validated numbers in E.164 format (e.g. +41441234567). Numbers are checked with Google's libphonenumber, and price tags, VAT/tax IDs, dates, postcodes, and product codes are filtered out.
Which social networks does it detect?
Seven: Facebook, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, and GitHub. Only genuine brand profiles are returned — share buttons and platform home pages are ignored.
Can I export the data to CSV or Excel?
Yes. Results can be downloaded as JSON, CSV, Excel, HTML, or XML from the run's dataset, or fetched via the API.
Can I control how deep it crawls?
Yes. Use maxDepth for link depth (0 = start page only) and maxPagesPerDomain to cap pages per site. Contact/about pages are always crawled first.
Does it work on sites with broken or expired SSL certificates?
Yes. If a site has a misconfigured or expired certificate, the scraper retries it rather than skipping it — common for small-business websites.
What happens if the domain I entered is dead?
The scraper probes common alternate TLDs of the same brand (for example a dead .uk domain against .com, .de, .fr, and others) and scrapes the live one automatically.
Does it render JavaScript?
No. It fetches HTML directly (with browser-like TLS fingerprints) rather than running a headless browser, which keeps it fast and cheap. Contacts that appear only after client-side JavaScript execution aren't captured.
Feedback & support
Found a bug, or want a new feature? Open an issue on the Actor's Issues tab, or email afrcanec@gmail.com. Sharing your run link helps us reproduce and fix issues faster.
More scrapers by this developer
- Google Maps Scraper — Emails, Reviews & Photos — find local businesses and their contact details
- SimilarWeb Fast Scraper — website traffic, rankings & analytics
- Ahrefs All-in-One SEO Scraper — DR, backlinks & keywords
- Semrush Full API SEO Scraper — traffic, authority & backlinks
- Reddit Scraper All-in-One — posts, comments & email finder
- TikTok Profile Scraper + Contacts — profiles, analytics & contacts
Tags: email extractor, contact scraper, email scraper, phone number extractor, social media links scraper, lead generation, b2b leads, sales prospecting, data enrichment, bulk email finder, website crawler, contact discovery, email finder, extract emails from website, find emails on a website, website email scraper, business email finder, company contact scraper, cold email, outreach, crm enrichment, apollo alternative, hunter alternative, linkedin extractor, facebook extractor, web scraping, contact information, prospect emails, domain email search, scrape emails, extract contacts