Contact Details Scraper - Emails, Phones and Social Links avatar

Contact Details Scraper - Emails, Phones and Social Links

Pricing

from $3.00 / 1,000 website with contact details

Go to Apify Store
Contact Details Scraper - Emails, Phones and Social Links

Contact Details Scraper - Emails, Phones and Social Links

Contact details scraper and email extractor for any list of websites: emails, phones in E.164, LinkedIn, X, Facebook, Instagram, YouTube, TikTok and GitHub profiles, address and company name from contact, Impressum and legal pages. Lead generation, no login.

Pricing

from $3.00 / 1,000 website with contact details

Rating

0.0

(0)

Developer

CrawlKit

CrawlKit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

Extract the public contact details of companies from a list of websites: email addresses, phone numbers, social profiles (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub, Pinterest), postal address and company name. One flat record per website.

No browser, no login, no API key, no start fee.

What it does

For each website in startUrls:

  1. Checks the site's robots.txt (on by default) and reads the home page.
  2. Finds the contact-type pages of the same domain from the home page links, using multilingual keywords: contact, kontakt, contacto, contatti, impressum, imprint, mentions legales, legal notice, aviso legal, about, a propos, uber uns, quienes somos, team, equipe... If the home page links to none, the site's sitemap is used.
  3. Reads up to maxPagesPerSite pages (home page included), contact pages first, then legal notice / Impressum, about and team pages.
  4. Extracts:
    • Emails from mailto: links, the page text (including simple obfuscation such as info [at] acme [dot] com or info(at)acme.de), Cloudflare-protected addresses, schema.org data, and addresses of the site's own domain found in the page source.
    • Phones from tel: links, schema.org data and the page text, normalised to E.164 (+4998315050) when the country can be deduced (schema.org address, country domain such as .fr / .de / .co.uk, or the page language).
    • Social profiles: the profile or company page most linked from the site, per network. Share buttons, posts, videos and repositories are ignored.
    • Address and company name from schema.org Organization / LocalBusiness JSON-LD; company name falls back to og:site_name, then to the home page title.
  5. Pushes one record per website, as soon as that website is done.

False positives are filtered: image file names that look like emails (logo@2x.png), placeholder and example addresses (name@example.com, your@email.com), error-tracking addresses (Sentry, Wix), dates, order numbers, prices, fax numbers and template numbers (+44 7123 123456).

Websites are read with plain HTTP first. A website that answers with a simple anti-bot page or refuses the connection is retried with a browser TLS fingerprint through a datacenter proxy, then through a residential proxy. No captcha is solved and no login is used.

Input

ParameterTypeRequiredDefaultDescription
startUrlsarrayYes-Websites to scan: home page URLs or bare domains (acme.com). One record per domain, duplicates ignored.
maxItemsintegerNo20Maximum number of websites to process (1-5000).
maxPagesPerSiteintegerNo5Pages read per website, home page included (1-30).
sameDomainOnlybooleanNotrueOnly read pages of the website's domain and subdomains.
respectRobotsTxtbooleanNotrueSkip pages disallowed by the website's robots.txt.

Example:

{
"startUrls": [
{"url": "https://www.hetzner.com"},
{"url": "https://wikimediafoundation.org"},
{"url": "paul.fr"}
],
"maxItems": 3,
"maxPagesPerSite": 5
}

Output

One dataset item per website (real output, October 2026):

{
"domain": "hetzner.com",
"url": "https://www.hetzner.com",
"inputUrl": "https://www.hetzner.com",
"companyName": "Hetzner",
"emails": ["product-feedback@hetzner.com", "info@hetzner.com", "tco@hetzner.com", "dsa-authorities@hetzner.com", "contact-fi@hetzner.com"],
"phones": ["+4998315050", "+358753259100", "+49911234226100", "+49374574447100", "+3587532590"],
"primaryEmail": "info@hetzner.com",
"primaryPhone": "+4998315050",
"linkedin": "https://www.linkedin.com/company/hetzner-online",
"twitter": "https://twitter.com/Hetzner_Online",
"facebook": "https://www.facebook.com/hetzner.de",
"instagram": "https://www.instagram.com/hetzner.online",
"youtube": "https://www.youtube.com/channel/UC5GXP-_6UWl5I9pisIDohUA",
"tiktok": null,
"github": null,
"pinterest": null,
"address": null,
"pagesCrawled": 5,
"sourcePages": ["https://www.hetzner.com", "https://www.hetzner.com/support/", "https://www.hetzner.com/legal/legal-notice/", "https://www.hetzner.com/unternehmen/downloads/", "https://www.hetzner.com/unternehmen/ueber-uns/"],
"error": null,
"scrapedAt": "2026-10-28T21:42:42.384890+00:00"
}
FieldDescription
domainWebsite domain without www.
url / inputUrlHome page after redirects / URL as given
companyNameschema.org name, else og:site_name, else home page title
emailsAll distinct addresses found, lower case, mailto: links first
phonesDistinct numbers, E.164 when the country is known, else the digits as written
primaryEmailAddress on the site's own domain, generic role (contact@, info@, hello@...) preferred
primaryPhoneFirst number found (tel: links first)
linkedin ... pinterestOne profile URL per network, or null
addressPostal address from schema.org data, or null
pagesCrawledPages read on the website (0 when it could not be read)
sourcePagesPages where at least one email, phone or social profile was found
errorWhy the website could not be read, else null

A website without any contact detail still returns a record, with empty lists and null values: it is not charged. A website that cannot be read (DNS error, HTTP error, anti-bot page, home page disallowed by robots.txt) returns a record with pagesCrawled: 0 and the reason in error: it is not charged either. The run fails only if none of the websites could be read.

Pricing

Pay-per-event, no start fee: $5.00 per 1,000 websites with contact details on the Apify Free plan, lower on paid plans. One WEBSITE event is charged per website for which at least one email, phone or social profile was found; websites with no result or that could not be read are free.

EventFreeStarterScaleBusinessEnterprise
Website with contact details (WEBSITE)$5.00$4.30$3.70$3.00$3.00

Prices in USD per 1,000 events. The price per website does not depend on maxPagesPerSite.

Limitations

  • JavaScript-only websites: pages are read as HTML, without a browser. Contact details that are only rendered by JavaScript (single-page apps, contact widgets, some site builders) are not seen.
  • Emails shown as images, contact forms without a written address, and strongly obfuscated addresses (JavaScript assembly, CSS tricks) are not extracted.
  • Protected websites: sites behind a JavaScript challenge or captcha (for example some Cloudflare, DataDome or Akamai configurations) are returned with an error and not charged.
  • robots.txt: with respectRobotsTxt on (default), websites that disallow all crawlers are skipped.
  • Address is only filled when the website publishes schema.org Organization / LocalBusiness data (about a third of company sites in our tests).
  • Phones without a deducible country (no country domain, no address data, no page language) are returned as written digits instead of E.164.
  • Emails of other domains found on the pages (web agency credits, parent company, hosting provider) are kept in emails; primaryEmail prefers the site's own domain.
  • Large sites with many local offices may list more contacts than maxPagesPerSite pages can cover.

Data protection

The Actor only reads publicly available pages and returns contact details that companies publish about themselves (legal notice, contact page). Some pages also list named employees with their business email or phone. You are responsible for using the data in line with the GDPR and other applicable laws (legal basis, information of the persons, opt-out for marketing, no use of personal data beyond your purpose).