Skip to Content
MCPToolsScrape Emails from Website

Scrape Emails From Website

Give it a company website, get back every email address published on it.

Tool
scrape_emails_from_website
Cost
0.5 credits
Category
Website Scraping
Required input
url
Returns
Published email addresses found on the site

What it does

  • Crawls a company website and extracts every published email address — page text, mailto: links, and embedded markup.
  • Covers the homepage plus contact, about, team, support and legal pages.
  • Returns generic inboxes — info@, sales@, support@ — far more often than named ones. Plan for that. A named address is a bonus, not the expected result.
  • Crawling always starts at the site root. A deep link is reduced to its origin, so https://acme.com/pricing/enterprise is crawled as https://acme.com. You cannot point it at one page.
  • Takes a website URL or a bare domain.

This is the fallback when there is no LinkedIn URL for find_work_email. Use it when you need any route into a company, not a specific person’s address.


Parameters

ParameterTypeRequiredNotes
urlstringYesWebsite URL or bare domain. Reduced to the site root before crawling

How to use it

Connect the MCP server

Follow the setup guide for your client. Browser sign-in, no API key.

Scrape one site

Scrape emails from acme.com.

Run it across a list

Scrape emails from each of these 40 domains. Return one row per domain with every address found. Do not guess addresses for domains that return nothing.

Fall back from a failed person lookup

For anyone in this list where find_work_email returned nothing, scrape emails from their company website instead and mark those rows as generic.

Verify before you send

Verify every address you scraped and drop anything that isn't deliverable.

Example prompts

Ask your clientWhat you get back
”Scrape emails from acme.com”Every published address on the site
”Get contact emails for these 40 domains”One row per domain
”No LinkedIn for these leads — find any company email”Generic inboxes as a fallback
”Find Jane Doe’s work email at Acme”Not this tool — use find_work_email

Best prompting practices

  • Expect generic inboxes. Tell your client to label the result as generic so it does not end up in a sequence written to a named person.
  • Do not bother passing a deep link. It is reduced to the origin anyway. Pass the bare domain and save the confusion.
  • Forbid guessing. Add “do not guess email patterns” to any batch prompt. A fabricated first.last@company.com looks exactly like a scraped result and bounces like a fake.
  • Reach for find_work_email first whenever you have a LinkedIn URL. It costs 1 credit and returns a named address instead of a shared inbox.
  • Verify separately. Published addresses go stale. Chain verify_email before you send.

Output

{ "url": "https://acme.com", "emails": ["info@acme.com", "sales@acme.com"] }

Credits and limits

0.5 credits per call. Run check_credits (free) before a large batch.

Many sites publish no address at all — they use a contact form instead. An empty result is a normal outcome, not an error. Try scrape_phones_from_website for a switchboard number, or find_people_within_company to get a named person you can look up properly.


ToolUse it instead when
find_work_emailYou have a LinkedIn URL and want a named address — 1 credit
scrape_phones_from_websiteYou need published phone numbers instead — 0.5 credits
verify_emailYou have the address and need deliverability — 0.3 credits
find_people_within_companyYou need named people at the company — 0.3 credits

Next steps


Keep learning

Two courses take these tools past the reference page — clustered by GTM job, then chained into workflows.