Website Contact Extractor — AI Contacts, Emails, Phones avatar

Website Contact Extractor — AI Contacts, Emails, Phones

Pricing

from $5.00 / 1,000 contact extracteds

Go to Apify Store
Website Contact Extractor — AI Contacts, Emails, Phones

Website Contact Extractor — AI Contacts, Emails, Phones

Extract structured contacts (name, position, email, phone, LinkedIn) plus emails, phones, socials and address from any company website. AI-powered — Gemini / Groq / OpenRouter (bring your own key). Pay-per-result.

Pricing

from $5.00 / 1,000 contact extracteds

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

2

Bookmarked

95

Total users

2

Monthly active users

7 days ago

Last modified

Share

Website Contact Extractor

Extract contact information from any website — emails, phone numbers, social media links, and company address — in a single run. Give it a list of URLs and get back one consolidated contact record per site. No API keys needed.

How It Works

For each URL you provide, the scraper:

  1. Visits the homepage and captures the page title and meta description
  2. Parses schema.org JSON-LD structured data to extract the company address
  3. Discovers internal links — contact, about, impressum, team, and privacy pages are always crawled first
  4. Extracts email addresses from page text and mailto: links
  5. Extracts phone numbers from tel: links and international-format (+XX) text
  6. Finds social media profile links (LinkedIn, Twitter/X, Facebook, Instagram, YouTube, Xing)
  7. Returns one record per website with all contact details consolidated

Challenge pages (bot-protection walls) are skipped automatically so the run keeps going.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client — Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Apify MCP server URL:

https://mcp.apify.com?tools=nanoscrape/website-contact-extractor

Example prompt once connected:

"Use website-contact-extractor to extract the contact email, phone number, and LinkedIn page for acme-corp.com."

Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via add-actor.

Input Example

{
"urls": [
"acme-corp.com",
"https://www.another-company.de",
"https://startup.io/contact"
],
"maxPagesPerUrl": 15
}

Bare domains (acme-corp.com) and full URLs are both accepted.

Output Example

[
{
"url": "https://acme-corp.com",
"domain": "acme-corp.com",
"title": "Acme Corp — Business Solutions",
"description": "We help businesses automate their operations worldwide.",
"emails": ["info@acme-corp.com", "sales@acme-corp.com"],
"phones": ["+1 555 123 4567"],
"address": "123 Main St, San Francisco, CA 94105, US",
"social_links": {
"linkedin": "https://linkedin.com/company/acme-corp",
"twitter": "https://twitter.com/acmecorp",
"facebook": "https://facebook.com/acmecorp"
},
"pages_crawled": 9,
"scraped_at": "2026-05-06T10:00:00Z"
}
]

Pricing

Pay per event. No monthly fees, no minimum spend.

EventPriceWhen it is charged
Actor start$0.00005 per GB of memoryOnce per run
Company processed$0.01Per website where at least one email, phone or contact was found. Websites with no contacts are still returned (status no_contacts) but not charged.
Contact extracted$0.005Per structured contact (name, position, email, phone) extracted with an LLM key

Example: 100 websites, 70 with contacts, no LLM key: 70 x $0.01 = about $0.70.

Changelog

2.3

  • Websites where no email, phone or contact was found are no longer charged the "Company processed" fee.
  • Better results without an LLM key: contact, imprint and "Kontakt" pages are checked first, the sitemap is used as a fallback, and emails are found in page data and obfuscated forms ([at], @). Broken addresses such as name@site.com%20 are cleaned up.
  • Gemini requests use header authentication; the default Gemini model is gemini-flash-lite-latest.
  • Running with empty input now uses a default URL instead of failing.

Input Parameters

ParameterTypeDefaultDescription
urlsstring[]["https://example.com"]Website URLs or bare domains to scrape
maxPagesPerUrlinteger15Max pages to crawl per site (1–50)

Output Fields

FieldTypeDescription
urlstringInput URL that was scraped
domainstringNormalized domain name
titlestringPage title from the homepage
descriptionstringMeta description from the homepage
emailsstring[]All unique email addresses found (lowercase)
phonesstring[]Phone numbers from tel: links and international-format text
addressstringCompany address from schema.org JSON-LD structured data
social_linksobjectSocial profiles found (linkedin, twitter, facebook, instagram, youtube, xing)
pages_crawledintegerNumber of pages visited
scraped_atstringISO timestamp of when the record was produced

Tips

  • Contact and impressum pages are checked first — the scraper prioritizes /contact, /kontakt, /impressum, /about, /team, and similar paths
  • 15 pages covers most SMB and mid-market sites — most businesses expose all contact info within the first 15 pages
  • Increase to 30–50 pages for large corporate sites or to find role-specific emails (hr@, press@)
  • One record per website — all emails, phones, and social links from a site are consolidated into a single row, making it easy to use in spreadsheets or CRMs
  • Address from structured data — address is only populated when the site includes schema.org JSON-LD markup (common on SMB and local business sites)

Enrich with more data

Lead generation sources

Issues & Feature Requests

If something is not working or you're missing a feature, please open an issue and we'll look into it.