Website Email & Contact Extractor
Pricing
from $5.00 / 1,000 website processeds
Website Email & Contact Extractor
Extract emails, phone numbers and social profile links from any list of websites. Crawls contact, about and team pages, decodes obfuscated and Cloudflare-protected emails. Perfect for B2B lead generation and CRM enrichment.
Pricing
from $5.00 / 1,000 website processeds
Rating
0.0
(0)
Developer
Oaida Adrian
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Extract emails, phone numbers and social profile links from any list of websites — built for B2B lead generation, sales prospecting and CRM enrichment. Handles redirects, prioritises contact pages, decodes obfuscated and Cloudflare-protected emails, and returns one clean JSON row per website.
Why this Actor
A spreadsheet full of company domains is worth little until you know who to call and where to write. This Actor turns a raw domain list into a ready-to-import contact sheet: verified inboxes, phone numbers, and the LinkedIn/Facebook/Twitter profiles of the companies you want to reach. No proxy configuration, no API keys, no login — give it URLs, get structured contacts back.
What it does
For every website you provide, the Actor:
- Crawls the homepage, then prioritises contact, about, team, support, impressum and legal pages (up to
maxPagesPerSitepages, same domain only). - Extracts email addresses from plain text,
mailto:links, common obfuscations (name [at] domain [dot] com) and Cloudflare-protected emails (data-cfemaildecoding). - Extracts phone numbers from
tel:links plus international (+40 …) and US ((555) 123-4567) text formats. - Extracts social profile links — Facebook, Twitter/X, Instagram, LinkedIn, YouTube, TikTok, GitHub — with per-platform columns for easy spreadsheet export.
- Outputs one structured JSON item per website, with junk emails (image filenames, placeholders, no-reply) filtered out.
Input
{"websites": ["https://example.com", "another-site.com"],"maxPagesPerSite": 10,"includeSocialLinks": true}
| Option | Description |
|---|---|
websites | List of website URLs or bare domains (required). |
maxPagesPerSite | Max pages to crawl per site (default 10, max 50). Contact/about/team pages are visited first. |
includeSocialLinks | Whether to extract social profile links (default true). |
Output (one item per website)
{"url": "https://example.com","domain": "example.com","pagesCrawled": 10,"emails": ["hello@example.com", "sales@example.com"],"phones": ["+1 (555) 123-4567"],"contactPages": ["https://example.com/contact"],"linkedin": "https://linkedin.com/company/example","facebook": "https://facebook.com/example","socialLinks": ["https://facebook.com/example", "https://linkedin.com/company/example"]}
Export to JSON, CSV or Excel in the Apify console, or pull the dataset with the API. One row per website — the per-platform social columns (linkedin, facebook, twitter, instagram, youtube, tiktok, github) drop straight into a CRM import template.
Use cases in detail
- B2B lead generation — turn a list of company domains (from a directory, a competitor's customer page, or a Google Sheets export) into a ready-to-import contact list.
- CRM enrichment — fill missing email/phone/social columns for accounts you already track; run it nightly on new sign-ups.
- Outreach prep — find the correct contact/impressum page and the right inbox before a cold campaign, instead of guessing
info@. - Directory & dataset building — enrich business listings, marketplace vendors or conference exhibitor lists with verified contact channels.
- Recruiting & partnerships — pull team-page and social links to reach the right person directly.
Run on a schedule or via API
Point an Apify Schedule at a fresh batch of domains each day, or trigger the Actor from your own backend and read the results straight into your CRM:
curl -X POST "https://api.apify.com/v2/acts/darknezz~website-contact-extractor/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"websites":["https://astral.sh","https://www.python.org"],"maxPagesPerSite":10}'
From Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("darknezz~website-contact-extractor").call(run_input={"websites": ["https://astral.sh", "https://www.python.org"], "maxPagesPerSite": 10},)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["domain"], item["emails"])
Each run's dataset exports cleanly to JSON, CSV or Excel — one row per website with per-platform social columns for spreadsheet use.
Pricing
Pay per event: you are charged once per website processed, regardless of how many pages are crawled or contacts found — so cost scales with your input list, not the site's size.
FAQ
Does it work on JavaScript-heavy sites? Contacts rendered server-side (the vast majority) are found, including Cloudflare-obfuscated emails. Contacts injected purely client-side after render are not.
How many pages per site does it crawl? Up to maxPagesPerSite (default 10, max 50), and it visits contact/about/team/support/impressum/legal pages first so the useful data is found early.
Does it need a proxy or API key? No — it crawls the sites you provide directly, no proxy or credentials required.
How do you avoid junk emails? Image filenames, placeholder addresses (example.com, yourdomain) and common no-reply inboxes are filtered out before output.
What if a site is down or times out? The item is still returned with an error field describing what happened, so a partial run never silently drops rows.
Can I crawl more than 50 pages per site? Not currently — contact data virtually always lives on the first few pages, so the cap keeps runs fast and cheap. Raise a GitHub issue if you need a higher ceiling.
Is scraping contact data legal? The Actor only reads publicly displayed information. You are responsible for complying with GDPR/CAN-SPAM when using extracted data for outreach.