Bulk Contact & Email Scraper — Emails, Phones & Socials avatar

Bulk Contact & Email Scraper — Emails, Phones & Socials

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Bulk Contact & Email Scraper — Emails, Phones & Socials

Bulk Contact & Email Scraper — Emails, Phones & Socials

Bulk email & contact scraper: feed a list of websites — a few or thousands from a spreadsheet, CRM, or API — and get every email, phone, and social profile from their homepage and contact pages. Each email is typed (sales, support, personal) and tagged with its source page. For lead generation.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Jim Whyte

Jim Whyte

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Bulk Contact & Email Scraper — Emails, Phones & Socials from a List of Websites

Turn a whole list of company websites into a contact list in one run. Feed it a handful of domains or thousands, and it returns every email address, phone number, and social profile it can find across each site's homepage and its contact / about / team pages.

Built for bulk lead generation. You already have a list of company websites — from a spreadsheet, a CRM export, a Google Maps scrape, a directory, or a conference attendee list — and this fills in how to actually reach them, at scale.

Feed it your whole database of sites

  • Paste a list, or upload one, right in the input form.
  • Pipe thousands in via the API straight from your CRM, database, or app.
  • Chain it after another Apify actor (e.g. a Google Maps or directory scraper that outputs company websites) so the whole pipeline runs hands-off.
  • Pull the input list from Google Sheets using Apify's built-in integrations.

It processes many sites concurrently, so a large list finishes fast.

What it does

For each website you provide, it:

  1. Fetches the homepage.
  2. Finds the most contact-relevant internal pages (contact, about, team, imprint…) and fetches those too.
  3. Extracts and de-duplicates:
    • Emails — from mailto: links and page text, junk filtered, each typed (sales, support, info, careers, billing, press, legal, personal…) and tagged with the page it came from.
    • Phones — from tel: links and text, validated, each with a label (the department or nearby text, e.g. "Sales" — null when the site gives no context) and the page it came from.
    • Socials — LinkedIn, Twitter/X, Facebook, Instagram, YouTube, TikTok (company profiles, not share links).

Input

FieldDescription
websitesList of domains or URLs (stripe.com, https://example.com)
websitesTextOr paste them separated by newlines/commas/spaces
maxPagesPerSiteHomepage + N best contact pages (default 3)
includePhonesExtract phone numbers (default on)
includeSocialsExtract social profiles (default on)
maxConcurrencySites processed in parallel (default 10)
proxyConfigurationRoute through Apify Proxy (recommended for large runs)

Output

One record per website:

{
"input": "acme.com",
"url": "https://acme.com",
"status": "ok",
"emails": [
{ "email": "sales@acme.com", "type": "sales", "source": "https://acme.com/contact" },
{ "email": "jane.doe@acme.com", "type": "personal", "source": "https://acme.com/team" }
],
"phones": [
{ "phone": "+44 20 3695 7895", "label": "Sales", "source": "https://acme.com/contact" }
],
"socials": {
"linkedin": "https://www.linkedin.com/company/acme",
"instagram": "https://www.instagram.com/acme"
},
"pages_crawled": 3
}

Each email carries a type so you know whether it's a department or a person, and each contact carries the source page it was found on — so you're never left guessing what a number is for.

status is one of ok, no_contacts_found, unreachable, invalid_input, or error — so you always know whether a blank row means "no contacts", "couldn't reach the site", or "bad input".

Export to CSV, JSON, or Excel, or pull via the API.

Pairs with: Company Data Enrichment

Got the contacts? Now find out who the company is. Feed the same list of domains to Company Data Enrichment and get each company's name, description, industry, HQ location, founding date, tech stack, and logo — no LinkedIn. Two steps, one lead-gen pipeline.

Pricing

Pay per website processed — no subscription, no minimum. You only pay for the sites you run. If you set a maximum charge on a run, the actor stops cleanly once that budget is reached and reports how many sites it processed — it never runs up costs beyond your cap.

Notes

  • Respectful crawling: identifies itself, follows redirects, only fetches HTML pages.
  • Some companies deliberately publish no email (common for banks/fintech); you'll still get their phone and socials where available.