Website Lead Extractor - Emails, Phones & Social Profiles avatar

Website Lead Extractor - Emails, Phones & Social Profiles

Pricing

Pay per usage

Go to Apify Store
Website Lead Extractor - Emails, Phones & Social Profiles

Website Lead Extractor - Emails, Phones & Social Profiles

Crawl a company website and extract publicly listed emails, phone numbers, and social profile links (LinkedIn, X/Twitter, Facebook, Instagram, GitHub) as clean JSON.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Timothy Kelvin

Timothy Kelvin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Website Lead Extractor — Emails, Phones & Social Profiles

Built with Crawlee Runs on Apify

Give it a company website. It crawls the site (within the same domain, up to a configurable depth) and returns every publicly listed email address, phone number, and social profile link (LinkedIn, X/Twitter, Facebook, Instagram, GitHub) it finds, as clean JSON.

Built for sales teams, recruiters, and researchers who need contact info from a list of company sites without manually opening each "Contact" or "About" page.

Status: live on Apify, pending public Store listing approval. Code and README here are the source of truth in the meantime.

Run it

Via the Apify API (once the Store listing is approved, this works for anyone with an Apify account):

curl "https://api.apify.com/v2/acts/website-lead-extractor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://example.com" }],
"maxDepth": 1,
"maxPagesPerDomain": 20
}'

Or clone this repo and run it locally with the Apify CLI:

git clone https://github.com/timmKal01/website-lead-extractor.git
cd website-lead-extractor
npm install
apify run

Input

FieldTypeDescription
startUrlsarray of URLsWebsite(s) to scan.
maxDepthinteger (default 1)How many link-hops from each start URL to follow within the same domain, e.g. to reach a Contact page.
maxPagesPerDomaininteger (default 20)Safety cap on pages visited per domain.
{
"startUrls": [{ "url": "https://example.com" }],
"maxDepth": 1,
"maxPagesPerDomain": 20
}

Output

One record per page where contact info was found:

{
"url": "https://example.com/contact",
"domain": "example.com",
"emails": ["hello@example.com"],
"phones": ["+1 415-555-0132"],
"socialProfiles": {
"linkedin": "https://linkedin.com/company/example",
"twitter": "https://x.com/example"
}
}

How it works

Plain HTTP crawl via Crawlee's CheerioCrawler — no headless browser, no proxy. It reads only what's already rendered in the raw HTML response, so it works on static/server-rendered sites; heavily JS-rendered sites may need a browser-based crawler instead.

Notes

  • Only extracts information the site itself publishes publicly (e.g. a "Contact us" page) — it does not access anything gated behind a login.
  • Respects a per-domain page cap so it won't run away on large sites.