Website Contact Scraper: Emails, Phones & Social Profiles avatar

Website Contact Scraper: Emails, Phones & Social Profiles

Pricing

from $2.00 / 1,000 website with contacts

Go to Apify Store
Website Contact Scraper: Emails, Phones & Social Profiles

Website Contact Scraper: Emails, Phones & Social Profiles

Turn a list of websites into one row per company with verified emails, formatted phone numbers, social profiles (LinkedIn, Facebook, Instagram, X), address and contact page. Pay only for results.

Pricing

from $2.00 / 1,000 website with contacts

Rating

0.0

(0)

Developer

Stratum ICS

Stratum ICS

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

4

Monthly active users

19 days ago

Last modified

Features

Limited permissions

Share

What does Website Contact Scraper do?

Website Contact Scraper turns a list of websites into one clean row per company with email addresses, phone numbers, social media profiles, postal address and the contact page URL. Paste domains like acme.com or full URLs, and it reads each homepage plus the pages most likely to hold contact details (Contact, About, Team, Imprint, Locations), then merges everything it finds.

It works as a contact details scraper, email extractor and phone number finder in one, through the Apify Console, the Apify API or any AI agent connected to Apify.

Why use Website Contact Scraper?

  • One row per website, not one row per page. No deduplication work in a spreadsheet afterwards.
  • Pay only for results. Websites that are offline, parked or blocked cost nothing.
  • Emails you can use. Placeholder addresses (you@example.com), image file names, tracking IDs and "website by" agency credits are filtered out. Each email domain is checked for an MX record so dead domains do not pollute your list. Addresses hidden by Cloudflare email protection and written as name [at] company [dot] com are decoded.
  • Phone numbers in a standard format. Every number is validated and returned in international format (+44 20 7946 0958) and E.164 (+442079460958), with country and line type (mobile or fixed line). Company registration numbers, VAT IDs and order numbers are not mistaken for phones.
  • Real social profiles only. LinkedIn, Facebook, Instagram, X (Twitter), YouTube, TikTok, Pinterest, GitHub, WhatsApp, Telegram, Discord, Threads, Google Maps and Yelp links, with share buttons, single posts and widget links removed.
  • Best contact first. primaryEmail and primaryPhone pick the address and number you are most likely to want: on the company's own domain, from a mailto or tel link, general inbox before personal.
  • Fast and light. Plain HTTP requests, no browser, so thousands of websites finish in minutes.

Typical uses: lead generation and sales prospecting, CRM enrichment, building B2B contact lists from Google Maps or directory exports, checking which suppliers have a public phone line, and giving an AI agent a reliable "find contact details for this company" tool.

What data can you extract?

FieldExample
companyNameLebkuchen-Schmidt
primaryEmailservice@lebkuchen-schmidt.com
emailsAll deliverable emails, best first
emailDetailsType (role or personal), on the company domain or not, domain accepts mail, source, page
primaryPhone+49 911 896631
phones / phoneDetailsInternational, national and E.164 formats, country, mobile or fixed line, source, page
linkedin, facebook, instagram, twitter, youtube, tiktok, ...Profile URLs
address / addressDetailsZollhausstraße 30, Nürnberg, Bayern 90469, DE
contactPageUrlThe page most likely to be the contact page
hasContactFormTrue when the site has a contact form
statusok, unreachable, blocked or parked

How to scrape contact details from websites

  1. Open the Input tab and paste your websites into Websites, one per line. Domains (acme.com), URLs and even email addresses are accepted.
  2. Keep Max pages per website at 6 for small business sites, or raise it for large company sites.
  3. Choose what to collect: emails, phones, social profiles. All three are on by default.
  4. Click Start. Results appear in the Output tab as they finish.
  5. Download the table as CSV, Excel, JSON or HTML, or send it to Google Sheets, HubSpot, Zapier, Make or n8n.

How much does it cost to scrape website contact details?

You pay per website, and only when the scan worked:

ResultPrice
Website with at least one email, phone or social profile$0.003
Website scanned, nothing found$0.001
Website offline, parked, suspended or blockedFree

