Contact Details Scraper: Website Emails, Phones & Socials
Pricing
from $3.00 / 1,000 website with contacts
Contact Details Scraper: Website Emails, Phones & Socials
Find emails, phone numbers, social profiles and address for any list of company websites (e.g. the website column of Google Maps results). Crawls homepage + contact/about pages, decodes hidden emails, checks emails can receive mail. Pay only when an email or phone is found.
Pricing
from $3.00 / 1,000 website with contacts
Rating
0.0
(0)
Developer
Jason Faro
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
What does Contact Details Scraper do?
Contact Details Scraper is an email extractor and contact scraper for websites. It takes a list of websites and returns the email addresses, phone numbers, social media profiles, business address and contact page of each one. For every site it crawls the homepage plus the pages most likely to hold contact details (Contact, About, Team, Locations, Impressum…), then cleans, validates and ranks the results.
You pay only for websites where at least one email or phone number is found. Websites with no contacts, unreachable sites and errors are free, and the price is per website, not per page crawled.
Paste your websites, click Start, and download the results as CSV, Excel or JSON, or get them through the Apify API. You can schedule runs and connect them to Google Sheets, Make, Zapier, n8n or your CRM.
Why use this contact details scraper?
- Enrich lead lists. Turn a list of company websites into emails, phones and social profiles. It works well with the
websitecolumn from a Google Maps scrape. - Finds emails other tools miss. It decodes Cloudflare-protected emails and
name [at] domain [dot] comstyle addresses, and reads schema.org business data hidden in the page. - Cleaner data.
- Placeholders (
you@example.com), image names (logo@2x.png) and tracking IDs are removed. - Phone numbers are validated and formatted in international E.164 format (
+15025610375).
- Placeholders (
- Knows which emails are worth using. Each email is labeled:
generic(info@, sales@) orpersonal- on the company's own domain or not
- from a free provider (Gmail, Yahoo…) or not
- whether its domain can actually receive mail (checked via its MX records), which catches typos like
info@compnay.com
- Picks the best contact.
primaryEmailandprimaryPhonegive you one ready-to-use value per company. - Includes the email provider.
mailboxProvider(Google Workspace, Microsoft 365, …) comes free, which is useful for segmenting outreach.
How to scrape emails and phone numbers from websites
- Click Try for free.
- Paste websites into the Websites field, one per line.
example.com,https://www.example.com/contactandjane@example.comall work. - Optionally, adjust Max pages per website (default 5) and Default country for phone numbers.
- Click Start.
- Download the dataset from the Output tab or connect it to your tools.
Input
| Field | Type | Description |
|---|---|---|
websites | array of strings | Domains, URLs or emails. They are normalized and de-duplicated. |
maxPagesPerWebsite | integer (default 5) | Homepage plus the most likely contact pages. Price doesn't depend on this. |
defaultCountry | string (default US) | Country used for phone numbers written without a country code. Country-code domains like .de and .co.uk are detected automatically. |
maxConcurrency | integer (default 15) | Number of websites processed in parallel. |
{"websites": ["apify.com", "https://www.example-plumbing.com/contact-us"],"maxPagesPerWebsite": 5,"defaultCountry": "US"}
Output
Each website produces one item. This example is from a real run on apify.com:
{"domain": "apify.com","status": "ok","contactsFound": true,"companyName": "Apify","primaryEmail": "hello@apify.com","primaryPhone": null,"emailCount": 1,"emails": [{"email": "hello@apify.com","type": "generic","sameDomain": true,"freeMailProvider": false,"domainAcceptsMail": true,"foundOn": ["https://apify.com/contact"]}],"phones": [],"socialProfiles": {"linkedin": "http://linkedin.com/company/apify","x": "https://x.com/apify","tiktok": "https://www.tiktok.com/@apifytech","github": "https://github.com/apify"},"address": {"streetAddress": "Na Příkopě 959/27","addressLocality": "Prague","postalCode": "11000","addressCountry": "CZ"},"contactPageUrl": "https://apify.com/contact","hasContactForm": true,"contactFormUrl": "https://apify.com/contact-sales","mailboxProvider": "Google Workspace","websiteUrl": "https://apify.com/","pagesCrawled": ["https://apify.com/", "https://apify.com/contact", "https://apify.com/contact-sales", "https://apify.com/about"]}
Main fields
| Field | Description |
|---|---|
primaryEmail / primaryPhone | The best single contact: same-domain generic inbox first, then other emails. Phones are ranked by how often they appear. |
emails[] | Every email found, with type, sameDomain, freeMailProvider, domainAcceptsMail and the pages it was found on |
phones[] | Validated phone numbers in E.164 format, with the pages they were found on |
socialProfiles | Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest, Threads, Telegram, WhatsApp, GitHub, Yelp |
address | Postal address from the site's structured data, when published |
contactPageUrl, contactFormUrl | Where to reach the company if there's no email |
mailboxProvider | The company's email provider (Google Workspace, Microsoft 365, Zoho, GoDaddy…) |
status | ok, website_unreachable or error (never charged) |
How much does it cost to extract emails from websites?
The Actor uses pay-per-event pricing, charged per website where at least one email or phone number was found. Check the Pricing tab for the current price per 1,000 websites. Sites with no contacts, sites that only have social profiles, unreachable sites and errors cost nothing. Crawling more pages per site doesn't raise the price. You can set a maximum cost per run, and the Actor stops when it reaches the limit.
Tips
- Feed it the
websitefield from Google Maps, Yelp or directory scrapes to turn business listings into contactable leads. - Filter on
emails.domainAcceptsMail = trueandemails.sameDomain = truefor the cleanest outreach lists. - If you only need the main contact, use
primaryEmailandprimaryPhone. - Sites that load all their content with JavaScript may show fewer results. Most small-business sites (WordPress, Wix, Squarespace, Duda, GoDaddy) work well.
Works well with
- Domain Intelligence: add each company's tech stack, email provider (Google Workspace, Microsoft 365…) and SPF/DKIM/DMARC grade to your lead list.
- Website Screenshot & PDF: capture a clean screenshot of every website (no cookie banners) for personalized outreach or audits.
FAQ, disclaimers and support
Is it legal? The Actor only reads public web pages, the same way a visitor's browser would. It doesn't log in, submit forms or bypass access controls. Contact details can include personal data (for example a named employee's email). You're responsible for having a lawful basis to process it and for following anti-spam laws such as GDPR, CAN-SPAM and CASL when you contact anyone.
Why didn't it find an email for some sites? Many small businesses publish only a phone number or a contact form. In that case you get contactFormUrl, and if no email or phone was found at all, you aren't charged.
Found a bug or a site it handles badly? Open an issue on the Issues tab and include the website. Fixes ship regularly.