Contact Info Scraper — Emails, Phones & Social Links avatar

Contact Info Scraper — Emails, Phones & Social Links

Pricing

from $12.00 / 1,000 site scrapeds

Go to Apify Store
Contact Info Scraper — Emails, Phones & Social Links

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

junipr

Maintained by Community

Actor stats

0

Bookmarked

35

Total users

0

Monthly active users

4 hours ago

Last modified

Share

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 }
}
ParameterTypeDefaultDescription
urlsstring[]["https://crawlee.dev"]Website URLs to scrape for contact information
maxSitesinteger1Maximum input websites to process (1-100)
maxPagesinteger1Maximum pages to crawl per domain (1-10)
followLinksbooleanfalseFollow internal links to discover more pages
priorityPagesstring[]["/contact", "/about", ...]URL paths to crawl first
extractEmailsbooleantrueExtract email addresses
extractPhonesbooleantrueExtract phone numbers
extractSocialsbooleantrueExtract social media profile links
extractAddressesbooleantrueExtract physical addresses
maxConcurrencyinteger1Maximum concurrent requests (1-5)
requestDelayinteger1000Delay between requests in milliseconds
proxyConfigurationobjectDirect requestsOptional 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.