1,000 websites cost about $3, including up to 6 pages per website. That price covers all pages; you are never charged per page. Apify's free plan includes $5 of monthly credit, enough to try the scraper on well over a thousand websites.

Larger Apify plans pay less automatically: a website with contacts costs $0.0025 on Scale and $0.002 on Business.

Input

See the Input tab for every option. The only required field is Websites. Example:

{
"websites": ["apify.com", "https://www.lebkuchen-schmidt.com", "stripe.com"],
"maxPagesPerWebsite": 6,
"extractEmails": true,
"extractPhones": true,
"extractSocials": true,
"verifyEmailDomains": true,
"onlySameDomainEmails": false,
"phoneCountry": ""
}
  • Default country for local phone numbers: numbers written without a country code (for example (03) 9484 9639) are read using the country of the website's domain (.com.au means Australia), then the page language, then the address. Set a two-letter code such as GB to force one.
  • Only emails on the website's own domain: turn on to drop Gmail and other outside addresses. Leave off for small businesses, many of which use Gmail.

Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. A trimmed real result:

{
"website": "https://www.lebkuchen-schmidt.com",
"domain": "lebkuchen-schmidt.com",
"status": "ok",
"companyName": "Lebkuchen-Schmidt",
"primaryEmail": "service@lebkuchen-schmidt.com",
"emails": ["service@lebkuchen-schmidt.com", "affiliate@lebkuchen-schmidt.com", "info@lebkuchen-schmidt.de"],
"primaryPhone": "+49 911 896631",
"phones": ["+49 911 896631", "+49 69 65009565", "+49 911 89660"],
"phoneDetails": [
{ "number": "+49911896631", "international": "+49 911 896631", "national": "0911 896631", "country": "DE", "type": "fixed_line", "source": "tel-link", "foundOn": "https://www.lebkuchen-schmidt.com/de/kontakt/kontaktanfrage/" }
],
"linkedin": "https://linkedin.com/company/lebkuchen-schmidt-business",
"facebook": "https://facebook.com/lebkuchen.schmidt",
"instagram": "https://instagram.com/lebkuchenschmidt",
"youtube": "https://youtube.com/user/SchmidtLebkuchen",
"address": "Zollhausstraße 30, Nürnberg, Bayern 90469, DE",
"contactPageUrl": "https://www.lebkuchen-schmidt.com/de/kontakt/",
"pagesCrawled": 6
}
{
"website": "https://www.drunkenbarber.com.au",
"domain": "drunkenbarber.com.au",
"status": "ok",
"companyName": "Drunken Barber",
"primaryEmail": "drunkenbarber3065@gmail.com",
"primaryPhone": "+61 3 9417 1561",
"facebook": "https://facebook.com/Drunken-Barber-543923568968459"
}

Tips for better results

  • Feed it websites from anywhere: Google Maps exports, directory listings, trade show exhibitor lists, CRM exports. Duplicates and www. variants are merged automatically.
  • Large company sites spread contacts across many pages. Raise Max pages per website to 10 or 15.
  • Sites built entirely in JavaScript (a small share of websites) show little text to a plain HTTP reader, so they may return fewer contacts.
  • Seeing many blocked rows? Turn on Apify Proxy in the Advanced section.
  • Schedule the scraper in Apify to refresh contact lists every month.

Integrations and API

  • API: start runs and download results from any language. Open the API tab for ready code in Python, JavaScript and cURL.
  • Python: from apify_client import ApifyClient, then client.actor("stratumics/website-contact-scraper").call(run_input={"websites": ["acme.com"]}).
  • JavaScript: import { ApifyClient } from 'apify-client', then the same call with client.actor('stratumics/website-contact-scraper').call({ websites: ['acme.com'] }).
  • No-code: Zapier, Make, n8n, Google Sheets, HubSpot and Slack integrations from the Integrations tab.
  • AI agents: connect any MCP-capable assistant or agent to Apify's MCP server (mcp.apify.com) and it can call this scraper as a tool to look up a company's contact details.

FAQ

