Website Contact & Email Extractor avatar

Website Contact & Email Extractor

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Website Contact & Email Extractor

Website Contact & Email Extractor

$2/1K ๐Ÿ”ฅ Fast website contact & email extractor! Emails, phone numbers & social links from any site โ€” crawls contact/about pages too. JSON, CSV, Excel or API in seconds. Paste URLs & build thousands of B2B leads โšก

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Share

What does Website Contact & Email Extractor do?

Extract published emails, phone candidates and social profile links from a list of public websites. Each distinct hostname produces at most one inspected-website row, including websites with no contacts. Optional followups inspect up to four same-site contact/about/imprint pages. This is static HTML extraction: no browser rendering, private data access, enrichment or email deliverability verification.

How to use it

  1. Enter website URLs or bare domains. The small default is Python.org.
  2. Choose the maximum websites and whether to inspect contact pages.
  3. Run the Actor and download the dataset as JSON, HTML, CSV or Excel. Check the coverage summary for failed websites.

API input example (also the effective empty-object defaults):

{"startUrls":["https://www.python.org/"],"maxItems":5,"crawlContactPages":true}

Use the API tab for authenticated endpoint examples, or save a task for scheduled website checks.

Input and boundaries

startUrls accepts strings or objects with url (legacy requestUrl also supported). The first URL for each hostname wins; www. aliases, different paths and HTTP/HTTPS variants of that hostname do not create extra rows. Different subdomains are separate websites. maxItems is a global 1โ€“1000 row limit, default 5. At most 1000 input entries are accepted. Explicit empty arrays and invalid URLs fail early; {} uses the documented example.

Only HTTP(S) public destinations on ports 80/443 are supported. Credentials, private addresses and redirects to them are rejected. Followup redirects must stay on the final homepage hostname (allowing www. aliases). Each document allows three redirect hops, a 15-second transport deadline and at most 2 MB. DNS resolution uses the operating system resolver and may add time. No retry loop or proxy rotation is included.

Output and coverage

FieldMeaning
url, domain, idInput URL, hostname and stable website identifier
title, emails, phonesPage title, deduplicated email/phone candidates; null when absent
facebook, twitter, linkedin, instagram, youtube, tiktok, pinterestFirst matching public profile per network, otherwise null
pages_crawled, pages_attempted, source_pagesSuccessfully inspected pages, attempts and final source URLs
statusok: contacts found; empty: inspected selected pages without contacts; partial: failed followup or discovered-page limit
source_url, scraped_atFinal homepage URL and UTC extraction time
errors, coverage_limitedFailed followup details and additional discovered pages beyond the four-page limit

Phones are plausible strings, not verified numbers. Text-only numbers need an international prefix or opening parenthesis; explicit tel links are also accepted. Formatting variants with the same complete digits are deduplicated, including 00 and + international prefixes. Country codes are retained; ambiguous national/international equivalents are not guessed. Hidden JavaScript-rendered and obfuscated contacts can be missed.

An unreachable homepage produces no billable dataset row: its failure appears in the RUN_SUMMARY key-value record. Successful homepages with failed followups retain their partial contacts and are billed once as inspected websites; the run fails visibly for incomplete fetch coverage. Reaching the documented four-followup bound is partial coverage but not a transport error. With followups disabled, empty refers only to the homepage.

Pricing and budget

Current standard pricing is $0.002 per delivered website row and $0.00005 per Actor-start event (minimum one event; start units depend on memory). At 512 MB, 1, 100 and 1000 rows in one start cost $0.00205, $0.20005 and $2.00005 respectively at these rates. Tier-specific or later platform pricing is shown in the Pricing tab. Contact-free but successfully inspected websites count as results. Failed homepages do not.

The Actor checks the SDK event allowance before each website, before followups and before publishing. It reuses existing dataset website identities on resurrection, avoiding duplicate rows and result events; resurrection may incur another platform start event. Already delivered partial websites are not re-fetched on resurrection. Start a new run to retry them. Platform infrastructure limits still apply.

Troubleshooting and support

A successful HTTP response is not proof of complete contact coverage. Inspect status, source_pages and RUN_SUMMARY. Blocks, timeouts, non-HTML documents or malformed redirects remain explicit errors. Use the Issues tab with a small public reproducible URL and run ID; do not post credentials or private contact lists. Only process websites and publicly published details you are authorized to use.