Contact Details Scraper | Emails, Phones & Socials From Sites avatar

Contact Details Scraper | Emails, Phones & Socials From Sites

Pricing

from $1.68 / 1,000 website results

Go to Apify Store
Contact Details Scraper | Emails, Phones & Socials From Sites

Contact Details Scraper | Emails, Phones & Socials From Sites

Extract emails, phone numbers and 13 social networks from any website list at a flat $2.40/1,000 sites. MX-verified emails, Cloudflare-obfuscation decoding, JSON-LD company data, smart contact-page crawling. Failed sites are never charged.

Pricing

from $1.68 / 1,000 website results

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

3 days ago

Last modified

Share

Contact Details Scraper — Email, Phone, Socials + MX Check

Turn any list of websites into a clean, verified contact database. Paste domains, get back emails (MX-checked so they don't bounce), phone numbers, 13 social networks, and structured company data — at a flat $2.40 per 1,000 websites, everything included.

Why this one?

Most contact scrapers charge per page, per contact, or per social profile — you can't predict your bill, and they hand you raw strings that bounce in your outreach tool. This Actor is different:

  • Flat, predictable pricing — one price per website, no matter how many pages we crawl or contacts we find. $2.40/1,000 websites vs. $3–$10.50/1,000 effective at the popular alternatives.
  • Failed websites are never charged. Site down, DNS dead, non-HTML? You pay $0 for it. It's listed in the run SUMMARY so you know exactly what happened.
  • MX-verified emails, built in. Every found email's domain is checked for valid MX records (DNS-over-HTTPS). Dead domains are flagged before they wreck your sender reputation. Competitors charge extra for this or skip it entirely.
  • Finds emails others miss: mailto: links, plain text, Cloudflare-protected emails (data-cfemail — decoded, not the useless [email protected] placeholder), obfuscated patterns like name [at] company [dot] com, and JSON-LD structured data.
  • Smart crawling, not blind crawling. We fetch the homepage, then spend your page budget on the pages that actually contain contacts: /contact, /impressum, /about, /team, /support — scored and prioritized, in 5 languages of URL patterns.
  • A bestEmail you can use immediately. Ranked by quality: MX-valid corporate personal inbox → info@ → free provider; disposable addresses are demoted. Plus a 0–100 confidence score per site.

Who uses this

  • Sales & lead-gen teams enriching lead lists (from Google Maps scrapers, directories, CSV exports) with emails that actually deliver.
  • Agencies building outreach lists for clients — flat pricing means you can quote your client a fixed cost.
  • Recruiters finding company contact channels at scale.
  • Data teams appending contact + social columns to any company dataset.

Input

FieldTypeDefaultDescription
websitesarrayDomains (acme.com) or URLs (https://acme.com), one per line
maxPagesPerWebsiteinteger8Crawl budget per site (1–25). More pages never costs more.
verifyMxbooleantrueMX-check every email domain via DNS-over-HTTPS
deobfuscateEmailsbooleantrueDecode Cloudflare-protected + [at]/[dot] emails
includeSocialsbooleantrueExtract 13 social networks
sameDomainOnlybooleantrueStay on the exact input domain (off = allow subdomains)
maxConcurrencyinteger10Websites processed in parallel
navigationTimeoutSecsinteger20Per-request timeout

Output (one row per website)

FieldDescription
bestEmailHighest-quality email — MX-valid corporate personal inbox ranks first
emails[]All emails with extraction method (mailto / text / cloudflare-decoded / deobfuscated / jsonld), mxStatus (valid / none / unknown), isRole, isFree, isDisposable, and source pages
primaryPhoneBest phone — tel: links and JSON-LD outrank text matches
phones[]All phones with source + confidence
socialsLinkedIn, Facebook, Instagram, X, YouTube, TikTok, GitHub, Pinterest, Threads, Telegram, WhatsApp, Discord, Medium — profile links only, share/intent links filtered out
organizationCompany name, type and address from JSON-LD structured data
contactPageFoundWhether a dedicated contact/impressum page was located
confidence0–100 contactability score
pagesCrawled, crawledUrlsExactly what was fetched — full transparency

A SUMMARY record in the key-value store gives you run-level stats: email hit rate, MX-valid %, and the list of failed (uncharged) websites.

How to schedule this Actor

Contact data decays — people change jobs, domains die, companies rebrand. Re-verify your list on a schedule:

  1. Open the Actor → Schedules tab → Create new schedule.
  2. Pick a cadence — weekly or monthly works well for re-verifying an outreach list.
  3. Set your websites input (or point your workflow at a dataset from a previous run).
  4. Add a webhook or connect the run to Zapier/Make/n8n to push fresh contacts into your CRM automatically.

Because pricing is flat per website and dead sites are free, re-running a 1,000-domain list costs a predictable $2.41 — no surprises.

Pricing

EventPrice
Actor start$0.01
Website result (all contacts + MX verification included)$0.0024

Example: 1,000 websites = $2.41 total. If 50 of them are unreachable, you pay for 950.

FAQ

Does it work on any website? Any publicly accessible HTML website. It's HTTP-based (no browser), so heavily JavaScript-rendered SPAs may yield fewer contacts — but footers, contact pages and JSON-LD are almost always in the HTML.

Is MX verification the same as SMTP verification? MX checking confirms the domain can receive mail (kills hard-bounce domains). It does not probe individual mailboxes, which keeps it fast, cheap and included in the flat price.

Where do the emails come from? Only from the target website's own public pages. No third-party databases, no guessing patterns.

GDPR note: you're extracting publicly published business contact data; make sure your outreach complies with the laws of your jurisdiction.

Example output (one real row, 6 Sep 2026)

{
"website": "https://apify.com/",
"url": "https://apify.com/",
"domain": "apify.com",
"websiteTitle": "Apify",
"bestEmail": "john.wick@thecontinental.com",
"emails": [
{
"email": "support@apify.com",
"method": "text",
"sources": [
"https://apify.com/",
"https://apify.com/contact",
"https://apify.com/contact-sales",
"..."
],
"mxStatus": "valid",
"isRole": true,
"isFree": false,
"isDisposable": false
},
{
"email": "hello@apify.com",
"method": "mailto",
"sources": [
"https://apify.com/contact"
],
"mxStatus": "valid",
"isRole": true,
"isFree": false,
"isDisposable": false
},
{
"email": "hello@apify.comproductapify",
"method": "text",
"sources": [
"https://apify.com/contact"
],
"mxStatus": "none",
"isRole": true,
"isFree": false,
"isDisposable": false
},
"..."
],
"emailCount": 4,
"hasEmail": true,
"primaryPhone": "02993192861196",
"phones": [
{
"phone": "02993192861196",
"source": "text",
"confidence": "low"
}
],
"phoneCount": 1,
"socials": {
"discord": "https://discord.com/invite/jyEM2PRvMU",
"linkedin": "https://linkedin.com/company/apify",
"x": "https://x.com/apify",
"github": "https://github.com/apify",
"tiktok": "https://tiktok.com/@apifytech"
},
"socialCount": 5,
"organization": {
"name": "Apify",
"type": "Organization",
"address": "Na Příkopě 959/27, Prague, 11000, CZ"
},
"contactPageFound": true,
"pagesCrawled": 6,
"crawledUrls": [
"https://apify.com/",
"https://apify.com/contact",
"https://apify.com/contact-sales",
"..."
],
"confidence": 84,
"scrapedAt": "2026-09-06T03:45:57.513Z"
}

Changelog

  • 0.1.2 (16 Sep 2026) — A run with no input no longer fails: the example input is the default, so "Run" with an empty form (or {} via API) returns the demo dataset. Output unchanged.
  • 0.1.1 (16 Sep 2026) — Reliability: V8 heap capped at 70 % of run memory so garbage is collected before the container limit (prevents out-of-memory kills on big pages). No output change.
  • 12 Sep 2026 — No more silent out-of-memory failures on large sites: one DOM per page, pages capped at 500 KB, concurrency scaled to run memory (default memory now 1 GB). Previously a run could die after 2–3 big sites with a bare exit code and no rows for the rest.
  • 12 Sep 2026 — Cleaner values: JSON-escape fragments no longer leak into emails (u003esupport@… duplicates are gone), support@acme.com.To sentence-boundary captures are trimmed, text-regex phones must look like real phone formats (prices, IDs and repeated blocks such as 11001100 are rejected), and domain is the site you asked for rather than a redirect host (gymshark.com, not us.checkout.gymshark.com). No price change, no field removed.
  • 0.0.7 (10 Sep 2026) — Soft run deadline (stops starting new sites when <45 s remain, SUMMARY always written) and bestEmail now prefers on-domain addresses.
  • 0.0.1 (25 Aug 2026) — Launch.

Found this useful? A review helps more than you'd think

If this Actor saved you time, a short review on the Reviews tab of this Store page takes 30 seconds and is the only signal other buyers have before they spend anything. If something is broken instead, open a ticket on the Issues tab — parser bugs and field requests get fixed.

Related Actors from the same account