Apify actor · whoareyouanas/website-link-scraper
Website Email & Contact Scraper - Find Emails, Phones & Socials
Crawl supplied website seeds to collect published emails, phone numbers, social links, and page references. Use full page records or an email-focused mode for contact research and link inventories.
Documentation checked 2026-10-29 · deployed build 0.1.8 · run through your Apify account
01 / Overview
Match the actor to the job.
Define the crawl
Control seed URLs, depth, page budget, same-domain behavior, and discovered-link patterns.
Choose extraction fields
Enable email, phone, social, link, image, or file-reference extraction as needed.
Review summaries
Use seed and run summaries to understand crawled pages, failures, and extracted contacts.
02 / Input
Start with a clear, bounded input.
startUrls is required. Include/exclude patterns apply to discovered links, not the initial seeds. Use the final canonical hostname; maxPages bounds crawl work, not the number of extracted email rows.
{
"startUrls": [
{
"url": "https://trustmrr.com/"
}
],
"mode": "full",
"crawlerType": "http",
"maxPages": 5,
"maxDepth": 1,
"sameDomainOnly": true,
"includeSubdomains": false,
"extractEmails": true,
"extractPhones": true,
"extractSocial": true,
"extractLinks": true,
"extractImages": false,
"extractFiles": false,
"maxConcurrency": 1,
"requestTimeoutSecs": 30
}Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| startUrls | arrayRequired | Not specified | Seed URLs to crawl. |
| mode | string | "full" | Use full for page-wise link intelligence or emails_only for one row per email. Options: full, emails_only |
| crawlerType | string | "http" | HTTP is cheaper and faster. Browser handles heavy JS websites. Options: http, browser |
| maxPages | integer | 200 | Maximum pages across the entire run, shared by all start URLs. Concurrent crawling may slightly exceed this limit. Minimum: 1 |
| maxDepth | integer | 2 | How deep to follow links from each start URL. Minimum: 0 |
| sameDomainOnly | boolean | true | If enabled, crawler follows only links from the same domain as each seed URL. |
| includeSubdomains | boolean | false | Treat subdomains as internal when same-domain crawling is enabled. |
| extractLinks | boolean | true | Extract and classify internal and external page links. |
| extractEmails | boolean | true | Extract email addresses from page content and mailto links. |
| extractPhones | boolean | true | Extract phone numbers from tel: links. Plain-text phone numbers are not currently extracted. |
| extractSocial | boolean | true | Extract profile links for major social platforms. |
| extractImages | boolean | true | Extract image URLs from page markup and metadata. |
| extractFiles | boolean | true | Extract downloadable file links such as PDFs, docs, and archives. |
| maxConcurrency | integer | 25 | Maximum number of parallel requests while crawling. Minimum: 1 |
| requestTimeoutSecs | integer | 20 | Timeout in seconds for each page request. Minimum: 1 |
All other input controls (3)
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| includeUrlGlobs | array | [] | If non-empty, only URLs matching at least one glob are crawled. |
| excludeUrlGlobs | array | [] | URLs matching any glob are skipped. |
| proxyConfiguration | object | Not specified | Optional proxy settings. Leave empty for direct connections. |
03 / Output
Know what each returned row represents.
- The dataset can contain page records or email records plus a summary per seed and a run summary. Use recordType when counting contacts.
- An Emails column view does not remove summary records. Published emails are not validated for deliverability or ownership.
{
"recordType": "email",
"seedUrl": "https://company.test/",
"url": "https://company.test/contact",
"email": "[email protected]",
"depth": 1,
"statusCode": 200
}Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.
Fields in the documented output view
recordType
recordType
seedUrl
seedUrl
pageUrl
pageUrl
url
url
emails
emails
phoneNumbers
phoneNumbers
socialLinks
socialLinks
files
files
images
images
internalLinks
internalLinks
externalLinks
externalLinks
pagesCrawled
pagesCrawled
failedRequests
failedRequests
uniqueEmails
uniqueEmails
Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.
Dataset links and run artifacts (1)
- Extracted contacts and crawl summaries
- Full mode returns page records; emails_only returns email records deduplicated per seed. Both modes also include seed_summary and run_summary records.
04 / Pricing
Understand the billable unit.
These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.
| Billable event | Rate (USD) | When it applies |
|---|---|---|
Actor Start apify-actor-start | $0.00005 / event | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). Start units depend on allocated memory: one event per GB, with at least one event. |
result apify-default-dataset-item | $0.004 / event | Single result in the default dataset. $4.00 per 1,000 of this event. Other events and separate services are additional. |
- Dataset-item billing includes written summaries as well as extracted page or email rows.
- For example, five page rows plus a seed summary and run summary are seven billed items, not five contacts.
A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.
05 / API & automation
Use the same input from your workflow.
Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
'https://api.apify.com/v2/acts/whoareyouanas~website-link-scraper/runs' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data @input.jsonThe response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.
Coverage & interpretation
Check the result before relying on it.
- The crawler follows discovered links; it does not guess missing contact paths or visit listed companies merely because a directory mentions them.
- Protected or obfuscated contacts may be missed or misidentified. Review extraction quality before CRM use.
Questions
Before you build an integration.
What do I need to provide?
startUrls is required. Include/exclude patterns apply to discovered links, not the initial seeds. Use the final canonical hostname; maxPages bounds crawl work, not the number of extracted email rows.
What should I check in the output?
- The dataset can contain page records or email records plus a summary per seed and a run summary. Use recordType when counting contacts.
- An Emails column view does not remove summary records. Published emails are not validated for deliverability or ownership.
How do I budget the run?
- Dataset-item billing includes written summaries as well as extracted page or email rows.
- For example, five page rows plus a seed summary and run summary are seven billed items, not five contacts.
Keep exploring
Practical guides for the next step.
How to Scrape Website Emails, Phone Numbers and Social Links
Learn how to scrape website emails, phone numbers, social links, internal links, external links, images, and files for lead generation, audits, and CRM enrichment.
Read the guideTop 7 Web Scrapers for Competitor Research in 2026
Compare the best web scrapers for competitor ad research, social listening, lead generation, and market research across Meta, Google, TikTok, Reddit, websites, and Facebook Groups.
Read the guide