scraper · list enrichment · runs on Apify

website email extractor

the enrichment engine for lists you already have: paste any URLs — websites, Linktrees, bio pages — and get back every email, phone and social link published across up to 4 pages per site — with a real browser for sites that need one.

up to 4 pages crawled / URL $0.006 per site with emails · no email, no charge 15+ bio-link aggregators resolved
run on Apify → see how it works ↓
new to Apify? you get $5 in free credits — that's ~830 websites with emails, no card required.

you already have the list. what you don't have is the contacts.

Every team accumulates URL lists with no contact data attached: conference exhibitors, directory exports, portfolio collections, partner prospects, the "companies to reach out to someday" spreadsheet. Visiting each site by hand to find an email takes minutes per row.

This Actor does that visit for you — over fast HTTP, or in a real Chromium browser when the site only shows its content with JavaScript: homepage first, then up to three more pages (contact, about, team), extracting every email, phone number — US and international formats — and social profile it finds. If the URL turns out to be a Linktree, Beacons or any of 15+ bio-link aggregators, it follows through to the real website automatically.

At $0.006 per website where emails are found — sites with no email cost nothing — and roughly 10-20 seconds per site, a 500-row list that would take a week by hand comes back enriched in well under an hour for $3 at most.

how to use it

how to enrich a URL list in 5 steps

URLs in, contacts out. runs on Apify, $0.006 per website where emails are found.

1
paste your url list
the urls input takes any list — company websites, bio links, mixed sources. toggles: scrapeEmails, scrapePhones, scrapeSocials, and followLinkPages (auto-resolves Linktree-style aggregators). maxConcurrency defaults to 3. batches of 100-500 URLs are the recommended sweet spot.
2
each site is fetched — with a real browser when needed
every site is fetched over HTTP first; pages that come back nearly empty because they load with JavaScript are reopened in a real Chromium browser (Playwright), which matters because plenty of sites only inject contact info client-side. average processing is 10-20 seconds per URL.
3
bio-link pages get resolved to the real site
if a URL is a Linktree, Beacons, bio.link, linkin.bio, solo.to, stan.store, campsite.bio, carrd.co or one of 9+ other aggregators, the Actor detects it and follows through to the actual website before extracting — the contacts live there, not on the link page.
4
up to 4 pages crawled per site
homepage plus up to three internal contact / about / team pages, found automatically. each result reports what happened:
"inputUrl": "linktr.ee/somebrand", "resolvedUrl": "somebrand.com", "wasLinkAggregator": true, "emails": ["[email protected]"], "phones": ["+1 813 ..."], "socials": { "instagram": "...", "linkedin": "..." }, "pagesCrawled": 4
5
export the enriched list
CSV, JSON or Excel from the dashboard, or the Apify API for automation. natural next hop in the catalog: pipe the emails through the Email Verifier ($0.003/check) so only deliverable addresses reach your sequencer.
what to expect

hit rates by site type

documented extraction rates from the Actor — honest numbers, not promises. sites that publish no contacts return none.

documented rates by category

business websites · 60-80% yield contact data — the best case, since businesses want to be reached.

SaaS companies · 50-70% — contact info often lives on about or legal pages, which the 4-page crawl covers.

portfolio sites · 50-70% — freelancers and studios usually publish an email.

e-commerce stores · 40-60% — support emails and phones, often in footers.

bio-link pages · 30-40% on the link page itself — which is why the Actor follows through to the real site when followLinkPages is on.

phone formats · US and international formats are both recognized.

socials covered · Facebook, Instagram, Twitter/X, LinkedIn, YouTube, TikTok, Pinterest and Threads.

sample output · fictional records
inputUrlemailsphonespages
https://pelicanpipeworks.com[email protected], [email protected](813) 555-01423
https://linktr.ee/brickellbarbell[email protected]—2

one row per website where an email was found — and only those rows are charged. URLs with no email, dead domains and pages that fail to load are skipped and cost nothing. the Linktree row was followed through to the real site.

three ways operators use it

where the extractor pays for itself

lists · revival

turn a dead spreadsheet into a campaign

a sales team inherits 400 company URLs from a trade-show sponsor list — no emails, no phones. one run later (at most $2.40, under an hour) the list has contacts on the majority of business sites, each row tagged with how many pages were crawled and whether the URL was really a bio page. sites that publish no email simply don't come back — and aren't charged.

run frequency: per list · 400 URLs ≤ $2.40

creators · bio links

resolve a pile of Linktrees into real contacts

creator outreach lists are full of linktr.ee and beacons.ai URLs that contain no contacts themselves. with followLinkPages on, the Actor hops through to each creator's actual website and extracts there — the difference between a 30-40% yield on the link page and the 50-70% of a real portfolio site.

run frequency: per campaign · resolution included in the $0.006

pipeline · enrichment

the universal second stage for any scraper

any catalog scraper that outputs websites chains into this one: Google Maps leads whose first crawl missed an email, Facebook pages with a site but no published contact, TikTok creators with personal domains. an n8n flow feeds the URLs in and the Email Verifier cleans what comes out.

