Website Contact Page Email & Phone Crawler
Pricing
from $0.49 / 1,000 results
Website Contact Page Email & Phone Crawler
Crawl a website's contact, about and team pages and collect its public emails, phone numbers, and social media profile links in one normalized record per site.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Finding a company's contact details usually means hunting through a homepage, an About page, and a Contact page by hand. This actor does that hunting for you: give it a list of websites and it crawls each one, visiting contact, about, team and imprint-style pages first, and returns the public emails, phone numbers, and social profile links it finds in a single record per site.
What this actor does
- Starts at each input URL and follows links on the same host name, up to a page limit you set
- Queues links whose address contains words like
contact,about,team,kontakt,contacto,imprintorimpressumahead of other internal links - Collects email addresses and phone numbers from the page source and from
mailto:/tel:links - Keeps the first profile link it sees per social platform (Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok, GitHub, Pinterest)
- Skips placeholder emails, noreply addresses, image/file-name lookalikes and social share/intent links
contactPageUrlis omitted when no contact page is found;emails,phonesandsocialLinksare always present and can be empty lists/objects
Output per website
type— alwayswebsite_contacts(missing on invalid-URL rows)websiteUrl— the crawled URL, withhttps://added when you left the scheme outemails— sorted, lowercase list of unique email addresses found (may be empty)phones— sorted list of unique phone numbers, as written on the site (may be empty)socialLinks— object keyed byfacebook,instagram,linkedin,twitter,youtube,tiktok,github,pinterestwith the first profile URL found for each (may be empty)contactPageUrl— the first internal link whose address contains "contact", when one existspagesCrawled— number of pages successfully fetched for this sitecrawledAt— ISO 8601 timestamp of when the crawl finishederror— only on failed sites:"Could not fetch any pages from this URL"when nothing could be fetched, or"invalid URL"when the input can't be read as a web address. These rows still carrywebsiteUrl,pagesCrawled: 0,crawledAtand emptyemails,phonesandsocialLinks
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | – | Websites to scan. Required. Duplicates are skipped; https:// is added when missing. |
maxPagesPerSite | integer | 20 | Maximum pages to fetch per site (1–200). |
maxConcurrency | integer | 5 | Pages fetched in parallel per site (1–20). Sites themselves are processed one after another. |
requestTimeoutSecs | integer | 15 | Per-page request timeout, in seconds (5–60). |
useProxy | boolean | false | Route requests through a residential proxy, for sites that refuse direct requests. |
smartPrioritise | boolean | true | Also try the common paths /contact, /contact-us, /about and /about-us even when the homepage doesn't link to them. Contact-style links found on the page are queued first either way. |
Example: scan a single company site
{"urls": ["https://apify.com"],"maxPagesPerSite": 20}
Example: broader crawl through a proxy
{"urls": ["https://example-business.com"],"maxPagesPerSite": 50,"useProxy": true}
Example: quick pass over several sites
{"urls": ["https://company-a.com", "https://company-b.com", "company-c.com"],"maxPagesPerSite": 5,"smartPrioritise": true}
Use cases
- Sales outreach — turn a list of target company websites into emails and phone numbers to contact
- Lead enrichment — fill in missing email, phone, or social links for existing company records
- Partnership scouting — find the right contact page and social presence before reaching out
- Directory building — seed a business directory with the contact details each company publishes on its own site
- Social presence checks — see which social platforms a company links to from its website
FAQ
Do I need a proxy to use this actor?
No, leave useProxy off by default. Turn it on only for sites that refuse direct requests.
Does this render JavaScript-heavy pages?
No. It reads the HTML each page returns, including mailto: and tel: links. Content that only appears after client-side rendering won't be captured.
Why are some emails excluded?
Placeholder domains (like example.com or yourdomain.com), noreply-style addresses, strings that end in an image or font file extension, and addresses on a few large tech and asset domains (such as google.com, apple.com, microsoft.com, sentry.io) are dropped, because they usually come from embedded code rather than the site's own contacts.
Which phone numbers are picked up?
Every tel: link, plus numbers in the page that are written in international format with a leading +. Numbers need 7–20 digits. They are kept as written on the site, so the same number in two formats can appear twice.
Why is socialLinks missing a platform I know the company uses?
Only links present in the crawled pages' HTML are included. Share buttons, intent links and generic platform pages are skipped, and only the first link per platform is kept.
Why did a site return fewer pages than maxPagesPerSite?
The actor only follows links on the same host name as the input URL (www.example.com and example.com count as different hosts) and stops when it runs out of new links. Pages that don't return HTML or answer with an error are not counted.
Is this affiliated with any of the social platforms it checks? No. This is an independent, third-party actor that reads publicly available website content; it isn't affiliated with Facebook, Instagram, LinkedIn, or any other platform it links to.