Website Email Finder | Public Business Contacts avatar

Website Email Finder | Public Business Contacts

Pricing

from $2.50 / 1,000 website with contacts

Go to Apify Store
Website Email Finder | Public Business Contacts

Website Email Finder | Public Business Contacts

Find emails, phones and social profiles on company websites or a Google Maps lead list. One deduplicated row per site, with MX-checked emails. Results can contain personal data. Use them only with a lawful basis under the GDPR and similar laws.

Pricing

from $2.50 / 1,000 website with contacts

Rating

0.0

(0)

Developer

Atesen Software

Atesen Software

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Legal notice: this Actor reads public pages and can return personal data, including email addresses and phone numbers. Use the results only when you have a lawful basis under the GDPR and similar laws. You are responsible for opt-outs, anti-spam rules and how you store the data.

A contact details scraper and email finder: give it a list of company websites (or a Google Maps Scraper dataset). For each website you get one clean row with:

  • 📧 Emails: from mailto links, page text, obfuscated forms (info [at] acme (dot) com), Cloudflare-protected addresses and structured data. Each email gets a type (role like info@ or personal like jan.novak@), an own-domain flag and an MX check (can the domain receive mail?).
  • 📞 Phone numbers in E.164 format (+4930901820), validated with Google's libphonenumber for the site's country. Each number is marked as coming from a tel: link / structured data (high confidence) or from page text.
  • 🔗 Social profiles: LinkedIn, Facebook, Instagram, X/Twitter, YouTube, TikTok, Pinterest, Telegram, WhatsApp, Threads, GitHub. Share buttons and one-off links to other accounts (testimonials, embedded posts) are filtered out of the main columns.
  • 🏢 Company data when the site publishes it: legal name, address, VAT ID (EU VAT numbers in imprints/footers), founding date, logo, country and language.

It crawls the home page plus the best contact, imprint (Impressum), about and legal pages, detected in 15+ languages (English, German, French, Spanish, Italian, Dutch, Portuguese, Polish, Czech, Turkish, Nordic languages and more). No browser, so it is fast and cheap.

Why this actor

Website Email & Contact FinderTypical "contact details scraper"
Price$3 per 1,000 websites with contacts. Websites with nothing found, errors and duplicates are freeCharged per page crawled (about $2 per 1,000 pages, and up to 20 pages per website by default), so you can pay about $0.04 per website even when nothing is found
OutputOne merged row per website: all emails, phones and socials togetherOne row per crawled page; you merge the rows yourself or run a second "merge" actor
PhonesValidated E.164, with the source of each number (link/structured data vs text)Raw strings plus a separate "uncertain phones" list with dates, IDs and prices mixed in
Email qualityMX check, role/personal type, own-domain flag, junk filters (image names, Sentry/Wix IDs, placeholders, invalid TLDs)Every match on the page
Company dataAddress, legal name, VAT ID, country, languageNot included
DuplicatesSame domain twice (e.g. branches from Google Maps) → crawled and charged onceCrawled again
ProblemsClear status rows: unreachable, blocked, parked_domain, invalid_url, social_profile, duplicate, no_contacts. The run never fails because of one bad websiteMissing rows or failed requests in the log
Memory and speed512 MB default: about 40 websites in 10 seconds, no browser4 GB default, browser-based crawling

How to use it

  1. Paste websites into Websites (domains are enough: acme.com), or paste the dataset ID of a Google Maps Scraper run into Dataset IDs.
  2. Click Start.
  3. Download the results as Excel, CSV or JSON, or open the Contacts view.

Example input

{
"websites": ["apify.com", "stripe.com", "www.bosch.de", "https://www.acme-handwerk.de/kontakt"],
"maxPagesPerSite": 6,
"verifyEmailDomains": true,
"onlySameDomainEmails": false
}

Enrich Google Maps leads with emails and socials

Run Google Maps Scraper, copy the dataset ID of the run (Storage → Dataset ID), then:

{
"datasetIds": ["aBcDeFgHiJkLmNoPq"],
"maxPagesPerSite": 6
}

Places without a website are skipped. Several branches with the same website are crawled once. The place name, place ID, address, phone and category are copied to each row under source, so you can join the results back.

Example output (one website)

