Website Contact & Email Extractor - Emails, Phones, Socials
Pricing
from $6.40 / 1,000 results
Website Contact & Email Extractor - Emails, Phones, Socials
Returns the contact details a website publishes: emails with the page they stood on, phone numbers in international form, social profiles and the site's own name. Give it a list of websites or domains; it reads the home, contact, imprint and about pages of twenty sites at a time. No browser.
Pricing
from $6.40 / 1,000 results
Rating
0.0
(0)
Developer
Ben
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
๐ Website Contact & Email Extractor
Returns the contact details a website publishes: emails with the page they stood on, phone numbers in international form, social profiles and the site's own name. Give it a list of websites or domains and get one row per website. It reads the home page and the contact, imprint, about and team pages of twenty websites at a time, without a browser.
Price: until October 18, 2026 $8.00 per 1,000 websites on the Apify Free plan plus $15.00 per 1,000 websites with an email; from October 19 $4.00 per 1,000 websites and nothing else ($3.00 from Gold up). A website that does not answer is not saved and not charged. Export to JSON, CSV or Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.
๐ What is the Website Contact & Email Extractor?
You have a list of company websites and need the address to write to. The Actor opens up to ten pages of every site side by side: the home page, /contact, /kontakt, /impressum, /imprint, /about, /ueber-uns, /contact-us, /team, and the page you linked if it is not the home page. From them it reads emails, phone numbers and social profile links.
In a test with the websites of 99 dentists in Austin, TX, 93 answered, 42 published an email, 80 a phone number and 79 a social profile; the run took 59 seconds. German sites do better, because an imprint has to name an email address.
What data does it extract?
- Emails: the primary email, and every email found with its source (
website,contact_page,impressum) and a confidence value - Phone numbers: from
tel:links and from numbers written in international form, each number once - Social profiles: LinkedIn, Instagram, Facebook, X, YouTube, TikTok, Xing
- Company name: the name the site gives itself
- Flags:
has_email,has_contact, and how many pages were read
What is left out on purpose
Addresses of web agencies, chambers, font and theme authors that sit in a page's code. Form placeholders such as janedoe@gmail.com. No-reply and abuse addresses. An address on another domain only counts when the site links it or it sits at a mailbox provider such as Gmail. Nothing is guessed: a site without a published address gets none.
โฌ๏ธ Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array | Websites or domains, one row each | |
maxResults | integer | 10 | Websites to save in this run, up to 50,000 |
requireEmail | boolean | false | Save and charge only websites with a published email |
extractPhones | boolean | true | Add phone numbers |
extractSocials | boolean | true | Add social profile links |
Example input
{"startUrls": ["basecamp.com", "cl-berlin.de", "https://www.wayfaretavern.com"],"maxResults": 100}
Only websites with an email:
{"startUrls": ["spyglassrealty.com", "guhr-steuerberatung.de"],"requireEmail": true}
The lists websites, domains and urls are read as well, also as {"url": โฆ} entries.
โฌ๏ธ Output
One row per website (from a run of October 4, 2026):
{"input_url": "https://www.austindentalworks.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp&utm_content=website","domain": "austindentalworks.com","company_name": "Dentist in Austin, TX","primary_email": "info@austindentalworks.com","email_confidence": 90,"email_source": "website","emails": [{"email": "info@austindentalworks.com", "confidence": 90, "source": "website", "verified": null}],"phones": ["5124540300", "+15128779822"],"socials": {"facebook": "https://www.facebook.com/AustinDentalWorks/","instagram": "https://www.instagram.com/austindentalworks/?hl=en","youtube": "https://www.youtube.com/@dentistaustintx5793"},"has_email": true,"has_contact": true,"pages_scanned": 2,"scraped_at": "2026-10-04T18:04:00.616890+00:00"}
email_confidence is 95 for an address on the site's own domain that stands in the imprint, 90 for one elsewhere on the site, 75 for an address on another domain whose mail server exists, 55 otherwise. company_name is the site's og:site_name or the first part of its page title, so it can be a slogan, as in this row. The first phone number in the example was written without a country code; see the limits below.
๐ฐ What a run costs
| Apify plan | Per 1,000 websites until October 18, 2026 | Per 1,000 websites with an email, in addition, until October 18 | Per 1,000 websites from October 19, 2026 |
|---|---|---|---|
| Free | $8.00 | $15.00 | $4.00 |
| Bronze | $7.20 | $13.50 | $3.60 |
| Silver | $6.80 | $12.75 | $3.30 |
| Gold | $6.40 | $12.00 | $3.00 |
| Platinum | $6.00 | $11.25 | $3.00 |
| Diamond | $5.60 | $10.50 | $3.00 |
Apify's standard start event ($0.00005 per GB of memory) is the only other charge. Not charged: a website that does not answer, an entry that is no website, and with requireEmail a website without an email.
โฑ๏ธ Measured on Apify (October 4, 2026)
| Run | Websites saved | With email | Time |
|---|---|---|---|
| Sample input | 2 | 2 | 10 s |
| 99 dentist websites (6 did not answer) | 93 | 42 | 59 s |
| 41 websites, only those with an email (4 did not answer, 18 had none) | 19 | 19 | 32 s |
All at 2 GB of memory, the default; the run used 162 MB. About 100 websites a minute.
๐ค For AI agents
Smallest useful call:
{"startUrls": ["acme.com"]}
Each row is one website with primary_email, emails, phones, socials and company_name. startUrls takes many entries. A website that does not answer returns no row; the status message counts them. No credentials are needed.
๐ก Use cases
- ๐ Lead enrichment: emails and phones for a list of company domains from a CRM, a directory or a search export.
- ๐งญ Outreach preparation: the right inbox and the social profiles of each prospect in one sheet.
- ๐ After a places search: the
websitecolumn of the Google Maps Scraper as input. - ๐งน Data cleaning: which domains of an old list still answer and what they publish today.
โ ๏ธ Limits, stated plainly
- Not every website publishes an email. 42 of 93 US dentist sites did in the test. Contact forms, images of addresses and addresses that appear only after a click are not read.
- Up to ten pages per website, each given ten seconds. An address on another page is not found.
- A phone number without a country code is completed from the website's ending (
.de,.co.uk,.frand others). On.comit stays as written, because a guessed country would make it another number. - No delivery check. The Actor looks up whether the email's domain has a mail server, which decides the confidence value; it does not test the mailbox.
- Websites behind a strict firewall can turn the request away. They count as "did not answer" and are not charged.
- Websites only. For businesses by place and kind, use the Google Maps Email Extractor, which finds the places and reads their websites in one run.
โ FAQ
Do I need an API key or a login? No.
Which pages are read? The home page, the usual contact, imprint, about and team addresses in English and German, and the link you gave if it points below the home page.
How many websites have an email? It depends on country and trade: under half of US small-business sites in the test, most German ones.
What changed for users of the earlier version? The twelve fields are the same. Websites are read twenty at a time instead of one after another, and with a browser's handshake: in a test from Apify's servers the same 100 websites gave 45 emails instead of 20. A website that does not answer is no longer saved or charged. Guessed addresses and SMTP checks are gone; enableSmtpVerification is ignored. From October 19 there is one price per website.
Can I run it on 10,000 websites? Yes. At about 100 websites a minute that takes around 100 minutes, so raise the run's timeout. A run that stops at its timeout or spending limit keeps its rows, and started again on the same dataset it continues where it stopped.
How do I call it from code? With the Apify API or the Python and JavaScript clients; every run returns a dataset you can fetch as JSON or CSV. It also works as a tool through Apify's MCP server.
Is it legal? The Actor reads contact details that websites publish themselves. An email address of a sole trader or a named employee is personal data: GDPR, CCPA and similar rules apply to how you store and use it, and CAN-SPAM, the German UWG and other local rules decide whether you may write to it without consent.
๐ You might also like
- Google Maps Email Extractor: businesses by kind and city, with the contact details of their websites
- Google Maps Scraper: places with phone, website, rating and opening hours
- Real Estate Agent Lead Scraper: agents and agencies by city with emails
Keywords: website contact extractor, email extractor, contact details scraper, email scraper, website email finder, phone number extractor, social media link extractor, impressum scraper, lead enrichment, b2b leads, domain to email, company contact data, bulk email extractor, contact info scraper