Contact Info Scraper Pro
Pricing
Pay per usage
Contact Info Scraper Pro
Extract emails, phones & socials from any website. Validated data, one clean record per company.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
andrew
Actor stats
0
Bookmarked
2
Total users
0
Monthly active users
9 days ago
Last modified
Categories
Share
Extract emails, phone numbers, and social media profiles from any website. 6x faster than alternatives. Validated data, one clean record per company.
What it does
Contact Info Scraper Pro crawls websites and extracts contact information — then validates, deduplicates, and merges everything into one clean record per domain.
No more spreadsheets full of duplicate rows and fake phone numbers. You get structured, validated contact data ready for outreach, CRM import, or lead generation.
Benchmarks
Tested head-to-head against the market-leading contact scraper on the same 3 websites:
| Metric | Contact Info Scraper Pro | Market leader |
|---|---|---|
| Total time (3 sites) | 9 seconds | 57 seconds |
| Emails found (basecamp.com) | 3 | 2 |
| Emails found (ahrefs.com) | 2 | 2 |
| Social profiles (ahrefs.com) | 27 | 7 |
6x faster. More contacts found. Cleaner output.
Key features
- Per-domain merge — All contacts from a website consolidated into a single record. One company = one row.
- Phone validation — Every number validated through libphonenumber (Google's phone library). Valid numbers formatted in E.164. Invalid numbers separated into
phonesUncertain. - Email classification — Each email tagged as
personal(john@company.com) orgeneric(info@, support@, noreply@). UsepersonalEmailsOnlyto get only real person addresses. - Confidence scoring — Every contact scored
high,medium, orlowbased on extraction source. Filter by your own quality threshold. - Skip empty results — Enable
skipEmptyto exclude domains with zero contacts from output. Every row in your dataset has actual data. - Smart crawling — Prioritizes /contact, /about, /team, /impressum, and footer links before crawling other pages. Finds contacts where they actually are.
- 11 social platforms — LinkedIn, Twitter/X, Facebook, Instagram, YouTube, TikTok, Telegram, Pinterest, Discord, Snapchat, Threads.
- Hybrid crawler — Lightweight HTTP for simple pages, full Playwright browser for JavaScript-heavy sites. Fast and cost-efficient.
- Two output modes —
per-domain(merged, default) orper-page(one row per page, legacy compatible). - All export formats — JSON, CSV, Excel, XML, HTML via Apify dataset.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | required | List of URLs to scrape. Supports direct URLs and files. |
maxRequests | integer | 100 | Maximum total pages to crawl across all start URLs. |
maxRequestsPerStartUrl | integer | 2 | Maximum pages to crawl per start URL domain. |
maxDepth | integer | 2 | Maximum link depth from the start URL. |
sameDomain | boolean | true | Only follow links within the same domain. |
considerChildFrames | boolean | true | Extract contacts from iframes on the page. |
outputMode | string | per-domain | Output format: per-domain (one record per company) or per-page (one record per page). |
minConfidence | string | low | Minimum confidence level for contacts to be included: high, medium, or low. |
skipEmpty | boolean | false | Skip domains that have no contacts found. Keeps your output clean — only rows with actual data. |
personalEmailsOnly | boolean | false | Only include personal emails (john@company.com). Filters out generic addresses like info@, support@, noreply@. |
proxyConfig | object | Apify Proxy | Proxy configuration. Uses Apify Proxy by default. |
Output format
Per-domain mode (default)
One record per domain with all contacts merged and deduplicated:
{"domain": "example.com","topLevelUrl": "https://example.com","pagesScanned": 8,"emails": [{"value": "john@example.com","type": "personal","confidence": "high","source": "mailto","sourceUrl": "https://example.com/contact"},{"value": "info@example.com","type": "generic","confidence": "high","source": "mailto","sourceUrl": "https://example.com"}],"phones": [{"value": "+12125551234","confidence": "high","source": "tel_link","sourceUrl": "https://example.com/contact"}],"phonesUncertain": [{"value": "212-555-9999","confidence": "low","source": "regex_text","sourceUrl": "https://example.com/about"}],"socialProfiles": {"linkedIns": ["https://linkedin.com/company/example"],"twitters": ["https://twitter.com/example"],"facebooks": ["https://facebook.com/example"],"instagrams": ["https://instagram.com/example"],"youtubes": [],"tiktoks": [],"telegrams": [],"pinterests": [],"discords": [],"snapchats": [],"threads": []},"scrapedAt": "2026-04-01T12:00:00.000Z"}
Per-page mode
One record per crawled page. Compatible with existing contact scraper integrations:
{"url": "https://example.com/contact","domain": "example.com","depth": 1,"referrerUrl": "https://example.com","emails": ["john@example.com", "info@example.com"],"phones": ["+12125551234"],"phonesUncertain": ["212-555-9999"],"linkedIns": ["https://linkedin.com/company/example"],"twitters": ["https://twitter.com/example"],"facebooks": [],"instagrams": [],"youtubes": [],"tiktoks": [],"pinterests": [],"discords": [],"snapchats": [],"telegrams": [],"threads": [],"emailDetails": [{"value": "john@example.com","type": "personal","confidence": "high","source": "mailto"}],"phoneDetails": [{"value": "+12125551234","confidence": "high","source": "tel_link"}]}
Pricing
$1.50 per 1,000 pages scraped. Everything included — no browser surcharge, no proxy extras.
You pay only for pages that are successfully processed. No subscription, no minimum, no hidden fees.
| Volume | Cost |
|---|---|
| 100 pages | $0.15 |
| 1,000 pages | $1.50 |
| 10,000 pages | $15.00 |
| 100,000 pages | $150.00 |
Use cases
Sales outreach
Feed a list of prospect websites and get validated email addresses with personal/generic classification. Focus your outreach on emails that get replies.
Lead generation at scale
Process thousands of company websites in a single run. Get one clean row per company with all contact details merged — ready to import into your CRM or outreach tool.
CRM enrichment
Fill in missing emails, phones, and social profiles for your existing accounts. Export to CSV or Excel and merge with your database.
Market research
Map contact information across an industry or competitor landscape. Use per-domain mode to get a clean company-level dataset.
Recruiting
Extract contact details from company team and career pages. Find direct emails instead of generic HR addresses.
FAQ
How is this different from other contact scrapers?
Most contact scrapers give you one row per page — scrape a 10-page website and you get 10 rows of scattered, duplicated data. Phone numbers are unvalidated regex matches, and there's no way to tell personal emails from generic ones.
Contact Info Scraper Pro merges all contacts per domain, validates every phone number with libphonenumber, classifies emails as personal or generic, and scores confidence on every data point. You get clean data without manual cleanup.
What does the confidence score mean?
- High: Contact found in a
mailto:link,tel:link, or schema.org structured data. Very likely to be real. - Medium: Contact found in visible text near recognizable patterns (e.g., email next to "Contact us"). Probably real.
- Low: Contact matched by regex from general page text. May include false positives.
Use the minConfidence input parameter to filter. Set it to medium or high if you want only reliable data.
Does it handle JavaScript-rendered websites?
Yes. The hybrid crawler automatically detects when a page needs browser rendering (SPAs, dynamic content) and switches to Playwright. Simple HTML pages are processed with a fast HTTP crawler to save time and cost.
Can I use my existing input format from other contact scrapers?
Yes. The input parameters (startUrls, maxDepth, maxRequests, sameDomain, proxyConfig) are compatible with the standard contact scraper interface. Switch to per-page output mode for full backward compatibility.
What about GDPR?
This tool extracts publicly available contact information from websites. It does not store data — all results go to your Apify dataset, which you control. Compliance with data protection regulations (GDPR, CCPA, etc.) is the responsibility of the user. Use scraped data in accordance with applicable laws.
What are the limits?
- Maximum crawl depth and page limits are configurable via input parameters
- The scraper respects
robots.txtby default - It does not bypass CAPTCHAs, Cloudflare, or other anti-bot protections
- It does not extract contacts from PDFs or images
- It does not fill out contact forms
Technical details
- Language: TypeScript
- Framework: Crawlee (Apify SDK v3) with AdaptivePlaywrightCrawler
- Phone validation: google-libphonenumber
- Domain parsing: tldts
- Browser: Playwright (auto-detected when needed)
Changelog
See Apify Store for version history and updates.
License
ISC