Contact Details Scraper - Emails (MX Verified), Phones, Socials
Pricing
$0.80 / 1,000 domain with contacts founds
Contact Details Scraper - Emails (MX Verified), Phones, Socials
Extract business contact details from websites: emails with built-in DNS MX verification and role classification, validated E.164 phone numbers, WhatsApp links, 15 social media platforms, and Schema.org company info. Strictly honors robots.txt with transparent status reasons for every domain.
Pricing
$0.80 / 1,000 domain with contacts founds
Rating
0.0
(0)
Developer
Radosław Szal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
📩 Website Contact Info Scraper — Emails (MX Verified), Phones & 15 Socials
The Website Contact Info Scraper is a high-speed, cost-effective business lead scraper and contact details scraper designed to extract business emails with built-in DNS MX verification (website email scraper), validated E.164 phone numbers (phone number extractor), WhatsApp links, 15 platforms of social profiles (social media links extractor), and Schema.org company metadata (domain contact extractor) directly from corporate websites.
What It Does
Extracting verified business contacts from corporate websites manually is tedious and expensive. This actor automates the entire discovery workflow:
- Smart Subpage Discovery: Crawls the homepage and automatically navigates to high-priority contact subpages (
/contact,/kontakt,/about,/team,/support,/impressum,/legal). - Email Extraction & Built-in Verification: Finds emails from
mailto:links, Cloudflare obfuscation (data-cfemail), and obfuscated text (name [at] domain.com). Automatically runs live DNS MX checks and classifies each mailbox (isRole,isFreeMail,isDisposable,isPersonal). - Validated Phone Numbers (E.164): Extracts international and national phone numbers from
tel:links, text, and Schema.org JSON-LD. Normalizes numbers to standard E.164 format (with automatic country deduction, e.g.,.pl→PL), while strictly rejecting false positives like tax IDs (NIP/VAT), dates, and software version numbers. - WhatsApp Integration: Captures direct WhatsApp chat links (
wa.me/...,api.whatsapp.com/send?phone=...). - 15 Social Media Platforms: Identifies and normalizes clean profile links across 15 platforms (LinkedIn, Facebook, Instagram, X/Twitter, YouTube, TikTok, Pinterest, Discord, Telegram, Threads, Snapchat, Reddit, GitHub, Linktree), automatically stripping tracking query parameters (
utm_*,fbclid,igshid). - Linktree Traversal: Optionally follows public
linktr.ee/<profile>links to discover external contact channels. - Schema.org Structured Data: Extracts structured corporate data from JSON-LD (
Organization,LocalBusiness) including official company name, description, address, telephone, and business hours. - Transparent Status Reporting: Reports an explicit status and reason for every domain (
ok,no_contacts,blocked_by_robots,robots_unreachable,unreachable).
Why Us — Advantages Over Market Alternatives
Compared to standard contact scrapers on the market, our actor provides five tangible advantages:
- Pay Per Domain, Not Per Subpage: Typical scrapers charge per visited page (costing ~$3.15 per 1,000 domains at an average of 3 pages per domain). We charge a flat fee per successful domain ($0.0008), regardless of whether 1, 3, or 5 pages were crawled to find the contact details.
- Built-in DNS MX Verification at No Extra Cost: While others charge extra for email verification add-ons, live DNS MX validation and role/disposable/free-mail categorization are included in the base price.
- Strict E.164 Phone Validation: Phone numbers are validated against international standards and contextual keywords, eliminating junk records filled with tax IDs, invoice numbers, or software build versions.
- Priority-First HTTP Crawling: Crawls static and server-rendered HTML using lightweight, high-performance HTTP requests, prioritizing contact and about pages for maximum speed and minimal resource consumption.
- Deduplicated CRM-Ready Records: Returns exactly one unified, clean JSON record per domain, perfectly formatted for immediate import into HubSpot, Pipedrive, Salesforce, Make, n8n, Clay, or Google Sheets.
Input
Configure the actor via the Apify Console or API using JSON:
{"urls": ["gov.pl","https://ovh.pl","https://apify.com/contact"],"maxPagesPerDomain": 5,"followLinktree": true,"verifyEmailsMx": true,"defaultCountryCode": "PL"}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
urls | array or string | (required) | List of domain names (example.com) or full URLs (https://example.com/contact). Normalized automatically. |
maxPagesPerDomain | integer | 5 | Maximum number of pages to crawl per domain (homepage + priority contact subpages). Capped at 10. |
followLinktree | boolean | true | When true, fetches public Linktree profiles discovered on the website to collect further contact links. |
verifyEmailsMx | boolean | true | When true, performs live DNS MX record checks and classifies role/disposable/freemail addresses. |
defaultCountryCode | string | null | Optional ISO 3166-1 alpha-2 country code (e.g., PL, US, DE) for phone normalization. When omitted, inferred from domain TLD (e.g., .pl → PL). |
Output
Every processed domain outputs a single consolidated record. Here is an example:
{"domain": "gov.pl","startUrl": "https://gov.pl","scrapedPagesCount": 2,"status": "ok","statusReason": "Found 2 email(s), 3 phone(s), 0 WhatsApp(s), and 6 social link(s) across 2 page(s).","emails": ["kontakt@gov.pl","media@gov.pl"],"emailsVerified": [{"email": "kontakt@gov.pl","hasValidMx": true,"isRole": true,"isDisposable": false,"isFreeMail": false,"isPersonal": false},{"email": "media@gov.pl","hasValidMx": true,"isRole": true,"isDisposable": false,"isFreeMail": false,"isPersonal": false}],"phones": ["+48221234567","+48223100200","+48601234567"],"whatsapps": [],"socials": {"facebook": ["https://www.facebook.com/KancelariaPremiera"],"x": ["https://x.com/govpl"],"linkedin": ["https://www.linkedin.com/company/ministerstwo-cyfryzacji"],"instagram": ["https://www.instagram.com/govpl"],"youtube": ["https://www.youtube.com/@KancelariaPremiera"],"tiktok": ["https://www.tiktok.com/@govpl"]},"companyInfo": {"name": "Serwis Rzeczypospolitej Polskiej","description": "Oficjalne informacje rządowe, usługi publiczne, wnioski i formularze.","telephone": "+48 22 123 45 67","email": "kontakt@gov.pl","address": "Al. Ujazdowskie 1/3, 00-583 Warszawa, Polska","openingHours": null,"sameAs": ["https://www.facebook.com/KancelariaPremiera","https://x.com/govpl"]}}
Pricing
We believe in fair, predictable pricing:
- Pay Per Event (PPE): $0.0008 per domain delivered with verified contacts ($0.80 per 1,000 domains).
- Zero-Waste Guarantee: Domains where no contacts could be found (
no_contacts) or domains blocked byrobots.txtare logged with the reason in your dataset at no charge. - Market Comparison: Standard market solutions charge around $1.05 per 1,000 pages (amounting to ~$3.15 per 1,000 domains when crawling 3 pages per site) or $2.00+ flat per 1,000 domains. Our solution offers up to 75% cost savings with superior data quality and email verification included.
Frequently Asked Questions (FAQ)
1. Am I charged if a domain has no contacts or is blocked by robots.txt?
No. You are charged only for domains where the status is ok (at least one email, phone, WhatsApp, or social profile was discovered). Unreachable domains, empty sites (no_contacts), or sites restricted by robots.txt are included in your dataset with a clear statusReason, but are completely free.
2. How does built-in email verification work?
For every extracted email address, the scraper performs live DNS MX lookups to confirm that the receiving mail server is active and configured. It also flags role addresses (info@, contact@, sales@), disposable temporary inboxes, and free email providers (gmail.com, wp.pl, yahoo.com), making list segmentation effortless.
3. How does the scraper handle phone numbers and country codes?
Phone numbers are normalized to standard international E.164 format (e.g., +48..., +1...). If a national number is written without a country code, the scraper uses defaultCountryCode or automatically deduces the country from the domain TLD (for instance, .pl domains default to Poland +48).
4. Which social media platforms are detected?
The scraper extracts and normalizes profiles from 15 major platforms: LinkedIn, Facebook, Instagram, X (Twitter), YouTube, TikTok, Pinterest, Discord, Telegram, Threads, Snapchat, Reddit, GitHub, and Linktree. Share buttons and generic links (facebook.com/sharer, twitter.com/intent) are automatically filtered out.
5. What subpages are crawled and how are they selected?
The actor first inspects the homepage. If contacts are incomplete, it evaluates navigation menus, footers, and internal links using prioritized scoring (contact pages first, followed by imprint/legal, customer support, and about/team pages) up to your maxPagesPerDomain limit.
Legality & Compliance
- Public Data Only: This scraper gathers strictly publicly accessible business contact information displayed on company websites, contact forms, and public footers.
- Strict robots.txt Adherence: The actor automatically fetches and honors the
robots.txtfile of every host (including crawl delays). Any path disallowed byrobots.txtis skipped without scraping. - No Circumvention of Controls: The actor does not attempt to bypass paywalls, captchas, or login screens (returning explicit status codes instead).
- GDPR & ePrivacy Responsibility: Generic business email addresses (
info@company.com,sales@company.com) represent corporate contact details. Personal business addresses (firstname.lastname@company.com) are flagged viaisPersonalandisRole. Users of this actor are responsible for ensuring that their outreach complies with applicable data protection regulations (e.g., GDPR, ePrivacy Directive, CAN-SPAM).
Feedback & Reviews
If this actor saved you time and helped your lead generation workflow, please consider leaving a ⭐️⭐️⭐️⭐️⭐️ review on the Apify Store. Your feedback helps us continually improve and support new features!