Website Email Extractor & Contact Details Scraper · Apify
Website Contact Scraper: Emails, Phones & Socials, $1 per 1K avatar

Website Contact Scraper: Emails, Phones & Socials, $1 per 1K

Pricing

from $0.60 / 1,000 websites

Go to Apify Store
Website Contact Scraper: Emails, Phones & Socials, $1 per 1K

Website Contact Scraper: Emails, Phones & Socials, $1 per 1K

Extract emails, phone numbers and social media links (Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest) from any list of websites or domains, or from a Google Maps scraper dataset. $1 per 1,000 websites with contacts: websites without contacts are not charged.

Pricing

from $0.60 / 1,000 websites

Rating

0.0

(0)

Developer

Melon Data

Melon Data

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

What is this Website Contact Scraper?

Website Contact Scraper extracts the emails, phone numbers and social media links (Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest) published on any list of websites. Paste URLs or plain domains, upload a file, or plug in the output of a Google Maps scraper. It visits the home page, then the contact, legal notice (imprint) and about pages, and returns one clean row per website. $1 per 1,000 websites with contacts. You pay only for websites where at least one email, phone number or social profile is found. Websites without contacts, unreachable or blocked are free.

Use it as an email extractor for lead lists, a contact details scraper for B2B prospecting, a phone number extractor or a social media links scraper. It uses plain HTTP requests, with no browser: 1,000 websites take about 3 minutes at the default memory (measured, October 2026). Run it from Apify Console, through the API, on a schedule, or from Make, n8n and Zapier.

🇫🇷 Extracteur d'e-mails et de contacts de sites web : e-mails, téléphones et réseaux sociaux de chaque site. 1 $ les 1 000 sites avec contacts, les autres sont gratuits. 🇩🇪 Kontaktdaten aus Websites: E-Mails, Telefonnummern und Social-Media-Profile, auch aus dem Impressum. 1 $ pro 1.000 Websites mit Kontakten. 🇪🇸 Extractor de contactos de sitios web: emails, teléfonos y redes sociales. 1 $ por 1.000 sitios con contactos.

  • Pay only for results. One price, $0.001 per website with contacts. No start fee, no add-ons, no charge per page.
  • Clean emails. Placeholder addresses (your@email.com), emails of website builders, booking platforms, hosting providers and web agencies ("website by…") are filtered out, so you get the business's own contacts. Emails hidden by Cloudflare, HTML entities or [at]/(dot) are decoded. Emails are never guessed.
  • Phone numbers in international format (+33478123456), from tel: links, structured data and labelled numbers in the page text. Fax numbers and the web host's number in legal notices are left out.
  • Smart page choice. After the home page, one page of each kind: contact, legal notice or imprint (Impressum, mentions légales, aviso legal…), then about. Links are recognised in 10 languages, by URL or by link text.
  • Works with Google Maps leads. Give the ID of a dataset (for example from our Google Maps Scraper) and the place name, place ID, category, address and phone are copied next to the contacts.
  • Safe on big jobs. Runs resume after a platform restart with no double charge, stop cleanly at your maximum cost per run, and never send more than one request at a time to the same website.

⭐ If this actor saves you time, please bookmark it and leave a review: it helps other users find it.

How to extract emails from websites (step by step)

  1. Add your websites: full URLs in Websites (URLs), or plain domains in Or paste websites / domains (one per line). You can also upload a CSV/TXT file with one URL per line, or give the ID of an Apify dataset.
  2. Keep Max pages per website at 3 (home + contact + legal notice), or raise it up to 10.
  3. Click Start, then download the results as CSV, Excel or JSON, or send them to Google Sheets, your CRM, Make, n8n or Zapier.

What data does it extract?

