Website Contact Scraper - Emails, Phones & 5 Socials
Under maintenancePricing
from $1.50 / 1,000 domains
Website Contact Scraper - Emails, Phones & 5 Socials
Under maintenanceCrawl 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
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Website Contact Scraper: Emails, Phones & 5 Socials
Pay only for results delivered. Browse all Actors.
๐ฐ From $1.50 / 1,000 results.
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"}
| Field | Description |
|---|---|
๐ domain | The website domain that was crawled (e.g. stripe.com) |
๐ง emails | Deduplicated array of email addresses found across the crawled pages |
๐ phones | Deduplicated array of phone numbers found across the crawled pages |
๐ socials | Social profile URLs keyed by platform: linkedin, twitter, facebook, instagram, youtube |
๐ pagesScanned | Number of pages successfully fetched for this domain |
๐ scrapedAt | ISO 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
| Event | Price | You pay when |
|---|---|---|
| Domain processed | $0.001 | A domain returns at least one email, phone, or social profile |
$1.50 per 1,000 domains with contacts on Gold and above, $2.50 per 1,000 on the Free plan. A domain that fails to crawl, or returns nothing at all, produces a record for your audit trail but is not charged. There is and no subscription.
๐ On the
GOLDtier and above: $1.50 per 1,000 results ($0.0015 each, 40% below theFREE-tier price of $0.0025). Your tier is shown on your Apify billing page.
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
- Paste your domains into the
domainsfield, one per line. Bare domains,www.forms, and full URLs all work. - Set
maxPagesPerSite(default 5). This is your main cost and speed control. - 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.
- Click Start, then export as JSON, CSV, or Excel, or pull it via API or MCP.
Run it on a schedule
- Run the actor once with the input you want repeated, then click Save as a task.
- In the Apify Console, go to Schedules โ Create new.
- Name it, set your timezone, and pick a frequency or a cron expression (e.g.
0 6 * * *). - Under Actors or tasks to run, add the task you saved.
- 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:
- B2B Leads Finder: turn any domain list into named decision-maker contacts with emails.
- Email Verifier & Validator: MX and SMTP verify every email before you send.
- Google Maps Leads Scraper: pull businesses and domains from Google Maps by search query.
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.
Related guides
Last verified: 2026-08