This scraper only reads pages that the website publishes for everyone, and the contact details businesses list there for the purpose of being contacted. Our Actors are ethical and do not extract any private user data. However, you should be aware that your results could contain personal data, such as the work email of a named employee. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. When you email the contacts you find, follow the anti-spam rules of the recipient's country (for example CAN-SPAM, PECR and the GDPR).

Why did a website return no emails?

Some businesses show only a contact form, or put their address in an image. Check hasContactForm and contactPageUrl to reach them another way, and look at phones and the social profiles.

What do the email types mean?

role means a shared inbox such as info@, sales@ or support@. personal means an address that looks like a person's, such as jane.smith@. sameDomain tells you whether the address is on the company's own website domain.

How is this different from a Google Maps scraper?

A Google Maps scraper finds businesses. This tool reads their websites. Run a Maps scraper first, then pass its website column here to add emails and social profiles.

Found a problem or need a field?

Open an issue in the Issues tab. Every issue is read and usually answered within a day.

Other tools from Stratum ICS

  • Airbnb Scraper: Get every Airbnb listing in a city or from listing links: price per night, rating, reviews, guests, bedrooms, host and Superhost status.
  • App Store Reviews Scraper: Get Apple App Store reviews with star ratings, titles, text, app versions, helpful votes and developer replies, well past Apple's 500-review limit, for any country, plus app ratings.
  • Bilibili Scraper: Scrape Bilibili videos by search, link or uploader without logging in: views, likes, coins, tags, uploader profiles, comments with replies and danmaku, in clean rows.
  • Facebook Ads Library Scraper: Get ads from the Meta (Facebook) Ad Library by keyword, advertiser page or library link: texts, images, videos, dates, platforms and versions, plus spend for political ads.
  • Facebook Posts Scraper: Get posts from public Facebook pages: text, reactions by type, comments, shares, views and media, plus page details with followers, contacts, rating and creation date.
  • Google Ads Transparency Scraper: Get the ads any advertiser runs on Google Search, YouTube, Shopping, Maps and Play, from the Ads Transparency Center: images, formats, dates, regions and EU reach.
  • Google Maps Reviews Scraper: Get the Google Maps reviews of any place: rating, full text, exact date, photos, owner reply, reviewer details and food or service scores.
  • Google Maps Scraper: Get the businesses on Google Maps for any search and area: name, address, phone, website, rating, review count, opening hours, plus emails and social profiles.
  • Google News Scraper: Get Google News articles with real publisher URLs (not Google redirects), source, date, image, author and optional full text.
  • Google Play Reviews Scraper: Get Google Play reviews with star ratings, text, app versions, thumbs-up counts, developer replies and feature ratings in any language, plus app details with installs and star histogram.
  • Google Trends Scraper: Get Google Trends data as JSON, CSV or Excel: interest over time, interest by region and city, related queries, and trending searches by country.
  • Instagram Scraper: Scrape public Instagram profiles, posts, reels and comments without logging in: followers, bio, posts count, captions, likes, video views, media links, tags and music.
  • LinkedIn Jobs Scraper: Scrape LinkedIn jobs with full descriptions, salary ranges, seniority, job type and applicant counts.
  • Reddit Scraper: Get Reddit posts and full comment threads from subreddits, searches, user profiles and post links: titles, text, scores, flair, media and replies.
  • Telegram Channel Scraper: Get messages from public Telegram channels with views, dates, media, reactions, polls and forwards, plus channel info with exact subscriber counts.
  • Threads Scraper: Scrape Threads profiles, posts, replies and keyword search: followers, bio, post text, likes, replies, reposts, quotes, media and links.
  • TikTok Comments Scraper: Export TikTok comments and replies from any video or photo post: text, date, likes, reply count, commenter, pinned and creator-liked flags, plus video stats.
  • TikTok Scraper: Scrape TikTok profiles and videos: followers, likes, bio, the latest 10 to 12 videos of each profile, and full stats for any video link.
  • YouTube Scraper: Get YouTube videos from searches, channels, playlists and links with exact views, likes, comment counts, dates and tags, plus channel profiles and comments.
  • YouTube Transcript Scraper: Get YouTube transcripts and captions as plain text, timed segments, SRT or WebVTT, from video links, whole channels or playlists, in any language YouTube offers.