Contact Details Extractor — Pay Only For Results avatar

Contact Details Extractor — Pay Only For Results

Pricing

$6.00 / 1,000 contact row with verified data

Go to Apify Store
Contact Details Extractor — Pay Only For Results

Contact Details Extractor — Pay Only For Results

Extract emails, phone numbers, and social profiles from any list of websites. Pay only for verified results: an MX-checked email, a valid phone, or live social profiles. Empty rows are always free. Polite crawling that auto-discovers contact and about pages.

Pricing

$6.00 / 1,000 contact row with verified data

Rating

0.0

(0)

Developer

Resultsmith

Resultsmith

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Give it a list of website URLs and get back clean, validated contact details: emails, phone numbers, and social profile links — one row per website.

The pricing is different from every other contact scraper: you are only billed for rows that contain at least one verified contact field. Empty rows are free. If we can't find anything verifiable on a site, that result costs you $0 — you never pay for dead URLs, parked domains, or sites that block crawlers.

What counts as a verified (billable) row

A row is billed only if it contains at least one of:

SignalValidation applied
Email addressSyntax check and live MX record on the domain (the domain can actually receive mail)
Phone numberParses as a valid number for its region (Google's libphonenumber)
Social profiles2 or more distinct platforms (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok)

Everything else is delivered free — including partial data that didn't pass validation, so you can still see what was found.

Output

One row per input URL:

{
"url": "https://example.com",
"emails": [{ "value": "info@example.com", "source": "contact-page", "mxValid": true }],
"phones": [{ "value": "+14155551234", "formatted": "(415) 555-1234", "valid": true }],
"socials": {
"linkedin": "https://linkedin.com/company/example",
"x": null, "facebook": "https://facebook.com/example",
"instagram": null, "youtube": null, "tiktok": null
},
"billable": true,
"confidence": "high",
"pagesCrawled": 4,
"crawlMode": "cheerio"
}

The billable field tells you exactly which rows you paid for. confidence is high when 2+ verified signal types are present, medium for 1, low/none otherwise.

Input

FieldDefaultWhat it does
startUrlsList of website URLs. One output row per URL.
maxPagesPerDomain5How many pages to crawl per site (1–20). Contact, about, and legal pages are found and prioritized automatically.
includeSocialstrueAlso extract social profile links.
phoneRegionHintUSTwo-letter country code used to validate phone numbers written without an international prefix.
useBrowserFallbacktrueIf static crawling finds nothing, retry the site with a real headless browser (helps with JavaScript-heavy sites).

How it works

  1. The homepage of each site is fetched and scanned.
  2. Links to contact, about, imprint/legal, and support pages are scored and crawled first — the page budget is never wasted on blog posts or product pages.
  3. Contact data is extracted from visible text, mailto:/tel: links, and JSON-LD structured data that businesses publish about themselves.
  4. Emails get an MX lookup, phones are validated per region, social links are normalized (share/intent links are filtered out).
  5. Crawling stops early once a site has yielded a full contact set, so runs stay fast and cheap.

Fair crawling & data ethics

  • Only business-published contact information is collected — what companies put on their own contact pages, footers, and structured data. No third-party enrichment, no guessed email patterns, no personal-data lookups.
  • robots.txt is respected, requests are throttled to one at a time per domain, and the crawler identifies itself with a descriptive user agent.

Use with AI agents (MCP)

This Actor is built for autonomous use by AI agents via the Apify MCP server:

  • Bounded, results-based spend — an agent can never burn budget on failed lookups: rows without verified data cost $0, and the Maximum cost per run option hard-caps total spend per run.
  • Limited permissions — the Actor cannot access user data beyond its own run.
  • Machine-readable output — the billable and confidence fields let an agent filter for verified contacts without re-validating anything.

Minimal input an agent needs:

{ "startUrls": [{ "url": "https://example.com" }] }

Frequently asked questions

How do I extract email addresses from a list of websites?

Paste your URLs into startUrls and run. The Actor crawls each site's contact, about, and legal pages, extracts emails from text, mailto: links, and JSON-LD, then MX-validates each address so you only pay for emails whose domain can actually receive mail.

What does it cost to scrape contact details?

$6.00 per 1,000 verified contact rows — and only verified rows count. A row with no MX-valid email, no valid phone, and fewer than 2 social profiles is delivered free. There is no subscription and no per-URL or compute charge.

How is this different from other contact scrapers?

Most scrapers bill per URL processed or per compute-second, so dead domains and bot-walled sites cost as much as hits. Here, billing is gated on validation: if nothing on the row is verified, the row is free.

Can it find phone numbers and social media profiles too?

Yes — phones are validated with libphonenumber against your phoneRegionHint, and social links are recognized across LinkedIn, X/Twitter, Facebook, Instagram, YouTube, and TikTok (share/intent links are filtered out).

Good to know

  • Sites that block datacenter traffic (some large retail chains) may return an empty row. You are not charged for those.
  • Use the Maximum cost per run option in the run settings to hard-cap spending — the Actor stops charging the moment your limit is reached.
  • Found a problem? Open an issue on this page — issues are checked daily.