DataFieldsFound in our benchmark*
Emails (business's own first, no duplicates)emails68% of websites (82% of those that answer)
Phone numbers, international formatphones66%
Social profilesfacebooks, instagrams, linkedIns, twitters, youtubes, tiktoks, pinterests54%
At least one contact (charged)status = ok76.5%
Contact and legal pages foundcontactPageUrls
Crawl detailsurl, domain, finalUrl, pagesCrawled, status, error, scrapedAt
From your datasettitle, placeId, categoryName, address, city, postalCode, countryCode, phone, googleMapsUrl…

*1,000 local-business websites from 16 countries and 10 trades (OpenStreetMap), default settings, October 2026. About 13% of such websites were unreachable (mostly dead domains) and 4% blocked automated visits: both are free.

status is ok (contacts found), no_contact (website read, nothing published), blocked (the website refused automated visits) or unreachable (dead domain, timeout, HTTP error). Only ok is charged.

How much does it cost?

$1 per 1,000 websites with contacts ($0.001 each). Websites without contacts, unreachable or blocked are free, and so are the pages visited, proxies and platform usage. Paid Apify plans pay less: $0.90 per 1,000 on Starter, $0.80 on Scale and $0.60 on Business.

Websites with contactsFree planStarterScaleBusiness
100$0.10$0.09$0.08$0.06
1,000$1$0.90$0.80$0.60
10,000$10$9$8$6
100,000$100$90$80$60

In our benchmark, 76.5% of websites had contacts: 1,000 websites cost about $0.77 on the free plan. Apify's free plan ($5 of monthly credit) covers about 5,000 websites with contacts a month. Set a maximum cost per run in Apify and the actor stops cleanly when it is reached.

Compared with pay-per-page pricing. At $2 per 1,000 pages (a common Store price for the Free and Starter plans, October 2026), reading 3 pages per website costs $6 per 1,000 websites, whether contacts are found or not. In a side-by-side test on 48 websites with the same 3-page budget, this actor found 71 emails on 34 websites, against 59 emails on 28 websites for a popular pay-per-page contact scraper.

Input

FieldWhat it doesDefault
startUrlsWebsites as full URLs, or a file (requestsFromUrl) with one URL per line
websitesPlain domains or URLs, one per line
datasetId + urlFieldRead the websites from an Apify dataset (field website by default)website
maxPagesPerSiteHome page + best contact / legal / about pages (1 to 10)3
includePhones, includeSocialsTurn phone numbers or social profiles offon
maxSitesStop after this many websitesall
proxyConfigurationUsed once for websites that answer 403/429 (datacenter only)Apify Proxy

Example inputs

A list of websites:

{
"startUrls": [{ "url": "https://www.acme-plumbing.example" }, { "url": "https://www.bistro-example.example/fr" }],
"maxPagesPerSite": 3
}

Plain domains:

{
"websites": ["acme-plumbing.example", "bistro-example.example", "studio-example.example"]
}

The output of a Google Maps scraper (or any Apify dataset with a website column):

{
"datasetId": "YOUR_DATASET_ID",
"urlField": "website"
}

Output example

{
"url": "https://www.acme-plumbing.example/",
"domain": "acme-plumbing.example",
"status": "ok",
"emails": ["info@acme-plumbing.example", "acme.plumbing@gmail.com"],
"phones": ["+15035550142"],
"facebooks": ["https://www.facebook.com/acmeplumbing"],
"instagrams": ["https://www.instagram.com/acme.plumbing"],
"linkedIns": [],
"twitters": [],
"youtubes": [],
"tiktoks": [],
"pinterests": [],
"contactPageUrls": ["https://www.acme-plumbing.example/contact-us"],
"pagesCrawled": 3,
"finalUrl": "https://www.acme-plumbing.example/",
"title": "Acme Plumbing",
"placeId": "ChIJ…",
"error": null,
"scrapedAt": "2026-10-28T14:05:12.345Z"
}

(Fictitious example.) Fields copied from a dataset only appear when you use datasetId.

Find emails for Google Maps leads

  1. Run a Google Maps scraper, for example our Google Maps Scraper ($0.50 per 1,000 places, emails included). Use this actor on top of it for phone numbers from the websites, deeper crawls (up to 10 pages) or the output of any other Maps scraper.
  2. Copy the dataset ID of that run (Storage tab), paste it in Or read the websites from an Apify dataset here, and start.
  3. Each row keeps the place name, place ID, category, address, city, country code and Google phone, next to the emails, phones and social profiles found on the website. A website shared by several places (a chain) is visited and charged once, with one row per place.

On 815 restaurant websites from a Google Maps run in Lyon, 82% had contacts and 50% had at least one email; the run took about 100 seconds.

Use it via API, Make, n8n or Zapier

Call the actor like any Apify actor: API reference, or the Apify apps for Make, n8n and Zapier. Input names used by other popular contact scrapers also work (startUrls, maxRequestsPerStartUrl, proxyConfig, plus urls, domains and company_domain), so switching an existing scenario usually means changing only the actor ID.

FAQ

How much does it cost to extract emails from websites?

$1 per 1,000 websites where at least one email, phone number or social profile is found ($0.60 to $0.90 on paid Apify plans). Everything else is free: websites without contacts, dead or blocked websites, extra pages, proxies and platform usage.

Which pages are visited?

The page you give, then up to 2 more (maxPagesPerSite = 3): the best contact page, then the legal notice or imprint, then the about page. One page at a time per website, with a time limit per page and per website, so a slow website never holds up the run.

Which emails are filtered out?

Placeholders (name@example.com, your@email.com), noreply addresses, tracking IDs, image file names, and the emails of website builders, booking and delivery platforms, link-in-bio pages, domain parking and hosting providers. An email of another domain written right after "website by…" or in the hosting section of a legal notice is the agency's or the host's, and is left out. Emails are never guessed or built from names.

How are phone numbers found and formatted?

From tel: links, structured data (telephone), and numbers in the page text that have a label (Tel., Phone, Téléphone, Telefon…), an international prefix or an unmistakable phone layout. They are returned in international E.164 format (+442071234567), using the website's country (domain, page language, or the countryCode of your dataset). Fax numbers are excluded.

Why is a website "blocked" or "unreachable"?

blocked means the website answered 403/429 or showed a bot-protection page; the actor retries once through a datacenter proxy and never tries to bypass a CAPTCHA. unreachable means a dead domain, a timeout or an HTTP error; websites that time out are retried once at the end of the run. Neither is charged.

Does it work on JavaScript-heavy websites?

It reads the HTML the website sends, without a browser, which covers most business websites, including WordPress, Wix and Squarespace (it also reads their embedded data). Contacts that only appear after scripts run in a browser can be missed.

The actor only reads public pages and collects the contact details that businesses publish themselves. It never logs in, fills forms, solves CAPTCHAs or guesses emails, and it does not look up people. Rules differ by country. A published email can still be personal data (for example firstname.lastname@company.com): under GDPR and similar laws you need a lawful basis such as legitimate interest for B2B prospecting, you must tell people where you got their data and let them opt out, and you must follow local direct-marketing rules. You are responsible for how you use the data. This is not legal advice.

Which memory should I use?

The default 1 GB is the cheapest for us to run and does 1,000 websites in about 3 minutes; 2 GB is about twice as fast. Your price is the same whatever the memory.

What happens if a run is interrupted?

It resumes where it stopped after a platform restart: websites already delivered are neither visited nor charged again.

Limitations & fair use

  • Only public pages of the websites you give, and only the same website (no external links are followed).
  • At most 10 pages per website, one request at a time per website.
  • No login, no form filling, no CAPTCHA solving, no residential proxies.
  • No email guessing and no enrichment of people (names, profiles, photos).
  • You are responsible for using the data in line with applicable laws (GDPR, CAN-SPAM, etc.).

Changelog

See the Changelog tab. 1.0 (October 2026): first release.

More actors by this developer