Contact Info Scraper Pro avatar

Contact Info Scraper Pro

Pricing

Pay per usage

Go to Apify Store
Contact Info Scraper Pro

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

andrew

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

9 days ago

Last modified

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:

MetricContact Info Scraper ProMarket leader
Total time (3 sites)9 seconds57 seconds
Emails found (basecamp.com)32
Emails found (ahrefs.com)22
Social profiles (ahrefs.com)277

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) or generic (info@, support@, noreply@). Use personalEmailsOnly to get only real person addresses.
  • Confidence scoring — Every contact scored high, medium, or low based on extraction source. Filter by your own quality threshold.
  • Skip empty results — Enable skipEmpty to 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 modesper-domain (merged, default) or per-page (one row per page, legacy compatible).
  • All export formats — JSON, CSV, Excel, XML, HTML via Apify dataset.

Input parameters

ParameterTypeDefaultDescription
startUrlsarrayrequiredList of URLs to scrape. Supports direct URLs and files.
maxRequestsinteger100Maximum total pages to crawl across all start URLs.
maxRequestsPerStartUrlinteger2Maximum pages to crawl per start URL domain.
maxDepthinteger2Maximum link depth from the start URL.
sameDomainbooleantrueOnly follow links within the same domain.
considerChildFramesbooleantrueExtract contacts from iframes on the page.
outputModestringper-domainOutput format: per-domain (one record per company) or per-page (one record per page).
minConfidencestringlowMinimum confidence level for contacts to be included: high, medium, or low.
skipEmptybooleanfalseSkip domains that have no contacts found. Keeps your output clean — only rows with actual data.
personalEmailsOnlybooleanfalseOnly include personal emails (john@company.com). Filters out generic addresses like info@, support@, noreply@.
proxyConfigobjectApify ProxyProxy 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.

VolumeCost
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.txt by 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