Bulk Contact & Email Scraper — Emails, Phones & Socials
Pricing
from $2.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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:
- Fetches the homepage.
- Finds the most contact-relevant internal pages (contact, about, team, imprint…) and fetches those too.
- 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" —nullwhen the site gives no context) and the page it came from. - Socials — LinkedIn, Twitter/X, Facebook, Instagram, YouTube, TikTok (company profiles, not share links).
- Emails — from
Input
| Field | Description |
|---|---|
websites | List of domains or URLs (stripe.com, https://example.com) |
websitesText | Or paste them separated by newlines/commas/spaces |
maxPagesPerSite | Homepage + N best contact pages (default 3) |
includePhones | Extract phone numbers (default on) |
includeSocials | Extract social profiles (default on) |
maxConcurrency | Sites processed in parallel (default 10) |
proxyConfiguration | Route 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.