Website Contact Extractor - Emails, Phones & Social Links
Pricing
from $4.00 / 1,000 contact results
Website Contact Extractor - Emails, Phones & Social Links
Bulk-extract contact details from any list of websites: email addresses, phone numbers, and social profiles (LinkedIn, X, Facebook, Instagram, YouTube). Crawls homepage + contact/about pages. Clean JSON/CSV for lead lists & enrichment.
Pricing
from $4.00 / 1,000 contact results
Rating
0.0
(0)
Developer
Santhej Kallada
Maintained by CommunityActor stats
2
Bookmarked
17
Total users
2
Monthly active users
15 days ago
Last modified
Categories
Share
Website Contact Extractor — Emails, Phones & Social Links in Bulk
Feed it a list of websites, get back every public contact: email addresses, phone numbers and social profiles (LinkedIn, X, Facebook, Instagram, YouTube, WhatsApp, GitHub, TikTok) — one clean, CRM-ready row per site, with optional email verification.
What does Website Contact Extractor do?
For every website you give it, the Actor visits the homepage and then the site's own contact, about, team and careers pages (up to 5 pages per site), and collects the contact details published there. It decodes obfuscated emails such as name [at] domain [dot] com and HTML-entity-encoded addresses, labels role inboxes like info@, sales@ and press@, keeps only numbers that are actually formatted as phone numbers, and can check each email's deliverability.
Every website you submit gets a row back — sites where nothing was found are returned with empty fields and are not charged.
What you get per website
| Field | Description |
|---|---|
url | The start URL that was crawled |
domain | The site's domain, without www. |
emails | Every email address found (mailto links, page text, de-obfuscated) |
email_count | Number of emails found |
email_details | Per email: role (e.g. sales), is_role, and — when verification ran — status, confidence (0–100), is_disposable, is_webmail (free mailbox such as Gmail) |
phones | Phone numbers from tel: links and phone-formatted numbers on the page, de-duplicated |
socials | Profile links keyed by network: linkedin, twitter, facebook, instagram, youtube, whatsapp, github, tiktok |
pages_crawled | How many pages of the site were read (0 means the site could not be fetched) |
Use cases
- Lead enrichment — turn a list of company domains into contact records.
- Cold outreach — build email and social outreach lists from prospect websites.
- Partnership and influencer outreach — collect brands' Instagram, TikTok and YouTube handles in one pass.
- CRM hygiene — backfill missing emails, phones and social profiles.
- AI agents — structured contacts for n8n, Make, Zapier and MCP-based workflows.
How to use
- Paste your Websites — domains (
stripe.com) or full URLs, one per line, up to 1,000 per run. - Set Max pages per site (1–5). The homepage counts as one page.
- Leave Verify emails on to get deliverability data, or turn it off for a faster, cheaper run.
- If a site blocks the default datacenter proxy (its row comes back with
pages_crawled: 0), re-run it with Use residential proxy on. - Click Start, then export JSON, CSV or Excel, or pull the dataset via the Apify API.
Example input
{"startUrls": ["https://www.siegemedia.com", "https://www.brooklinen.com", "stripe.com"],"maxPagesPerDomain": 3,"verifyEmails": true,"useResidentialProxy": false}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array of strings | — (required) | Websites to extract contacts from, as domains or URLs. 1–1,000 per run. |
maxPagesPerDomain | integer | 3 | Pages to read per site (homepage + contact/about/team/careers pages), 1–5. |
verifyEmails | boolean | true | Check each found email's deliverability and add status, confidence, disposable and webmail flags. |
useResidentialProxy | boolean | false | Use residential IPs for sites that block datacenter traffic. Slower. |
Example output
A real row (one per website):
{"url": "https://www.siegemedia.com/","domain": "siegemedia.com","emails": ["hello@siegemedia.com"],"email_details": [{"email": "hello@siegemedia.com","role": "hello","is_role": true,"status": null,"confidence": null,"is_disposable": null,"is_webmail": null}],"phones": ["5127102510"],"socials": {"linkedin": "https://www.linkedin.com/company/siege-media","twitter": "https://twitter.com/siegemedia","facebook": "https://www.facebook.com/siege.media.inc","instagram": "https://www.instagram.com/siege_media"},"email_count": 1,"pages_crawled": 3}
When verification runs, status is one of:
status | Meaning |
|---|---|
valid | The mailbox exists and accepts mail |
invalid | Mail would not be delivered: no such mailbox, a disabled mailbox, a full inbox, or a spam-trap address |
accept_all | The domain accepts every address, so this particular mailbox cannot be confirmed |
disposable | A throwaway/temporary email domain |
unknown | The mail server gave no conclusive answer — not charged |
confidence is a 0–100 deliverability score. In the row above they are null because verification did not return a result for this email, so it was not charged.
A run summary (sites, with_contacts, total_emails, emails_verified) is saved to the key-value store as OUTPUT.
How much does it cost to extract contacts from websites?
Pay per event. No monthly fee.
| Event | Price | When it is charged |
|---|---|---|
| Actor start | $0.001 | Once per run in which at least one website could be fetched |
| Contact result | $0.005 | Per website where at least one email, phone or social profile was found |
| Email verified | $0.002 | Per email with a conclusive verification result (only when Verify emails is on). unknown results and checks that could not run are free |
Websites where nothing is found cost nothing beyond the start fee, an email whose verification fails or comes back unknown is not charged, and if none of your websites can be fetched at all the run ends as failed and nothing is charged.
- 100 websites, 70 with contacts, verification off: $0.001 + 70 × $0.005 = $0.351.
- The same run with verification on and 120 emails verified: $0.351 + 120 × $0.002 = $0.591.
FAQ
Does it crawl the whole site? No. It reads the homepage plus up to four linked contact, about, team or careers pages (5 pages in total at most), which is where contact details live, and keeps runs fast and cheap.
Why is a site's row empty with pages_crawled: 0? The site refused the request, usually because it blocks datacenter IPs. Turn on Use residential proxy and run that site again. Rows with no contacts are not charged.
How are emails verified? Each address is checked against its own domain's mail servers: MX records, a live mailbox check, and catch-all and disposable-domain detection. No email is ever sent to the address.
Why are some phone numbers missing? Numbers are only kept when they are clickable tel: links or are formatted like a phone number (spaces, dashes, dots or brackets, or a leading +). Bare digit runs on a page are almost always prices, product IDs or timestamps, so they are deliberately skipped.
What if email verification is unavailable? Emails are still returned, with status and confidence set to null, and verification is not charged. The run log says so.
Can I use it with AI agents and automation tools? Yes. The output is clean JSON, ready for n8n, Make, Zapier and MCP-based agents.
Tags: contact extractor, email extractor, email scraper, phone scraper, social media links, lead generation, website crawler, b2b leads, contact finder, lead enrichment.