Disclosure: I publish the Apify actor tested below (pennydata/website-contact-extractor) and earn a fee when it runs. This post was written with AI assistance (Claude). It is a small benchmark of my own tool, not a neutral comparison.

I wanted to know how often a plain-HTTP contact extractor actually finds something on real business sites, so I ran it on 20 of them and kept the misses.

Result in one line: on 20 public company homepages, 17 loaded and 3 returned HTTP 403. Of the 20, a contact page was found on 13, a contact form URL on 4, at least one public email on 10, a phone on 4, and a social link on 15.

Method

  • Tool: the actor's own source code, run locally with Node (tsx src/main.ts), one process per domain, default settings. No Apify run, no proxy, no browser. robots.txt respected (default).
  • Input: the bare domain only. The extractor reads the homepage plus up to two same-site contact/about pages and probes /contact and /contact-us if none is linked.
  • Sample: 20 company sites I picked by hand: 6 SaaS, 4 agencies, 5 local/independent shops, 5 nonprofits. Not random, and small: treat every percentage as "about 1 in N", not a statistic.
  • Recorded per domain: contact page found (y/n), contact form URL found (y/n), count of emails, phones and social links, wall-clock seconds, errors. Runtime includes about a second of Node/tsx start-up because each domain was its own process.
  • I did not check correctness of the emails or phones, only that they were found. I am not publishing any address; the CSV holds counts only.
  • Run on 2026-10-24 from a single IP.

Results

Sites Found
Loaded without error 20 17
Contact page URL 20 13
Contact form URL 20 4
At least one email 20 10 (29 emails in total)
At least one phone 20 4 (10 phones in total)
At least one social link 20 15 (64 links in total)

By category (contact page / form URL / has email):

Category Sites Contact page Form URL Has email
SaaS 6 6 1 3
Agency 4 3 2 2
Local shop 5 1 1 2
Nonprofit 5 3 0 3

Runtime for the 20 runs: 1.4 to 3.9 s each, 50.9 s in total, 2.55 s mean (2.72 s mean over the 17 that loaded).

The failures

  • 3 of 20 returned HTTP 403 (powells.com, bluebottlecoffee.com, kiva.org). A plain HTTP client with no browser and no proxy gets blocked by some bot protection. The actor reports them as errors and does not charge for them. If your list is full of bigger retail or nonprofit sites, expect misses like this.
  • Only 4 of 20 gave a contact form URL. Two more sites (zingermans.com, doctorswithoutborders.org) have a form somewhere (it was detected as an HTML form) but not on a page the actor identified as the contact page, so the form URL field stayed empty.
  • thoughtbot.com: no contact page found, even though 2 phones and 3 social links were found. Contact-page detection misses sites whose contact link is not a standard path or anchor text. I did not investigate further.
  • Local shops were the weakest group: a contact page on 1 of 5, and 2 of the 5 were blocked outright (HTTP 403).
  • posthog.com and buffer.com: contact page found but 0 emails. Many SaaS sites route everything through forms or support portals, so "no email" is often correct, not a bug.
  • JavaScript-rendered pages are out of scope for a no-browser tool.

Price

See the actor page for current pay-per-event pricing. Sites that error or are skipped by robots.txt are not charged.

Try it

https://apify.com/pennydata/website-contact-extractor

Per-domain counts (counts only, no addresses):

Domain Category Contact page Form URL Emails Phones Socials Status
linear.app SaaS y n 1 0 2 ok
posthog.com SaaS y n 0 0 0 ok
plausible.io SaaS y n 1 0 8 ok
basecamp.com SaaS y n 2 0 0 ok
buffer.com SaaS y n 0 0 4 ok
sentry.io SaaS y y 0 0 2 ok
thoughtbot.com Agency n n 0 2 3 ok
pentagram.com Agency y n 4 0 4 ok
ustwo.com Agency y y 0 0 2 ok
hugeinc.com Agency y y 3 5 3 ok
katzsdelicatessen.com Local y y 1 1 3 ok
powells.com Local n n 0 0 0 HTTP 403
zingermans.com Local n n 2 2 3 ok
vermontteddybear.com Local n n 0 0 4 ok
bluebottlecoffee.com Local n n 0 0 0 HTTP 403
eff.org Nonprofit y n 6 0 4 ok
charitywater.org Nonprofit y n 4 0 6 ok
kiva.org Nonprofit n n 0 0 0 HTTP 403
wikimediafoundation.org Nonprofit y n 5 0 8 ok
doctorswithoutborders.org Nonprofit n n 0 0 8 ok

If you have a site where it misses a contact page, leave a comment with the domain; those are the cases I want to fix.

Written with AI (Claude)