Website Email Extractor & Contact Scraper
DeprecatedPricing
from $1.50 / 1,000 site with contact details
Website Email Extractor & Contact Scraper
DeprecatedWebsite email extractor and contact scraper: give a list of websites, get role emails (info@, sales@), phone numbers, social links and the contact page for each. $3 per 1,000 sites with results; sites with nothing found are free. Business contacts only.
Pricing
from $1.50 / 1,000 site with contact details
Rating
0.0
(0)
Developer
Weio, Inc.
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
3
Monthly active users
12 days ago
Last modified
Categories
Share
Website Contact Details Extractor (business emails, phones, social links)
Give it a list of websites and get one row per site with the business contact details the site itself publishes: business name, role emails (info@, sales@, office@ ...), phone numbers, social profile links and the contact page. Useful for building B2B outreach lists, enriching a CRM, or checking that your own sites show current contact details.
What it does
For each site the actor fetches the homepage over plain HTTP(S) (no browser), then at most two more pages on the same domain: the contact page and an about page, if the homepage links to them. Results from the pages are merged.
- emails: role/business addresses only (info@, sales@, contact@, office@, support@ ...), lowercased and deduplicated.
- phones: from
tel:links and phone-number patterns in the page (North American format; numbers can include false positives such as placeholder digits). - socials: first link found for facebook, instagram, linkedin, x (x.com / twitter.com), youtube, tiktok.
- business_name: the site's
og:site_name, else the page title. - contact_page_url, pages_checked, and error (null, or a short reason such as
http 403orinvalid domain).
Sites that render their contact details only with JavaScript, or that block automated requests, will return few or no details.
Input
{"websites": ["zingermans.com", "https://anchorbrewing.com"],"onlyWithEmail": false,"concurrency": 8}
websites(required main input unless you setdatasetId): domains or URLs, one per line. Leave it empty if you use a dataset. Up to 5,000 websites per run, list and dataset together; anything beyond that is not read.onlyWithEmail: if true, sites without a business email are left out of the results and not charged.concurrency: websites processed in parallel (1-32, default 8).datasetId(optional): a dataset you already hold, e.g. a places or business-directory scraper's output. Each item's website is read fromwebsiteField(defaultwebsite; thenwebsiteUrl,webUrl,site,domain,web,homepage). Items without a website and permanently closed places are skipped for free. A listing's own page (theurlof a Google Maps or Yelp item) is never used. URL variants of the same domain (for example,www.example.com/contactandexample.com) are checked once and count as one site.websiteField(optional): the dataset field that holds each business's website, defaultwebsite.
A run with no websites and no usable dataset stops at once with a status message and costs nothing.
Run after a Google Maps scrape
Run it automatically after your places scraper. In the task of your Google Maps (or other places or directory)
scraper, open Integrations, add this actor and keep the prefilled input
{"datasetId": "{{resource.defaultDatasetId}}"}. Each time the scraper finishes, this actor reads that run's dataset
and returns the public contact details (business emails, phones, social links) of the businesses that list a website.
Businesses without a website, permanently closed places and sites where nothing is found are free. If several
locations point at pages on the same domain, that domain is checked once and counts as one site.
Already have a finished scrape? Start this actor with datasetId set to that run's dataset, and leave websites
empty (remove the example sites) so only your businesses are checked. If your scraper stores the website under another
field name, set websiteField. URL variants on the same domain are deduplicated: if several locations of a chain list
different pages on one domain, that domain is checked and charged once.
Use it from automations and the API
Use this actor in an n8n, Make, or Zapier workflow. To run it on a schedule, use an Apify schedule.
Clay HTTP API example. Add an HTTP request that POSTs to
https://api.apify.com/v2/acts/weio~website-contact-details-extractor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN
with this JSON body:
{"websites":["{{website}}"]}
Replace YOUR_APIFY_TOKEN with your Apify token and map Clay's website column into {{website}}.
FAQ
Can I use a Google Maps scrape? Yes. Pass its datasetId and, if needed, set websiteField to the field that
contains each business website.
Why are personal addresses missing? The actor intentionally returns role/business inboxes only, such as
info@ or sales@; name-like personal addresses are dropped.
What happens when a site disallows crawlers? The actor checks robots.txt before reading a site. A disallowed
site is returned as a free error row and is not charged.
Output example
{"input": "zingermans.com","domain": "zingermans.com","final_url": "https://zingermans.com/","business_name": "Zingerman's: Online Shopping for Food and Gifts","emails": ["service@zingermans.com"],"phones": ["+17344362006","+17344776986","+17344776988","+18662606169","+18886368162"],"socials": {"facebook": "https://www.facebook.com/Zingermans/","instagram": "https://www.instagram.com/zingermansmailorder/"},"contact_page_url": "https://zingermans.com/CustService.aspx","pages_checked": ["https://zingermans.com/","https://zingermans.com/CustService.aspx","https://zingermans.com/AboutUs.aspx"],"error": null}
Pricing
$3.00 per 1,000 sites ($0.003 per site), platform usage included. You are charged only for rows with no error and
at least one email, phone or social link. Rows with an error or with nothing found are returned free, and with
onlyWithEmail sites without a business email are skipped and free too.
Privacy and limits
- Business/role email addresses only. Addresses that look like a person's name (john.smith@...) are dropped on purpose and never returned.
- Only publicly reachable pages are read: the homepage and at most two same-domain pages. No logins, no forms, no page text is stored or returned.
- Requests to private or internal network addresses are refused.
- The actor identifies itself as WeioBot and reads each site's robots.txt first; a site that disallows it is returned as an error row and not charged. You are responsible for using the results lawfully, including any email-marketing and data-protection rules that apply to you.
Related actors from Weio
- Website Tech Stack Detector: CMS, store platform, analytics, pixels and hosting of a list of websites.
- Local Business Website Audit: mobile layout, HTTPS, title/description and contact checks for small-business sites.
- Domain WHOIS, DNS and Email Security Checker: registration, DNS, MX, SPF and DMARC for a list of domains.