Website Contact Details Scraper avatar

Website Contact Details Scraper

Pricing

from $0.80 / 1,000 record scrapeds

Go to Apify Store
Website Contact Details Scraper

Website Contact Details Scraper

Extract emails, phone numbers, social media links, and addresses from any website. Supply one or more URLs and get structured contact data back in seconds.

Pricing

from $0.80 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

120

Total users

6

Monthly active users

8 days ago

Last modified

Features

Limited permissions

Share

Extract emails, phone numbers, social media links, and physical addresses from any website. Supply one or more URLs and get structured contact data back in seconds.

What It Does

This actor crawls the websites you provide, automatically discovers contact-related pages (like /contact, /about, /team, /impressum), and extracts all contact details found in the page HTML.

Extracted data includes:

  • Email addresses (including those hidden behind mailto: links)
  • Phone numbers (from tel: links and visible text)
  • Facebook, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, and Pinterest profile links
  • Physical address text (from <address> tags and schema.org markup)
  • The page title, so each row says which business it belongs to

Use Cases

  • Lead generation — Bulk-collect contact info from a list of business websites
  • Sales prospecting — Find decision-maker contact details before outreach
  • Market research — Build a contact database from a list of competitor or partner sites
  • Data enrichment — Supplement an existing list of company URLs with their contact details

Input

ParameterTypeDefaultDescription
startUrlsarray—Required. One or more website URLs to crawl.
maxItemsinteger10Maximum number of result rows. Counts dataset rows, not pages crawled.
maxDepthinteger2How many link-hops from the start URL to follow. 0 = only the start URL itself.
includeContactPagesbooleantrueWhen enabled, the actor automatically follows links to contact, about, team, and imprint pages.
extractFromAllPagesbooleanfalseWhen enabled, also crawl non-contact pages linked from the start page — useful for sites that show emails in footers. The start page is always scanned.
maxCrawledPagesinteger—Optional hard cap on the total number of pages fetched in this run, across every start URL. Leave empty for no cap.
maxRequestsPerCrawlinteger—Same cap as maxCrawledPages, under the name some callers already use for it. If both are set, the lower wins.
maxRequestsPerStartUrlinteger5Max Pages Per Site. Maximum number of extra pages crawled from EACH start URL, on top of its own page (always fetched). Values above 20 are treated as 20.

Output

Each record in the dataset is one website: every page crawled from a start URL is merged into a single row.

{
"url": "https://example.com",
"domain": "example.com",
"title": "Example Co",
"emails": ["info@example.com", "sales@example.com"],
"phones": ["+1 555 555-5555"],
"facebook": "https://www.facebook.com/exampleco",
"twitter": "https://twitter.com/exampleco",
"linkedin": "https://www.linkedin.com/company/exampleco",
"instagram": null,
"youtube": null,
"tiktok": null,
"pinterest": null,
"address": "123 Main St, San Francisco, CA 94102",
"pages_crawled": 4,
"scraped_at": "2026-06-10T12:00:00.000Z"
}
  • url is the start URL you supplied and domain its domain. title is the start page's title (the first crawled page that has one if the start page has none).
  • emails and phones are the unique values found across all of the site's pages (emails lowercased), and an empty array when there are none. They were comma-joined strings before.
  • Each social field holds the first link found for that platform, and address the first address found.
  • pages_crawled is the number of pages fetched and merged into the row, the start page included.
  • Only websites where at least one contact detail (email, phone, social link, or address) was found get a row. Two start URLs that are the same after normalisation give one row; two different start URLs on the same domain give two.

Tips

  • For sites with contact info only in the footer of inner pages, enable Extract from all pages (extractFromAllPages: true).
  • For deep sites where the contact page is several links from the homepage, increase Max Crawl Depth.
  • If you only need homepage-level details (not a dedicated contact page), set maxDepth: 0: the start page is always scanned.

Notes

  • The actor uses plain HTTP requests — it does not execute JavaScript. Sites that load contact info dynamically via JavaScript may return fewer results.
  • Phone extraction uses pattern matching on visible text and tel: links. Very short numbers (fewer than 7 digits) and number sequences that look like timestamps or list items are filtered out.
  • Social link extraction is based on URL pattern matching — only major platforms (Facebook, Twitter/X, LinkedIn, Instagram, YouTube, TikTok, Pinterest) are detected.
  • A page that a site's bot protection turns away is retried automatically over a residential connection, for that page and site only. A site that still refuses is skipped, and login-protected pages are never attempted.
  • Account, login, cart, checkout and search pages are skipped — they never carry a site's contact details, and leaving them out keeps runs fast.