Website Contact Details Scraper
Pricing
from $0.80 / 1,000 record scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
120
Total users
6
Monthly active users
8 days ago
Last modified
Categories
Features
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
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Required. One or more website URLs to crawl. |
maxItems | integer | 10 | Maximum number of result rows. Counts dataset rows, not pages crawled. |
maxDepth | integer | 2 | How many link-hops from the start URL to follow. 0 = only the start URL itself. |
includeContactPages | boolean | true | When enabled, the actor automatically follows links to contact, about, team, and imprint pages. |
extractFromAllPages | boolean | false | When 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. |
maxCrawledPages | integer | — | Optional hard cap on the total number of pages fetched in this run, across every start URL. Leave empty for no cap. |
maxRequestsPerCrawl | integer | — | Same cap as maxCrawledPages, under the name some callers already use for it. If both are set, the lower wins. |
maxRequestsPerStartUrl | integer | 5 | Max 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"}
urlis the start URL you supplied anddomainits domain.titleis the start page's title (the first crawled page that has one if the start page has none).emailsandphonesare 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
addressthe first address found. pages_crawledis 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.