Contact Info Scraper — Emails, Phones & Social Links
Pricing
from $12.00 / 1,000 site scrapeds
Contact Info Scraper — Emails, Phones & Social Links
Extract public emails, phone numbers, addresses, contact pages, and social links from websites with lead-quality scoring and deduped exports.
Pricing
from $12.00 / 1,000 site scrapeds
Rating
0.0
(0)
Developer
junipr
Maintained by CommunityActor stats
0
Bookmarked
35
Total users
0
Monthly active users
4 hours ago
Last modified
Categories
Share
What does Contact Info Scraper — Emails, Phones & Social Links do?
Contact Info Scraper visits public website pages and extracts contact information present in the returned HTML. It finds email addresses, phone numbers, physical addresses, and social media profile links (LinkedIn, Twitter/X, Facebook, Instagram, YouTube, GitHub). Optional link following prioritizes contact-heavy pages such as /contact, /about, /team, /impressum, and /support within the configured page cap.
Give it a list of website URLs and it returns one structured result per successfully crawled domain with deduplicated contact details, crawl counts, and a deterministic lead-quality score.
Features
- Multi-signal extraction — Emails, phone numbers, physical addresses, and social media profiles in one run
- Smart crawling — Automatically prioritizes contact, about, team, and support pages before general internal links
- Six social platforms — Detects LinkedIn, Twitter/X, Facebook, Instagram, YouTube, and GitHub profiles
- Bounded batch processing — Process up to 100 input websites with explicit site and page caps
- Per-domain deduplication — All results are deduplicated per domain so you get clean, unique data
- Configurable extraction — Toggle each extraction type on or off (emails, phones, socials, addresses)
- Adjustable crawl depth — Control how many pages per domain to crawl (1-10)
- Contact page detection — Reports the URL of the contact or about page if one was found
- Polite crawling — Configurable request delay and concurrency to respect target servers
- Lead-quality score — Rank each result from 0-100 using the public contact signals found
- Optional proxy support — Use an Apify proxy configuration when a target requires it
Input Configuration
{"urls": ["https://example.com"],"maxSites": 1,"maxPages": 1,"followLinks": false,"priorityPages": ["/contact", "/about", "/team", "/impressum", "/support"],"extractEmails": true,"extractPhones": true,"extractSocials": true,"extractAddresses": true,"maxConcurrency": 1,"requestDelay": 1000,"proxyConfiguration": { "useApifyProxy": false }}
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | string[] | ["https://crawlee.dev"] | Website URLs to scrape for contact information |
maxSites | integer | 1 | Maximum input websites to process (1-100) |
maxPages | integer | 1 | Maximum pages to crawl per domain (1-10) |
followLinks | boolean | false | Follow internal links to discover more pages |
priorityPages | string[] | ["/contact", "/about", ...] | URL paths to crawl first |
extractEmails | boolean | true | Extract email addresses |
extractPhones | boolean | true | Extract phone numbers |
extractSocials | boolean | true | Extract social media profile links |
extractAddresses | boolean | true | Extract physical addresses |
maxConcurrency | integer | 1 | Maximum concurrent requests (1-5) |
requestDelay | integer | 1000 | Delay between requests in milliseconds |
proxyConfiguration | object | Direct requests | Optional Apify proxy settings for web requests |
Output Format
Each domain produces one result object:
{"url": "https://example.com","emails": ["info@example.com", "sales@example.com"],"phones": ["+1-555-123-4567"],"socialProfiles": {"linkedin": "https://linkedin.com/company/example","twitter": "https://twitter.com/example","facebook": "https://facebook.com/example","instagram": null,"youtube": null,"github": "https://github.com/example"},"addresses": ["123 Main St, San Francisco, CA 94102"],"contactPageUrl": "https://example.com/contact","pagesCrawled": 1,"contactPointCount": 8,"leadQualityScore": 90,"scrapedAt": "2026-03-11T12:00:00.000Z"}
Usage Examples / Use Cases
- Lead generation — Build prospect lists by scraping contact info from company websites in your target market
- Sales prospecting — Enrich a list of company domains with emails, phone numbers, and LinkedIn pages for outreach
- Competitor research — Discover competitors' social media presence and contact channels across platforms
- Business directory building — Aggregate contact details from hundreds of local business websites
- Due diligence — Verify a company's public contact information and online presence before partnerships
- Recruitment — Find team pages and contact emails for companies you want to recruit from or sell to
Ready-to-run public tasks
- Extract Crawlee public contact signals — one page with email, phone, social, and address fields.
- Find Apify public social links — one page focused on public company contact channels.
- Inventory contact channels — one page with address extraction intentionally disabled.
Every task caps the run at one site and one page, disables link following, and uses concurrency one.
Pricing
This actor uses Pay-Per-Event pricing with the site-scraped event at $12.00 per 1,000 websites scraped ($0.012 per site) in the live Store pricing entry.
Apify platform usage is passed through according to the live Store pricing entry because a single website can require multiple page fetches. The safe default is one site, one page, direct requests, and followLinks=false; increase those settings only when the additional crawl cost is intentional.
Proxy Requirements
The actor uses direct requests by default. A target can still reject datacenter traffic, require authentication, or depend on JavaScript rendering. Configure an appropriate proxy when you are authorized to access a target and direct requests fail. If proxy creation is unavailable, the actor records a key-value-store diagnostic and attempts the bounded request directly.
FAQ
How many websites can I scrape in one run?
The actor processes at most 100 websites per run. Use maxSites to set a lower cap; excess input URLs are ignored. Each accepted site is also bounded by maxPages.
What if a website has no contact information?
After a page is crawled successfully, the actor can return a result with empty contact arrays and a score of zero. Failed sites are not emitted as paid dataset rows; their request errors are stored as diagnostics in the key-value store.
Does it extract emails from JavaScript-rendered pages?
The actor uses Cheerio (server-side HTML parsing), which does not execute JavaScript. Emails embedded directly in HTML and mailto: links can be extracted. Contact details rendered only by client-side scripts may be missed.
How does priority page crawling work?
Before following general internal links, the actor automatically queues requests for common contact page paths (/contact, /about, /team, /impressum, /support) on each domain. These pages are crawled first because they are most likely to contain contact information, reducing the number of pages needed to find results.
Can I scrape only emails without phone numbers?
Yes. Set extractPhones, extractSocials, and extractAddresses to false and only extractEmails to true. The actor will still crawl the same pages but only extract and return email addresses.
Related Actors
- Email Validator — Validate extracted emails with MX, SMTP, and disposable domain checks
- Disposable Email Checker — Check if emails are from disposable/temporary providers
- Domain WHOIS Lookup — Get WHOIS and DNS data for any domain
- Yellow Pages Scraper — Scrape business listings with contact details from Yellow Pages
- Bluesky Scraper — Scrape social media posts and profiles from Bluesky