Extract emails, phone numbers, social media links and addresses from any list of websites. One clean deduplicated row per site, Cloudflare-protected emails decoded, phones validated, MX checked. Pay only for sites where an email or phone is found.
Open on Apify: gouda_studios/website-contact-extractor
maxResults to cap spend.| Name | Type | Default | Description |
|---|---|---|---|
startUrls | array | Websites or domains to extract contacts from, one per line. Examples: https://www.example.com or example.com. Each site becomes exactly one output row. | |
maxPagesPerSite | integer | 8 | How many pages to read on each site, starting with the homepage and then the most likely contact pages (Contact, About, Team, Impressum, Support). You pay per site, not per page, so higher values only cost more time. |
defaultCountry | string | "US" | Two-letter country code used to read local phone numbers that have no +country prefix, e.g. US, GB, DE, AU. |
checkMx | boolean | true | Adds a free DNS check that each email domain can receive mail. Flags typos and dead domains. |
respectRobotsTxt | boolean | true | Skip pages that a site's robots.txt asks crawlers not to visit. |
proxyConfiguration | object | {"useApifyProxy": false} | Optional. Most business sites work without a proxy. Turn on Apify Proxy if many sites time out or block requests. |
{
"startUrls": [
"https://apify.com",
"python.org"
],
"maxPagesPerSite": 8,
"defaultCountry": "US"
}
| Field | Type | Description |
|---|---|---|
inputUrl | string | |
domain | string | |
finalUrl | ['string', 'null'] | |
siteName | ['string', 'null'] | |
status | string | |
primaryEmail | ['string', 'null'] | |
primaryPhone | ['string', 'null'] | |
emails | array | |
phones | array | |
linkedin | array | |
facebook | array | |
instagram | array | |
x | array | |
youtube | array | |
tiktok | array | |
otherSocials | object | |
addresses | array | |
contactPageUrls | array | |
emailDetails | array | |
phoneDetails | array | |
pagesScanned | integer | |
scannedUrls | array | |
charged | boolean | |
error | ['string', 'null'] | |
scrapedAt | string |
{
"inputUrl": "https://apify.com",
"domain": "apify.com",
"finalUrl": "https://apify.com/",
"siteName": "Apify",
"status": "ok",
"primaryEmail": "support@apify.com",
"primaryPhone": null,
"emails": [
"support@apify.com",
"hello@apify.com"
],
"phones": [],
"linkedin": [
"https://www.linkedin.com/company/apify",
"http://linkedin.com/company/apify"
],
"facebook": [],
"instagram": [],
"x": [
"https://x.com/apify"
],
"youtube": [],
"tiktok": [
"https://www.tiktok.com/@apifytech",
"https://www.tiktok.com/@apifyoffice"
],
"otherSocials": {
"github": [
"https://github.com/apify"
],
"discord": [
"https://discord.com/invite/jyEM2PRvMU",
"https://discord.gg/w3e2v7rWDw"
]
},
"addresses": [
{
"street": "Na P\u0159\u00edkop\u011b 959/27",
"city": "Prague",
"region": null,
"postalCode": "11000",
"country": "CZ"
}
],
"contactPageUrls": [
"https://apify.com/contact",
"https://apify.com/contact-sales",
"https://apify.com/contact-sales/demo"
],
"emailDetails": [
{
"email": "support@apify.com",
"foundOn": "https://apify.com/",
"source": "schema.org",
"isRoleAccount": true,
"matchesSiteDomain": true,
"domainHasMx": true
},
{
"email": "hello@apify.com",
"foundOn": "https://apify.com/contact",
"source": "mailto",
"isRoleAccount": true,
"matchesSiteDomain": true,
"domainHasMx": true
}
],
"phoneDetails": [],
"pagesScanned": 4,
"scannedUrls": [
"https://apify.com/",
"https://apify.com/contact",
"https://apify.com/contact-sales",
"https://apify.com/about"
],
"charged": true,
"error": null,
"scrapedAt": "2026-10-22T05:44:44.947Z"
}
curl -X POST "https://api.apify.com/v2/acts/gouda_studios~website-contact-extractor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": ["https://apify.com", "python.org"], "maxPagesPerSite": 8, "defaultCountry": "US"}'
Connect an MCP client to https://mcp.apify.com and add the actor gouda_studios/website-contact-extractor, for example https://mcp.apify.com/?tools=gouda_studios/website-contact-extractor.
This actor is eligible for Apify agentic payments, so an AI agent can pay per run without an Apify account. See Apify x402 docs.
Machine-readable: /tools/website-contact-extractor.json
Contact: m0f@mail.grokbot.com | Machine-readable: llms.txt, llms-full.txt, tools.json, openapi.json | Source: GitHub