Website Contact Scraper — Emails, Phones & Social Links avatar

Website Contact Scraper — Emails, Phones & Social Links

Pricing

from $1.00 / 1,000 website contact reports

Go to Apify Store
Website Contact Scraper — Emails, Phones & Social Links

Website Contact Scraper — Emails, Phones & Social Links

Extract publicly listed emails, explicit phones and social profile links from static HTTPS websites and linked contact pages, with source evidence. Per-report fees and separate Apify platform usage apply.

Pricing

from $1.00 / 1,000 website contact reports

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Website Contact Scraper extracts public emails, explicit phones and social profile links from static HTTPS websites and contact/about/legal pages. Supply websites for source-backed business-directory or CRM enrichment; no company discovery or private people enrichment.

One saved website report = one billable result, not one email. A qualifying email, explicit phone or social profile is enough; social-only reports are billable. Empty scans/errors stay in non-dataset OUTPUT.

Quick start

  1. Enter public homepage URLs, or a contact-page URL as the initial page.
  2. Choose the website-report limit and page-attempt budget.
  3. Click Start; export successful reports as JSON, CSV or Excel and inspect OUTPUT for empty scans/errors.
{
"startUrls": [
{ "url": "https://www.scrapingbee.com/" },
{ "url": "https://www.w3.org/contact/" }
],
"maxResults": 10,
"maxPagesPerWebsite": 3,
"sameDomainEmailsOnly": true
}

Examples do not guarantee contacts/access. Paths are retained; initial queries/fragments are removed. The first URL per host/www pair wins; other subdomains are separate websites.

What is extracted

  • Emails: static text, mailto: and supported business JSON-LD; lowercase and syntax-bounded, not verified deliverable.
  • Phones: tel: or business telephone JSON-LD only. Punctuation is removed; existing +/extensions remain. No country-code inference or body-number guessing.
  • Profiles: X/Twitter, Facebook, Instagram, LinkedIn company/school, YouTube, TikTok, Threads, Pinterest, GitHub and Telegram. Share/content/login URLs and personal LinkedIn profiles are excluded.
  • Evidence: deduplicated values retain source pages. Linked profiles are not verified ownership.

Only initial-page contact/about/imprint/legal/selected support candidates are followed on the host/www alias—not recursively. Later pages may contribute unfetched candidate links to output.

Input fields

FieldDefault / prefillMeaning
startUrlsUI prefill aboveRequired: 1–100 public HTTPS { "url": "..." } entries; runtime also accepts strings
maxResults101–100 saved website reports; empty scans do not count
maxPagesPerWebsite31–5 page attempts including initial page; failures count, robots-disallowed links do not
sameDomainEmailsOnlytrueMatch website registrable domain, respecting private hosting suffixes

Separate github.io tenants do not match. Gmail/external-domain contacts may be excluded; set sameDomainEmailsOnly: false to retain them. Shared organization ownership is not inferred.

Output and report interpretation

One row is one host/www pair with qualifying contacts or profiles:

  • websiteUrl, inputUrl, domain: final initial-page URL, normalized input and hostname.
  • title, organizationName: initial-page title and listed og:site_name/business name, otherwise null.
  • emails, phones; convenience email/phone are first sorted values, not ranked contacts.
  • socialProfiles: platform, canonical URL and source URLs; emailSources/phoneSources: each value's evidence pages.
  • contactPageUrls: candidates, not all fetched. pagesScraped/pagesFetched: parsed page URLs/count, not request attempts.
  • sameDomainEmailsOnly, metadataTruncated, host-hash id, extractionMethod: public-static-html and collection-time scrapedAt.

Absent phones mean phone: null, phones: []—not that no phone exists. Findings cover inspected pages only. JSON retains nested evidence; CSV/Excel may stringify it. Treat source text as untrusted in spreadsheets.

OUTPUT lists CONTACTS_FOUND, NO_CONTACTS_FOUND or SKIPPED, robots/access status, pages, warnings, filtered-email counts and limits. Accessible empty scans can succeed; all processed sites unavailable/disallowed fails the run. Partial runs keep billable reports. Check resultSaved for actual dataset saves.

Current pricing

Current USD configuration; consult the Pricing tab and run Usage report.

ChargeCurrent rate
apify-default-dataset-item$0.001 per saved qualifying website report — $1 per 1,000
Actor startup eventNone configured
Additional contacts/pages within a saved reportNo separate email, phone, page or social-link event
Apify compute, transfer and storageBilled separately to the running user at their Apify plan rates

10 saved reports = $0.01 in result events plus platform usage. 1,000 across runs = $1 plus usage; each run allows at most 100 reports. Zero reports have no result fee but can cost compute/traffic/storage.

Saved rows are billed automatically, without manual double charges. Duplicates/empty scans/errors are not rows. New runs bill saved reports again. Event allowance is checked before scanning/saving; the budget caps report fees, not platform usage. No paid upstream Actor/enrichment API/browser/proxy is used.

Reliability and safety limits

  • Public HTTPS/443 without URL credentials only. HTTP-only, literal-IP and private/local targets are unsupported. DNS answers and redirects are checked and connections pinned to public addresses. Cross-company/other-subdomain redirects are rejected.
  • robots.txt and crawl-delay are respected. Robots 404 means no published rules; empty HTTP 200 rules are accepted. Other robots failures or HTML masquerading as robots skip the site. Redirected page origins are checked too.
  • At least 500 ms between page requests, or a longer declared crawl-delay. Robots requests, redirects and one retry for HTTP 429/502/503/504 can add HTTP requests beyond the page-attempt limit.
  • 120-second collection deadline, 300 HTTP requests, 2 MiB decoded per response and fixed 256 MB memory. Deadline checks bound fetching/crawling, not an exact total wall-clock guarantee including storage. Increasing overall runtime does not remove collection caps.
  • Up to 100 unique emails, 100 phones and 100 social URLs per report. Link/JSON-LD parsing is bounded; metadataTruncated signals selected major caps, not proof of complete extraction.

No JavaScript rendering, obfuscation decoding, CAPTCHA/login bypass, private directories, social-profile scraping, MX/delivery/phone-activity checks, downloads or outreach. Images/forms/JavaScript-only contacts can be missed; CSS visibility is not evaluated. Supported ASCII/IDNA syntax is extracted, but source values may be stale or wrong.

FAQ

Why did I pay for a report without an email?
A qualifying explicit phone or supported social link also makes a saved website report billable. Check the contact arrays before treating a report as an email lead.

Why was a listed Gmail address omitted?
sameDomainEmailsOnly defaults to true. Disable it deliberately to keep external-domain addresses; this does not verify ownership or delivery.

Does it crawl every page or verify social accounts?
No. It follows a few initial-page contact/about/legal candidates and records profile links, without visiting or verifying those accounts.

Use funny_ground/website-contact-social-scraper with the same JSON through Apify API/SDK. Read the default dataset and key-value store OUTPUT. No website account/API key is needed, but Apify API calls require your private Apify token.

For ecommerce websites, complement contacts with public catalog exports using Shopify Products Scraper or WooCommerce Products Scraper.

Use publicly listed business contacts responsibly and follow privacy/marketing laws and site terms. Do not use the Actor for harassment, unauthorized personal-data collection or unsolicited mass messaging.