Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
Contact Details Scraper icon

Contact Details Scraper

Extract public emails, phones, addresses, contact forms and 10 social profiles from any list of websites.

30 runs on Apify $0.0015 per website ($1.5 / 1,000)
Run this in the cloudRun on Apify →

B2B Leads & Contact Data

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust websites, startUrls, maxPagesPerSite (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0015 per website = $1.5 per 1,000

You are charged forWhenPrice
WebsiteOne successfully crawled website with extracted contact details.$0.0015

Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-07-25, and they are what you are actually charged.

Inputs

FieldWhat it doesType
websitesDomain names or full website URLs, one per line. Values without a scheme use HTTPS.array
startUrlsAlternative URL input compatible with Apify request-list sources. You can combine it with Websites.array
maxPagesPerSiteMaximum same-site HTML pages to fetch for each website. Contact, about, team, and legal pages are prioritized.integer
maxConcurrencyHow many websites to process in parallel. Each website is crawled sequentially to stay polite and predictable.integer
requestTimeoutSecsMaximum time for an individual HTTP request, in seconds.integer
maxResponseSizeKbMaximum HTML response body size per page in KiB. Oversized pages are skipped without charging.integer
respectRobotsTxtWhen enabled, pages disallowed for this Actor's user agent are not crawled.boolean
defaultCountryOptional ISO 3166-1 alpha-2 country code used to normalize local phone numbers, for example US, GB, or CA.string

What you get

A structured dataset — each result includes fields like:

domaintitleemailCountphoneCountsocialLinkCountaddressCountcontactFormCountpagesCrawledsiteUrlok_sampledescriptionemailsphonessocialLinksaddressescontactFormsjsonLdOrganizationsjsonLdPeoplesourcePagescrawledPageserrorCodeerror

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in B2B Leads & Contact Data

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Email Verifier iconB2B Leads & Contact Data

Email Verifier

Bulk email verifier at $0.60 per 1,000 addresses plus a $0.001 run-start fee. Syntax, MX, disposable and role-account checks plus optional SMTP probing.

Ready to run — no setup

Shopify Store Leads iconB2B Leads & Contact Data

Shopify Store Leads

Find Shopify stores and pull public emails, phones, socials, currency, country, theme, technologies, products and key pages.

Ready to run — no setup

Thomasnet Suppliers Scraper iconB2B Leads & Contact Data

Thomasnet Suppliers Scraper

Scrape Thomasnet suppliers by product and US location: name, phone, website, address, year founded, employees, sales, ISO certs.

Ready to run — no setup

LinkedIn Profiles Scraper iconB2B Leads & Contact Data

LinkedIn Profiles Scraper

Extract public LinkedIn profile fields from supplied URLs: name, headline, description, image link and public identifier.

Ready to run — no setup

LinkedIn Companies Scraper iconB2B Leads & Contact Data

LinkedIn Companies Scraper

Extract public LinkedIn company data from company URLs: name, description, followers, employee count, HQ, website and logo.

Ready to run — no setup

YouTube Channel Email Scraper iconYouTube & Creator Tools

YouTube Channel Email Scraper

Find business emails publicly listed in YouTube channel descriptions and their linked websites. Built for creator outreach and sponsorships. No login needed.

Ready to run — no setup

See all B2B Leads & Contact Data →

Contact Details Scraper

Extract public contact information from one website or a list of websites. The Actor follows a small set of high-value, same-site pages and returns one consolidated record per site.

The default crawler uses fast HTTP requests rather than a browser, which keeps the cost of a run predictable: $1.50 per 1,000 sites ($0.0015 each), with no run-start fee. Flat rate — no volume tiers, no plan gates — and you are charged only for sites actually returned. One site is one charge no matter how many of its pages the crawler reads. Empty, blocked, invalid, robots-disallowed, and no-contact sites produce an uncharged diagnostic row.

What it extracts

  • Public email addresses, including mailto: links and common [at] / [dot] obfuscation
  • Phone numbers from tel: links and visible page text, with optional country normalization
  • LinkedIn, Facebook, Instagram, X, YouTube, TikTok, Pinterest, GitHub, Threads, and Bluesky links
  • Visible and JSON-LD postal addresses
  • Contact forms with action, method, field names, and field types
  • JSON-LD Organization, LocalBusiness, and Person data
  • Website title and meta description
  • Every source page for every extracted value
  • Per-page crawl metadata and clear error diagnostics

The crawler prioritizes the home, contact, about, team, company, legal, privacy, terms, and impressum pages. It also discovers equivalent pages from link text and paths.

Input

FieldTypeDefaultDescription
websitesstring arrayApify website in UIDomains or full URLs. Values without a scheme use HTTPS.
startUrlsrequest-list sourcesemptyAlternative Apify-compatible URL input. Can be combined with websites.
maxPagesPerSiteinteger6Maximum page attempts per site, from 1 to 20.
maxConcurrencyinteger5Websites processed in parallel, from 1 to 20.
requestTimeoutSecsinteger12Timeout for each HTTP request.
maxResponseSizeKbinteger1536Maximum downloaded HTML size per page.
respectRobotsTxtbooleantrueSkip pages disallowed for the Actor user agent.
defaultCountrystringemptyOptional two-letter country code for local phone numbers, such as US, GB, or CA.
proxyConfigurationproxyoffOptional Apify or custom proxy. Direct HTTP is the default and adds no proxy bandwidth cost.

Example:

{
  "websites": [
    "apify.com",
    "https://www.example.org"
  ],
  "maxPagesPerSite": 6,
  "respectRobotsTxt": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

startUrls also accepts objects:

{
  "startUrls": [
    { "url": "https://www.apify.com" },
    { "url": "https://example.org/contact" }
  ]
}

Output

One successful row is stored for each site with useful public contact data:

{
  "ok": true,
  "siteUrl": "https://example.org/",
  "requestedUrl": "https://example.org/",
  "domain": "example.org",
  "title": "Example Organization",
  "description": "Example website description.",
  "emails": [
    {
      "email": "hello@example.org",
      "sourcePages": [
        "https://example.org/contact"
      ]
    }
  ],
  "phones": [
    {
      "phone": "+1 202 555 0100",
      "e164": "+12025550100",
      "country": "US",
      "sourcePages": [
        "https://example.org/contact"
      ]
    }
  ],
  "socialLinks": [
    {
      "platform": "linkedin",
      "url": "https://www.linkedin.com/company/example",
      "sourcePages": [
        "https://example.org/about"
      ]
    }
  ],
  "addresses": [],
  "contactForms": [],
  "jsonLdOrganizations": [],
  "jsonLdPeople": [],
  "sourcePages": [
    "https://example.org/contact",
    "https://example.org/about"
  ],
  "crawledPages": [
    {
      "url": "https://example.org/",
      "status": 200,
      "title": "Example Organization",
      "contactsFound": 3
    }
  ],
  "pagesCrawled": 4,
  "pagesAttempted": 6,
  "emailCount": 1,
  "phoneCount": 1,
  "socialLinkCount": 1,
  "addressCount": 0,
  "contactFormCount": 0,
  "robotsTxtRespected": true,
  "pageErrors": []
}

Values contain their own sourcePages, which makes the result easier to verify than a flat list of contacts.

Billing and diagnostics

The Actor emits the pay-per-event event site once, and only after a real successful row has been stored. The price is $0.0015 per site ($1.50 per 1,000), with no run-start fee, and it does not change with the number of pages crawled for that site.

These rows are never charged:

  • _sample: true: empty input preview used by Apify automated tests
  • BAD_INPUT or UNSAFE_URL: invalid or blocked target
  • NO_CONTACTS: pages loaded, but no useful public contact signal was found
  • ROBOTS_DENIED: relevant pages were excluded by robots.txt
  • BLOCKED, RATE_LIMITED, TIMEOUT, NETWORK, or other request errors

Each requested site is isolated. One blocked or invalid site does not fail the rest of the run, and expected per-site failures exit successfully with diagnostic data.

Security

The Actor is designed for user-supplied URLs:

  • Only http:// and https:// are accepted.
  • URL credentials are rejected.
  • Localhost and local network hostnames are rejected.
  • Loopback, private, link-local, carrier-grade NAT, multicast, documentation, benchmark, unspecified, and reserved IP ranges are rejected.
  • Every hostname and every redirect is resolved and validated.
  • Direct requests use a DNS lookup guard at connection time.
  • Redirects are manual, revalidated, and limited to the requested site.
  • Crawling is limited by site, page count, timeout, and response body size.
  • Binary and common document URLs are not crawled.

When a proxy is enabled, the destination is still resolved and validated before the proxy request. Direct mode provides the strongest DNS pinning and is the recommended default.

Robots.txt

respectRobotsTxt is enabled by default. The Actor fetches each site's robots.txt and checks every candidate URL against its own user agent. If robots.txt is unavailable, normal public-page crawling continues. Set the option to false only when you have permission and a specific reason.

Proxies

Most public company sites do not need residential proxies, so proxy use is off by default. Everything about the run is bounded so a large list stays predictable:

  • 512 MiB default memory
  • no browser startup
  • bounded HTTP responses
  • six page attempts by default
  • site-level concurrency
  • successful-result-only billing

Enable a datacenter or residential proxy only for sites that block direct cloud requests. Residential bandwidth is billed to you by Apify on top of the $0.0015 result fee, so leaving it off is usually the cheaper run.

JavaScript-heavy websites

This version intentionally does not launch a browser. That is what keeps a run fast and its cost flat at $0.0015 per site. Many modern sites still expose contact details in server-rendered HTML, metadata, JSON-LD, or footer links, which this Actor extracts.

For a fully client-rendered site, use its public contact page as the start URL, or enable a proxy if the issue is IP blocking rather than rendering.

Responsible use

Extract only public business contact information you are allowed to collect and process. Follow website terms, robots rules, privacy law, anti-spam law, and data retention requirements applicable to your use case. The Actor does not bypass logins or access controls.