Website Contact Extractor: Emails, Phones & Social Links
Pricing
$3.00 / 1,000 website processeds
Website Contact Extractor: Emails, Phones & Social Links
Find emails, phone numbers and social media links on company websites. List of domains in, one row per site out. Fast HTTP crawling, reads Contact/About/Team pages, respects robots.txt. $3 per 1,000 websites.
Pricing
$3.00 / 1,000 website processeds
Rating
0.0
(0)
Developer
ensorcelling _melilot
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Give it a list of company websites. Get back one row per site with the emails, phone numbers and social media profile links found on it. No browser, no proxies to set up, no per-page math: you pay per website.
It reads the home page and then the pages most likely to hold contact details (Contact, About, Team, Impressum/Imprint, Support), so a typical site costs one fixed price however many pages it reads.
What you get for each website
| Field | Example |
|---|---|
domain | acme.com |
status | ok, blocked-by-robots, unreachable, http-error, invalid-url |
emails | ["hello@acme.com", "sales@acme.com"] (addresses on the company's own domain come first) |
phones | ["+442083661177"] (E.164) |
phonesFormatted | ["+44 20 8366 1177"] |
linkedin, facebook, twitter, instagram, youtube, tiktok, github, pinterest | Profile links that appear on the site |
pagesCrawled, pages | How many pages were read, and which |
title | The home page title |
error | Why a site gave nothing, in plain words |
What it finds, and how
- Emails from
mailto:links, plain text, Cloudflare-protected emails, and simple obfuscations likename [at] domain [dot] com. Image file names, tracking IDs and placeholder addresses (you@example.com) are dropped. - Phone numbers from
tel:links and page text. Every number is checked against real numbering plans, so order numbers and dates don't slip in. Set a default country if the site writes local numbers without+. - Social links only if they are linked from the site. Share buttons and tweet intents are ignored. The social networks themselves are never visited.
Input
- Websites: one per line.
acme.com,www.acme.com/aboutandhttps://acme.comall work. Duplicate domains are checked once. - Max pages per website (default 5): the home page plus the best contact-looking pages.
- Find emails / phones / social links: switch off what you don't need.
- Default country: two-letter code for local phone numbers.
- Respect robots.txt (default on).
- Websites at once (default 10).
Pricing
$0.003 per website ($3 per 1,000). Websites that are not readable are not charged: unreachable, HTTP errors, invalid addresses, and sites whose robots.txt says no. A readable site that simply has no contact details on it is charged, since it was crawled. No start fee, no per-page fee.
Good manners and limits
- Public pages only. No logins, no forms, no hidden APIs. The Actor reads the same pages a visitor sees.
- robots.txt is respected by default.
- No JavaScript rendering. Sites that build their pages only in the browser, or that sit behind bot protection (Cloudflare challenges, CAPTCHAs), will often show no contact details or an
http-error. The Actor tells you; it doesn't guess. If you need those, use a browser-based scraper. - No proxy rotation. Requests come from Apify datacenter IPs, so some large sites refuse them.
- Emails are what the site publishes. They aren't verified; use an email verifier before sending bulk mail. You are responsible for using the data in line with the privacy and anti-spam laws that apply to you (GDPR, CAN-SPAM and similar).
Use it from code
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('YOUR_USERNAME/contact-extractor').call({websites: ['apify.com', 'basecamp.com'],maxPagesPerSite: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();