Website Email Finder & Contact Details Scraper avatar

Website Email Finder & Contact Details Scraper

Pricing

from $1.60 / 1,000 website with contacts

Go to Apify Store
Website Email Finder & Contact Details Scraper

Website Email Finder & Contact Details Scraper

Website email finder: get emails, phone numbers and LinkedIn, X, Facebook, Instagram and YouTube links from any list of websites or a Google Maps dataset. Reads Contact, Imprint and About pages and decodes Cloudflare-protected emails. $2 per 1,000 sites with contacts; none found, no charge.

Pricing

from $1.60 / 1,000 website with contacts

Rating

0.0

(0)

Developer

Tapaswai Ashok Choudhary

Tapaswai Ashok Choudhary

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Turn a list of websites into a contact list: a website email finder that also returns phones and social profiles. For each website you get e-mail addresses, phone numbers, social profiles (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub), the company name, description and postal address, and the page where the contacts were found — as a clean, spreadsheet-ready table. Export to CSV or Excel, push to your CRM or Google Sheets, or call it as an API.

Built for sales and business-development teams building lead lists, marketers and agencies doing outreach, recruiters, and anyone enriching a list of company domains.

Why this scraper

  • Finds contacts where they actually are. It reads the page you give, then picks the pages most likely to list contacts — Contact, Imprint / Impressum, Legal notice, About, Team — instead of crawling blindly. Five pages per site finds most contacts.
  • Reads what simple scrapers miss. E-mails from links and text, e-mails hidden by Cloudflare's email protection, and the company's own structured data (the name, e-mail, phone and address a site publishes for search engines).
  • Clean results, not noise. Image file names, placeholder addresses (name@example.com), tracking ids and share buttons are filtered out. Phone numbers come in international format, duplicates removed, and the website's own e-mail addresses are listed first.
  • Pay only for results. Websites where nothing is found are free. Dead or unreachable domains are skipped in a second instead of wasting run time.
  • Fast and cheap to run. A small native program — no browser — that runs in 256 MB and checks many websites in parallel. Platform usage for a typical run is a fraction of a cent.
  • Handles rate limits for you. When a site says “slow down” (HTTP 429) the Actor waits as long as asked and adapts its speed; timeouts and dropped connections are retried automatically.
  • Never loses or double-bills work. Each website is saved as soon as it's done; if the platform moves your run to another server it resumes without charging twice, and it stops cleanly at your maximum charge.

How to use it

  1. Paste websites into Websites — domains (apify.com) or any page URL.
  2. Optionally change Pages per website (default 5), tick Only the website's own e-mail addresses, or report only websites with an e-mail or a phone number.
  3. Press Start. Download the results from the Output tab, or connect an integration.

Example input

{
"startUrls": ["apify.com", "zalando.de", "mailchimp.com"],
"maxPagesPerSite": 5,
"sameDomainEmailsOnly": false
}

What you get

One row per website:

FieldDescription
domain / urlThe website and the page it was read from
companyName / descriptionCompany name and the site's own description
primaryEmail / emailsBest e-mail (the site's own domain, or a free-mail inbox if the site has none; never another company's address) and every e-mail found
primaryPhone / phonesFirst phone number and every number found, in international format where the site gives it
linkedin / twitter / facebook / instagram / youtube / tiktok / github / vimeoSocial profile links
addressPostal address, when the site publishes one
contactPageUrlThe contact / imprint / about page where details were found
pagesScraped / scrapedAtPages checked and when
sourceWhen reading another scraper's results: the original row's name, id, address, phone and link

Example:

{
"domain": "apify.com",
"url": "https://apify.com/",
"companyName": "Apify",
"primaryEmail": "support@apify.com",
"emails": ["support@apify.com", "hello@apify.com"],
"linkedin": "https://www.linkedin.com/company/apify",
"twitter": "https://x.com/apify",
"github": "https://github.com/apify",
"tiktok": "https://www.tiktok.com/@apifytech",
"address": "Na Příkopě 959/27, Prague, 11000, CZ",
"contactPageUrl": "https://apify.com/contact",
"pagesScraped": 5
}

Add contacts to another scraper's results

Already scraping businesses — from Google Maps, a directory, or any list that includes websites? Let this Actor enrich those results automatically:

  1. Open the other Actor (for example a Google Maps scraper) and go to its Integrations tab.
  2. Choose Add integration → Actor, pick Website Contact Details Scraper, and trigger it when the run succeeds.
  3. Done. After every run, each website in its results is checked for e-mails, phones and social profiles.

You can also run it by hand on any existing dataset: pick it under …or websites from another scraper's results.

The website column is found automatically (website, url, domain and similar; map, social-media and job-board links are skipped). If yours is called something else, set Website column. Every result carries a source object with the original row's name, id, address and phone, so you can join the contacts back to your list. Rows that share a website are checked once.

Only new websites

Working through a growing lead list? Turn on Only new websites and re-run with the whole list — websites an earlier run already delivered are skipped (and not charged).

Use it as an instant API

The Actor also runs in Standby mode — an always-ready endpoint that returns contacts straight in the response, ideal for enriching leads from your own app, CRM workflow or AI agent. Find the URL on the Standby tab:

curl "https://<standby-url>/?url=apify.com,zalando.de" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>"

Any input field works as a query parameter (url is shorthand; separate several websites with commas), or POST the full input as JSON. The response is {"success": true, "count": 2, "items": [ … ]}.

Pricing

Pay per result: about $2 per 1,000 websites with contacts found (lower on higher Apify plans) plus a tiny start fee. Websites with nothing found, and unreachable ones, cost nothing. See the Pricing tab for exact rates, and set a maximum charge per run to cap spend.

On Apify's free plan each run returns up to 100 websites — plenty to try everything. Any paid Apify plan removes the limit.

FAQ

Why is a website missing from the results? Nothing was found on it, or it couldn't be loaded — those are free and listed in the run's summary. Turn on Include websites with no contacts to get a row for every input.

Some sites return fewer details than I expected. A few websites block automated visitors or load contacts only with JavaScript. Try raising Pages per website, or turn on a proxy.

Is it legal? The Actor collects contact details that websites publish publicly. You're responsible for how you use them — follow the privacy and marketing laws that apply to you (e.g. GDPR, CAN-SPAM) before contacting anyone.

Support

Found a problem or need a field that isn't there yet? Open an issue on the Issues tab with the website and what you expected — requests genuinely decide what gets built next.