Contact Info Scraper Lite avatar

Contact Info Scraper Lite

Pricing

from $8.00 / 1,000 page scrapeds

Go to Apify Store
Contact Info Scraper Lite

Contact Info Scraper Lite

Crawls websites and extracts contact details: emails, phones, social links.

Pricing

from $8.00 / 1,000 page scrapeds

Rating

0.0

(0)

Developer

Long Li

Long Li

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Contact Info Scraper Lite 📇

Extract emails, phone numbers and social media links from any website. Just enter a URL — this free contact info scraper crawls the whole site for you and returns a clean, deduplicated list of email addresses, phone numbers and social profiles (LinkedIn, X/Twitter, Instagram and 10 more). Built for lead generation, sales prospecting and building business directories.

Looking for an email finder or email extractor that also grabs phones and socials? This Actor does all three in one run.

🔎 What it finds

  • Emails — from page text and mailto: links (asset-like false positives such as logo@2x.png and placeholder domains like example.com are filtered out automatically)
  • Phone numbers
    • phones: high-confidence numbers in international format (leading +) and tel: links
    • phonesUncertain: local-format candidates like (555) 123-4567 — verify before use
  • 13 social platforms — LinkedIn, X (Twitter), Instagram, Facebook, YouTube, TikTok, Pinterest, Discord, Snapchat, Threads, Telegram, Reddit, WhatsApp

Results are merged per start URL (one row per site) or delivered per page — your choice.

📥 Input

FieldTypeDefaultDescription
startUrlsArrayrequiredURLs where the crawl starts. The Actor follows links from these pages.
maxRequestsInteger100Total page limit across all start URLs.
maxRequestsPerStartUrlInteger20Page limit per start URL (including the start page).
maxDepthInteger3How many clicks away from the start URL to follow. 0 = only the start page, empty = unlimited.
sameDomainBooleantrueFollow only links on the same origin. External links are still scanned for social profiles.
mergeContactsBooleantrueMerge all pages of one start URL into a single result item. false = one item per page.
maxConcurrencyInteger10Pages opened in parallel.
proxyConfigObject—Apify Proxy or custom proxies. Residential proxy is recommended for sites that block datacenter traffic.

Example input

{
"startUrls": [{ "url": "https://example.com" }],
"maxRequests": 50,
"maxRequestsPerStartUrl": 20,
"maxDepth": 2,
"sameDomain": true,
"mergeContacts": true,
"proxyConfig": { "useApifyProxy": true }
}

📤 Output

Results are stored in the default dataset (export to JSON, CSV, Excel, HTML, XML, RSS). Each item:

{
"originalStartUrl": "https://example.com",
"domain": "example.com",
"scrapedUrls": ["https://example.com/", "https://example.com/contact"],
"emails": ["hello@example.com", "sales@example.com"],
"phones": ["+420777123456"],
"phonesUncertain": ["(555) 123-4567"],
"linkedIns": ["https://www.linkedin.com/company/example"],
"twitters": ["https://x.com/example"],
"instagrams": ["https://www.instagram.com/example"],
"facebooks": ["https://www.facebook.com/example"],
"youtubes": ["https://www.youtube.com/@example"],
"tiktoks": ["https://www.tiktok.com/@example"],
"pinterests": [],
"discords": [],
"snapchats": [],
"threads": [],
"telegrams": [],
"reddits": [],
"whatsapps": ["https://wa.me/420777123456"]
}

⚙️ How it works

  1. Loads each start URL with a fast HTTP client (Cheerio — no browser needed)
  2. Mines contacts from visible text, mailto: / tel: links and every anchor href
  3. <script>, <style>, <svg> and similar noisy elements are stripped before extraction
  4. Follows internal links up to your depth / page limits
  5. Deduplicates emails exactly, phone numbers by their digit signature (so +48 123 456 789 and +48123456789 count once)

💡 Tips & troubleshooting

  • No emails found? The site may render contacts with JavaScript (SPA) or hide them behind a contact form. Try a specific page like /contact directly as a start URL.
  • Getting blocked (403/429)? Enable Apify Proxy in proxyConfig; residential works best for protected sites.
  • Too many irrelevant pages? Lower maxDepth to 1 and point startUrls directly at contact/about pages.
  • Same number in different formats? Already handled — phones are deduplicated by digits.

❓ FAQ

How do I extract contact information from a website?

Enter the website URL in the startUrls field and click Start. The Actor crawls the site (including contact, about and footer pages), extracts every email address, phone number and social media link it can find, deduplicates them, and gives you one consolidated row per website. You can then export the results as Excel, CSV or JSON.

How do I find email addresses from any website for free?

Use the startUrls field with the target website. Your Apify account includes free monthly platform credits, which is enough to test and run small crawls at no cost. Point the scraper at specific pages like https://example.com/contact to spend fewer credits.

Does it work on JavaScript-heavy (SPA) websites?

The Actor fetches raw HTML without executing JavaScript, which makes it fast and cheap. Contacts rendered client-side by JavaScript won't be visible. If a site loads contacts dynamically, try submitting a deeper URL (e.g. /contact) that returns server-rendered HTML, or use a browser-based scraper.

Why does the output contain phonesUncertain?

Numbers without an international prefix (like (555) 123-4567) could be phone numbers, dates, or order IDs. The Actor puts them in a separate phonesUncertain array so you can review them, while phones only contains high-confidence international-format numbers and tel: links.

Can I export the results to Excel or CSV?

Yes. Results land in a dataset that Apify exports to JSON, JSONL, CSV, XLSX, HTML, XML and RSS — from the Console with one click, or via the API (GET /v2/datasets/{id}/items?format=xlsx).

Can I run it from my app via API?

Yes. Start a run with POST https://api.apify.com/v2/acts/liver0914~contact-info-scraper-lite/run-sync-get-dataset-items with your input and API token, and the scraped contacts come back in the HTTP response. JavaScript and Python clients (apify-client) work too.

Generally yes for publicly available business contact data, but check the local laws that apply to you (GDPR in the EU has extra rules for personal data) and the website's terms. Only use the data for legitimate purposes.

💰 Pricing

The Actor uses pay-per-event pricing: you pay a small fee per scraped page (fractions of a cent), so crawling 10 pages costs 10× one page and nothing when it doesn't run. Platform usage (compute) is included in the event price.

🛠️ Local development & testing

npm install
npm test # boots a local fixture site and runs 14 end-to-end assertions

Manual run: place INPUT.json in storage/key_value_stores/default/ and run CRAWLEE_STORAGE_DIR=./storage node src/main.js.

Source: [GitHub-style project in the Actor's Source tab] — MIT-friendly, feel free to fork.

  • Need HTML from a Cloudflare-protected site first? Cloudflare Bypasser Lite fetches the page, this actor mines the contacts.
  • Need developer leads? GitHub Email Scraper Lite pulls contributor emails straight from commit history.
  • Need contact details from Google Maps places or LinkedIn profiles? See the Contact & Leads category on Apify Store for specialized Actors.