run frequency: continuous via API · $0.006 per site with emails

how it compares

extractor vs manual research vs guessing patterns

honest comparison against the two ways teams actually do this today.

data-runner.dev manual research email-pattern guessing
Source of truththe website itself, renderedthe website itselfname@domain templates
Bounce risklow — published addresseslowhigh — guesses bounce
JS-rendered contacts✓ real browser when needed✓ human browser✗
Bio-link resolution✓ automatic, 15+ servicesmanual clicking✗
Speed10-20s per URL, parallelminutes per URLinstant but unreliable
Phones + socials too✓✓ if noted down✗ emails only
Cost at 500 URLs$3days of someone's timefree, paid for in bounces
honest read · this Actor extracts what websites publish — it does not find emails that aren't there, and it does not guess patterns (deliberately: guessed emails bounce and burn sender domains). if a row comes back empty, manual research would likely come back empty too. for guessing done responsibly — pattern inference plus verification before anything is sent — that's the Email Verifier & Enricher's enrichment mode, and the two Actors chain well.

comparing tools rather than methods? see website email extractors compared — Outscraper, Hunter, Snov.io, PhantomBuster and Mailmeteor, with prices and sources.

pricing

$0.006 per site with emails. nothing for the rest.

no subscription. no minimums. you only pay for websites where emails are found.

$0.006 / website with emails found

every URL gets the full treatment: real-browser rendering when needed, up to 4 pages crawled, aggregator resolution, emails + phones + socials. you are charged only when it finds an email — a site with no email, a dead domain or a failed page costs $0. example: a 500-URL list costs $3 at most.

new to Apify? you get $5 in free credits on signup — that's ~830 websites with emails before you spend a cent.

run on Apify →
got questions

FAQ

how it works, what it costs, what's legal, and how it handles edge cases.

What exactly does it crawl on each website?+

The homepage plus up to three internal pages chosen automatically — contact, about and team pages are the priority targets. That 4-page budget covers where the overwhelming majority of published contact data lives without burning time on blog archives. Each result reports pagesCrawled so you can see what happened.

What happens when I feed it a Linktree or bio-link URL?+

With followLinkPages enabled, the Actor detects 17+ aggregator services (Linktree, Beacons, bio.link, linkin.bio, solo.to, stan.store, campsite.bio, carrd.co and more), follows through to the actual website behind the link page, and extracts there. The output marks wasLinkAggregator and includes the resolvedUrl so you keep both.

What hit rate should I expect?+

Depends on the list. Documented rates: business websites 60-80%, SaaS and portfolio sites 50-70%, e-commerce 40-60%, raw bio-link pages 30-40% before resolution. A mixed B2B list typically lands in the middle. Rows that return nothing usually mean the site genuinely publishes no contact info.

Does it find phone numbers and socials too, or just emails?+

All three, each behind its own toggle: emails, phones (US and international formats), and social links across Facebook, Instagram, Twitter/X, LinkedIn, YouTube, TikTok, Pinterest and Threads.

How fast is a run?+

10-20 seconds per URL on average, processed in parallel (maxConcurrency, default 3). A 500-URL batch typically completes well within the hour. The recommended batch size is 100-500 URLs per run for efficiency, with no hard cap documented.

Do I pay for websites that have no email?+

No. You are charged $0.006 only for each website where at least one email was found — that site gets one row in your dataset, however many emails it has. Websites with no email, dead domains and pages that fail to load are not written and cost nothing. So a 500-URL run costs at most $3, and less for every site that publishes no email.

Will it guess emails like name@company.com if none are published?+
No — deliberately. Guessed patterns bounce, and bounces above ~2-3% get your sending domain filtered. This Actor only extracts published addresses. If you want pattern inference done responsibly, the Email Verifier & Enricher guesses the pattern AND verifies deliverability before you ever send — that's its enrichment mode at $0.012 per found record.
Is scraping contact data from websites legal?+
The Actor reads what websites publicly publish — the same pages any visitor sees. Scraping publicly accessible data is generally legal in most jurisdictions (notably upheld in hiQ v. LinkedIn in the US). Your obligations sit on the outreach side: CAN-SPAM, GDPR, and honoring unsubscribes. See the data-runner.dev disclaimer for the full policy.
Can it handle JavaScript-heavy sites?+

Yes. Every site is fetched over plain HTTP first, and pages that come back nearly empty because their content loads with JavaScript are reopened in a real Chromium browser (Playwright), so contact info injected client-side renders before extraction runs. Sites that work without JavaScript skip the browser and finish faster.

Can I pipe the output into my CRM or automation stack?+
Yes. Apify exports JSON, CSV, and Excel out of the box and exposes a REST API plus webhooks. Common patterns: push leads to Google Sheets via n8n or Zapier, sync to HubSpot or GoHighLevel, or chain with the catalog's Email Verifier before your sequencer. We also build custom n8n workflows if you want the integration done for you.
ready to run it

run the website email extractor

$0.006 per site with emails, $0 for the rest. 4 pages per site, bio-links resolved. your list, enriched.