{
"type": "site",
"status": "ok",
"input": "acme-werkzeuge.de",
"domain": "acme-werkzeuge.de",
"url": "https://www.acme-werkzeuge.de/",
"companyName": "Acme Werkzeuge GmbH",
"description": "Werkzeuge und Maschinen für Handwerk und Industrie seit 1950.",
"country": "DE",
"language": "de",
"primaryEmail": "info@acme-werkzeuge.de",
"emails": ["info@acme-werkzeuge.de", "vertrieb@acme-werkzeuge.de", "m.schmidt@acme-werkzeuge.de"],
"primaryPhone": "+4930901820",
"phones": ["+4930901820", "+493090182222"],
"linkedin": "https://www.linkedin.com/company/acme-werkzeuge",
"facebook": "https://www.facebook.com/acmewerkzeuge",
"instagram": "https://www.instagram.com/acme.werkzeuge",
"twitter": null,
"youtube": "https://www.youtube.com/@acmewerkzeuge",
"tiktok": null,
"socials": { "linkedin": ["https://www.linkedin.com/company/acme-werkzeuge"], "facebook": ["https://www.facebook.com/acmewerkzeuge"] },
"address": "Hauptstraße 1, 10115 Berlin, DE",
"vatIds": ["DE123456789"],
"emailDetails": [
{ "email": "info@acme-werkzeuge.de", "source": "mailto", "foundOn": "https://www.acme-werkzeuge.de/impressum", "type": "role", "sameDomain": true, "mxValid": true },
{ "email": "m.schmidt@acme-werkzeuge.de", "source": "text", "foundOn": "https://www.acme-werkzeuge.de/kontakt", "type": "personal", "sameDomain": true, "mxValid": true }
],
"phoneDetails": [
{ "phone": "+4930901820", "source": "link", "foundOn": "https://www.acme-werkzeuge.de/" },
{ "phone": "+493090182222", "source": "text", "foundOn": "https://www.acme-werkzeuge.de/kontakt" }
],
"pagesScraped": 5,
"scrapedUrls": ["https://www.acme-werkzeuge.de/", "https://www.acme-werkzeuge.de/impressum", "https://www.acme-werkzeuge.de/kontakt", "..."],
"scrapedAt": "2026-10-20T01:30:00.000Z"
}

Output fields

FieldDescription
statusok (contacts found, charged), no_contacts (free). Problem rows have type: "status": invalid_input, invalid_url, social_profile, duplicate, unreachable, blocked, failed, not_html, parked_domain, invalid_dataset, no_websites (all free)
domain, urlRegistered domain and the final home page URL after redirects
companyName, description, country, languageFrom structured data, page meta tags and the domain
primaryEmail, emailsBest email first: own domain, then role addresses, then the most reliable source
primaryPhone, phonesE.164 numbers, high-confidence ones first
linkedin, facebook, instagram, twitter, youtube, tiktokThe company's main profile on each network, when we are confident it belongs to the company
socialsAll profiles per network (up to 5)
address, vatIds, organizationCompany data from schema.org markup and imprint pages
emailDetailsemail, type (role/personal), sameDomain, mxValid, source (mailto, text, schema, cloudflare, html), foundOn
phoneDetailsphone, source (link = tel:/structured data, text), foundOn
sourceThe input record when the website came from a dataset (name, placeId, address, phone, category)

The Run summary record (key-value store, RUN_SUMMARY) has the totals of the run.

Pricing

Pay per event:

  • Website with contacts: $0.003 ($3 per 1,000 websites) on the Free and Bronze plans, $0.0027 on Silver, $0.0025 on Gold and higher. Charged once per website that returned at least one email, phone or social profile, no matter how many pages were crawled.
  • Free: websites with no contacts, unreachable, blocked or parked websites, invalid URLs, social media URLs and duplicates.
  • A tiny actor start fee set by Apify ($0.00005).

You can set a maximum cost per run in the run options; the actor stops cleanly when it is reached.

Tips

  • Imprint pages (Germany, Austria, Switzerland) and legal notice pages (France, Italy, Spain) usually have the email, phone, address and VAT ID, and they are crawled first.
  • Keep the default 512 MB memory: it crawls about 10 websites in parallel. 256 MB works but is much slower.
  • Raise Max pages per website to 10–15 for big corporate sites; keep 3–6 for small businesses (faster, same price).
  • Use Only emails on the company's own domain for cleaner B2B lists.
  • Websites protected by aggressive bot challenges are reported as blocked and not charged.

The actor only reads publicly published business contact information from company websites (the information companies publish so customers can reach them), and it does not log in anywhere. If you process personal data (for example personal email addresses of employees), you are responsible for complying with GDPR and similar laws: have a legitimate interest, respect opt-outs and local anti-spam rules. Use onlySameDomainEmails and the type: "role" flag to work only with generic company addresses.

  • Google Maps Scraper → find businesses, then enrich them here with datasetIds.
  • SIRENE French company data → official SIREN/SIRET, VAT and financial data for French companies.