Website Contact Scraper
Pricing
from $2.00 / 1,000 website with contacts
Website Contact Scraper
Extract emails, phone numbers, social media profiles and addresses from any list of websites. Finds contact, about and imprint pages automatically, filters out fake and placeholder emails, and validates every phone number. Built for lead generation, sales prospecting and CRM enrichment.
Pricing
from $2.00 / 1,000 website with contacts
Rating
0.0
(0)
Developer
Coder
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Extract emails, phone numbers, social media profiles and postal addresses from any list of websites, in a clean, structured format.
Paste a list of domains or links, choose how many pages to check on each site, and export the results as JSON, CSV or Excel, or pull them through the Apify API.
What This Actor Does
- Collects contact details from any website: emails, phone numbers, social media profiles and postal addresses
- Finds the right pages automatically: contact, about, imprint, team, locations and more, picked from each site's own links
- Filters out fake and useless addresses: placeholders like
you@example.com, image file names, tracking and vendor emails, and no-reply inboxes - Validates every phone number for the website's country and returns it in international format (
+14155550100) - Picks a main email and phone for each website, preferring the business's own general inbox, and keeps every other contact alongside
- Finds profiles on Instagram, Facebook, LinkedIn, X (Twitter), TikTok, YouTube, Pinterest, Threads, WhatsApp and Yelp
- Handles modern websites built with JavaScript frameworks and site builders
- Returns one row per website, with a status that says whether contacts were found or why a website could not be checked
Best For
- Lead generation and sales prospecting
- Enriching CRM, spreadsheet or Google Maps business lists with emails and phone numbers
- Finding social media profiles for a list of companies
- Building outreach lists for agencies, recruiters and B2B sales teams
- Cleaning and completing company databases
Input
Add one or more websites and choose how many pages to check on each.
Main input fields
websitesOne website per row. Accepts domains (bluebottlecoffee.com), links (https://www.bluebottlecoffee.com/) and any page on a site (https://www.bluebottlecoffee.com/about). Each website is checked once, even if it appears in several rows.maxPagesPerSiteHow many pages to check on each website, including its homepage.1checks only the homepage.5adds the most useful pages, such as contact, about and imprint pages, and suits most lists. Up to20goes deeper, into team, location and press pages.includeEmptyResultsOn by default: every website gets a row, with a status explaining empty ones, so the results line up with your list. Turn it off to get only websites where contact details were found.
Example input
{"websites": ["bluebottlecoffee.com","https://www.levainbakery.com/","dishoom.com"],"maxPagesPerSite": 5,"includeEmptyResults": true}
Output
Each dataset item is one website from your input. With includeEmptyResults turned off, only websites where contact details were found are included.
Fields
| Field | Description |
|---|---|
domain, url, inputUrl | The website, its homepage, and the row from your input |
status, statusMessage | contacts_found, no_contacts_found, website_not_found, blocked or unreachable, with a plain-language explanation |
email, phone | The main email and phone number for the website |
emails, phones | Every email and phone number found, main ones first |
instagram, facebook, linkedin, twitter, tiktok, youtube, pinterest, threads, whatsapp, yelp | The website's main profile on each platform |
socialLinks | Every social profile found, grouped by platform |
addresses | Postal addresses the website publishes, split into street, city, region, postcode and country |
country | The country the website's phone numbers were validated for |
pagesScraped, scrapedUrls | How many pages were checked, and which |
Example output
{"inputUrl": "dishoom.com","domain": "dishoom.com","url": "https://www.dishoom.com/","status": "contacts_found","statusMessage": "Contact details found.","email": "hello@dishoom.com","phone": "+441135171712","instagram": "https://www.instagram.com/dishoom","facebook": null,"linkedin": "https://uk.linkedin.com/company/dishoom","twitter": "https://x.com/dishoom","tiktok": "https://www.tiktok.com/@dishoom_uk","youtube": "https://www.youtube.com/user/DishoomLondon","emails": ["hello@dishoom.com","reservations@dishoom.com","team@dishoom.com","all-ears@dishoom.com","press@dishoom.com"],"phones": ["+441135171712", "+441218095986", "+441312026406"],"socialLinks": {"instagram": ["https://www.instagram.com/dishoom"],"linkedin": ["https://uk.linkedin.com/company/dishoom"],"twitter": ["https://x.com/dishoom"],"tiktok": ["https://www.tiktok.com/@dishoom_uk"],"youtube": ["https://www.youtube.com/user/DishoomLondon"]},"addresses": [{"streetAddress": "4 Derry Street","addressLocality": "London","addressCountry": "England"}],"country": "GB","pagesScraped": 5,"scrapedUrls": ["https://www.dishoom.com/","https://www.dishoom.com/say-hello/","https://www.dishoom.com/locations/"]}
How To Use
- Add your websites to
websites, one per row. Domains and links both work. - Set
maxPagesPerSite:5suits most lists; use1for a quick check or up to20for a deeper crawl. - Run the actor and open the dataset, export it as JSON, CSV or Excel, or read it through the Apify API.
- Filter by
statusto see which websites had contact details and which could not be checked, or turn offincludeEmptyResultsto receive only websites with contacts.
Pricing
This actor uses pay-per-event pricing, so you only pay for results you receive. Websites that don't exist, block automated access, or show no contact details are never charged for contacts, and checking extra pages beyond the homepage is an optional add-on.
Current prices for each Apify plan are shown on the actor's Pricing tab.
Free plan
On the Apify free plan, each run checks a limited number of websites and pages. Upgrade to a paid Apify plan to remove these limits.
Best Practices
- Start with a few websites to check the output quickly.
- Keep
maxPagesPerSiteat5for most lists; go higher only when you need staff, branch or press contacts. - Use the main
emailandphonecolumns for outreach, and the full lists when you need every contact. - Use JSON export when you need nested data such as social links and addresses.
- Remove duplicates and social media links from your list first; they are skipped anyway.
FAQ
Why did a website return no contact details?
Many websites only offer a contact form and don't publish an email or phone number. The status column shows no_contacts_found for these. Checking more pages with a higher maxPagesPerSite sometimes helps.
What does "blocked" or "unreachable" mean?
blocked means the website uses bot protection that refuses automated visits. unreachable means the website did not respond, usually because it is down. Unreachable websites often work on a later run.
How are fake emails filtered out?
Every email is checked for a real domain, and placeholders, image file names, tracking and vendor addresses and no-reply inboxes are removed. Emails from structured data, email links and contact pages are trusted most, so the main email is almost always the business's real inbox.
Are phone numbers validated?
Yes. Each number is checked against the numbering rules of the website's country and returned in international format. Dates, prices and product codes are not mistaken for phone numbers.
Can I scrape social media profiles or marketplace pages directly?
No. This actor reads business websites. Social media, marketplace and link-in-bio pages in your input are skipped with a note in the log.
How long does a run take?
Websites are checked in parallel. Around 200 websites at 5 pages each typically finish in a few minutes.
Responsible Use
Use this actor only for publicly available information, and make sure your use complies with applicable laws, including data protection and anti-spam rules such as GDPR and CAN-SPAM. Avoid collecting personal data you don't need.
Troubleshooting
- Open the website in a browser to confirm the address is correct and the site is online.
- Check the
statusandstatusMessagecolumns for the reason a website had no results. - If a website did not respond, run it again a little later.
- Test with a few websites before large runs.