Contact Details Scraper: Website Emails, Phones & Socials avatar

Contact Details Scraper: Website Emails, Phones & Socials

Pricing

from $3.00 / 1,000 website with contacts

Go to Apify Store
Contact Details Scraper: Website Emails, Phones & Socials

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

Jason Faro

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

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 website column from a Google Maps scrape.
  • Finds emails other tools miss. It decodes Cloudflare-protected emails and name [at] domain [dot] com style 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).
  • Knows which emails are worth using. Each email is labeled:
    • generic (info@, sales@) or personal
    • 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. primaryEmail and primaryPhone give 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

  1. Click Try for free.
  2. Paste websites into the Websites field, one per line. example.com, https://www.example.com/contact and jane@example.com all work.
  3. Optionally, adjust Max pages per website (default 5) and Default country for phone numbers.
  4. Click Start.
  5. Download the dataset from the Output tab or connect it to your tools.

Input

FieldTypeDescription
websitesarray of stringsDomains, URLs or emails. They are normalized and de-duplicated.
maxPagesPerWebsiteinteger (default 5)Homepage plus the most likely contact pages. Price doesn't depend on this.
defaultCountrystring (default US)Country used for phone numbers written without a country code. Country-code domains like .de and .co.uk are detected automatically.
maxConcurrencyinteger (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

FieldDescription
primaryEmail / primaryPhoneThe 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
socialProfilesFacebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest, Threads, Telegram, WhatsApp, GitHub, Yelp
addressPostal address from the site's structured data, when published
contactPageUrl, contactFormUrlWhere to reach the company if there's no email
mailboxProviderThe company's email provider (Google Workspace, Microsoft 365, Zoho, GoDaddy…)
statusok, 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 website field from Google Maps, Yelp or directory scrapes to turn business listings into contactable leads.
  • Filter on emails.domainAcceptsMail = true and emails.sameDomain = true for the cleanest outreach lists.
  • If you only need the main contact, use primaryEmail and primaryPhone.
  • 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.