Google Maps Email Scraper & Lead Extractor avatar

Google Maps Email Scraper & Lead Extractor

Pricing

Pay per usage

Go to Apify Store
Google Maps Email Scraper & Lead Extractor

Google Maps Email Scraper & Lead Extractor

Extract business emails, phone numbers, websites, social media links, ratings, reviews, and opening hours from Google Maps. The most complete lead generation tool for B2B sales prospecting. Supports any location and language worldwide.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

yestrue

yestrue

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

Google Maps Lead Extractor — Email-Validated Leads with Deliverability Grades

If this actor saves you time, please rate it on Apify — reviews raise its Store visibility and help the next person find it. 🔖 Bookmark the actor too so you can launch new runs in one click.

The most advanced Google Maps lead-generation scraper on the Apify Store. Extracts everything competitors do — plus 11 exclusive features no other scraper offers: email deliverability grading (MX/SPF/DMARC), web quality signals (lite Lighthouse), delta mode (skip already-scraped leads), Meta Ad Library enrichment (find active advertisers), tech-stack detection, 0-100 lead scoring, AI-ready outreach profiles, review keywords, service options, business status, owner descriptions, and website language.

🔎 Live demo datasets — all publicly accessible, no auth: • 25 Manhattan Italian restaurants (64% email hit rate) • 20 London coffee shops (70% email hit rate) • 20 Berlin dentists (German) (85% email hit rate, 65% high deliverability)

Pricing: $0.003 per lead + $0.002 per website scraped. Example: 25 leads with full enrichment ≈ $0.10. Delta mode on weekly re-runs drops this near $0 for already-known leads.

Why this scraper beats every competitor

FeatureThis actorOutscraperApify officialPhantomBuster
Email deliverability grade (MX/SPF/DMARC)catch-all detection
Web quality signals (lite Lighthouse)HTTPS/mobile/pageSize
Delta mode (skip already-scraped)$0 for duplicates
Meta Ad Library lookup URLpage-specific
Email extraction from websites✅ 5-source + ranked✅ basic
Primary email auto-selection✅ domain-match algorithm
Tech stack detectionWordPress/Wix/Shopify/...
Lead score 0-100aggregate quality metric
AI-ready outreach profileGPT/Claude-ready
Owner name extraction3-stage NLP pipeline
Review keywords
Service options (delivery, Wi-Fi, etc.)⚠️ partial
Business status (open/closed)⚠️ partial
Owner description
Website language
Menu URL / Booking URL✅ OpenTable/Resy/Tock
WhatsApp Business number
Cloudflare email decoding⚠️
ROT13 / JSON-LD parsing
Contact page crawl in 10 languages⚠️ English only
Industry & cuisine classification

50–70% email hit rate in testing (market-dependent) — significantly higher than competitors, which typically return 0–15%.

📊 Real demo data — three verticals, three countries, zero filtering

Every dataset below is publicly accessible — click any link, no account needed.

🗽 Italian restaurants — Manhattan, NYC

api.apify.com/v2/datasets/M9Bd8gMh4NglVKIbt/items 25 results • 4m 15s • $0.10 • 64% email hit rate • 56% owner name • 32% deliverability: "high"

☕ Coffee shops — Shoreditch, London

api.apify.com/v2/datasets/ROgK5EsNU6UtTSwFl/items 20 results • 2m 30s • $0.06 • 70% email hit rate • 40% deliverability: "high" • 79% FB page IDs

🦷 Zahnarzt (dentists) — Berlin Mitte (German)

api.apify.com/v2/datasets/gI04MuKrfPF4D4Ui8/items 20 results • 3m 30s • $0.07 • 85% email hit rate • 65% deliverability: "high" • 100% website coverage

Cross-vertical takeaway: email hit rates and deliverability grades vary 1.5-2× across industries and countries. Regulated markets (medical/EU) maintain the highest email hygiene. See the full cross-vertical breakdown in marketing/showcase.md.

Detailed metrics — Manhattan Italian restaurants

MetricCountRate
Places scraped25100%
With email extracted1664%
With ownerName extracted1456%
With deliverability: "high" grade832%
With catch-all detected0
With Facebook page ID (Meta Ad Library)10 of 17 FB pages59%
With webQuality: "modern"2080%
With booking URL (OpenTable/Resy/Tock)1456%
With social media2392%
Avg leadScore81.2 / 100
Runtime~3 min
Cost~$0.10

Who is this for?

  • Sales teams who need pre-qualified, email-validated leads — skip the separate email verification step (saves $0.01-0.03/email)
  • Cold-outreach operators protecting sender reputation — filter on deliverability: "high" before firing the campaign
  • Web design agencies — filter on webQuality: "dated" or httpsOnly: false for perfect modernization leads
  • AI-powered outreach platforms consuming aiLeadProfile directly into GPT/Claude prompts
  • Marketing agencies targeting active Facebook/Instagram advertisers (via metaAdLibraryUrl)
  • Web dev / SaaS companies targeting specific CMS users (WordPress, Shopify, Squarespace)
  • Recruiters finding claimed, operational businesses with working contact details
  • Market researchers analyzing competitors, pricing, tech adoption, and review keywords
  • Anyone running scheduled scrapes — delta mode means weekly re-runs cost near zero

🔥 Exclusive features (no other scraper has these)

1. Email deliverability grading (MX / SPF / DMARC / SMTP)

Every primaryEmail is graded before you send outreach — so you don't burn sender reputation on invalid or catch-all addresses.

"emailValidation": {
"mxRecords": 5,
"hasSpf": true,
"hasDmarc": true,
"smtpValid": null,
"isCatchAll": null,
"deliverability": "high"
}
  • MX lookup — 0 MX records = domain can't receive email (filter these out)
  • SPF + DMARC — real businesses configure both (weak config = higher bounce risk)
  • SMTP RCPT TO probe — gold-standard mailbox existence check + catch-all detection (best-effort; port 25 often blocked in cloud, gracefully degrades to DNS-only)
  • Deliverability grade: "high" / "medium" / "low" — sortable, filterable, ready for outreach automation

Why it matters: cold-outreach tools charge per verified email ($0.01-0.03 each — 10× our price). Our scraper delivers graded leads in one step.

2. Web quality signals — "lite Lighthouse"

Every homepage is inspected for quality indicators — zero extra cost because we already fetched the HTML.

"webSignals": {
"httpsOnly": true,
"mobileResponsive": true,
"pageSizeKb": 269,
"hasFavicon": true,
"hasOpenGraph": true,
"hasStructuredData": true
},
"webQuality": "modern"

Why it matters: web-dev agencies and SaaS companies can target businesses with dated or poor sites for redesign / modernization pitches. Example: a restaurant with httpsOnly: false and webQuality: "poor" is a hot lead for a web agency.

3. Delta mode — pay $0 for leads you already have

Pass a previous run's dataset ID via sinceDatasetId and the actor skips every place already scraped (matched by Google Maps placeId). Duplicate-filtering happens before detail-page fetch, so no place-scraped events fire for known leads = zero cost for duplicates.

{ "searchQueries": ["plumbers near me"], "sinceDatasetId": "wQEvJWlQrLrXgw0Js" }

Perfect for scheduled runs: daily/weekly recurring scrapes where you only want NEW leads.

4. Meta Ad Library URL — find active advertisers

For every business with a Facebook URL, the actor fetches the page and extracts the numeric Facebook page ID, then builds a targeted Meta Ad Library lookup URL (not a noisy keyword search — the actual page's ads).

"facebookPageId": "100063712566097",
"metaAdLibraryUrl": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ALL&search_type=page&view_all_page_id=100063712566097"

Why it matters: actively-advertising businesses have confirmed marketing budget = high purchase intent for B2B outreach selling marketing tools, analytics, creative services.

5. Tech stack / CMS detection

Detect the platform, e-commerce engine, frameworks, analytics, and marketing tools used on each business website. Over 40 technologies detected:

  • Website builders: Wix, Squarespace, Webflow, Duda, Weebly, GoDaddy Builder, Jimdo
  • CMS: WordPress, Drupal, Joomla, Ghost, HubSpot CMS
  • E-commerce: Shopify, WooCommerce, BigCommerce, Magento, PrestaShop
  • Frontend: Next.js, Nuxt, Gatsby, React, Vue, Angular
  • Marketing: Google Analytics, Facebook Pixel, HubSpot, Mailchimp, Intercom, Calendly, Hotjar
  • Booking: OpenTable, Resy, Tock, TheFork, Booking.com, SevenRooms

Why it matters: Target businesses on legacy platforms (Wix, Weebly, GoDaddy Builder) for upgrade pitches. Target WooCommerce stores for plugin sales. Target Shopify for e-commerce consulting.

6. Lead Score (0-100) + Readiness tier

Each lead gets an aggregated quality score from 0 to 100:

RangeReadinessMeaning
70-100hotDomain-matched email, claimed, good reviews, social, etc. — outreach immediately
45-69warmHas some signals — worth personalized outreach
25-44coldBasic data only — needs enrichment before outreach
0-24deadLow-signal — likely not worth the time

Scoring breakdown (max 100): +25 domain-matched email, +10 any email, +10 phone, +10 website, +15 claimed, +10 rating ≥ 4.0, +10 reviews ≥ 20, +10 social media, +5 contact form, +5 modern tech stack.

7. AI-Ready Lead Profile

A pre-digested outreach profile ready to feed into GPT-4, Claude, or Gemini prompts — so your cold-email automation doesn't have to reinvent the wheel.

"aiLeadProfile": {
"businessSummary": "Osteria Nonnino — Italian restaurant, in Manhattan, 4.6★ (125 reviews), claimed listing",
"outreachHooks": [
"Uses Wix — common candidate for custom-site upgrades",
"No WhatsApp Business number — likely conversion opportunity"
],
"painSignals": [
"Uses personal free-mail for business contact (not professional email)"
],
"personalizationContext": "Customers mention: authentic pasta, great service, cozy | Services offered: Dine-In, Takeout, Reservations | Owner says: \"Family-run Italian restaurant..\""
}

Plug aiLeadProfile directly into your LLM prompt:

"Write a cold outreach email to {businessSummary}. Mention one outreach hook from: {outreachHooks}. Address this pain point: {painSignals[0]}. Personalize with: {personalizationContext}."

8. Review keywords

Google Maps aggregates what customers mention in reviews. We extract those keywords so you can:

  • Open cold emails with "I saw your customers love your {keyword}..."
  • Understand what the business is known for, at a glance
  • Spot positioning opportunities (e.g. everyone mentions "slow service" → sell CRM automation)

9. Service options / amenities

  • Restaurants: Delivery, Takeout, Dine-in, Reservations, Outdoor Seating, Kids Menu, Vegan Options, Halal Food, Live Music, Cocktails, Wine, Breakfast, Brunch…
  • Retail / Services: Accepts Credit Cards, Wheelchair Accessible, Wi-Fi, Free Parking, Pet-Friendly, LGBTQ+ Friendly, Good for Groups…

Over 60 service options detected.

10. Business status

operational / temporarily_closed / permanently_closed — so your sales list is never polluted with dead businesses.

11. Owner description ("from the owner")

The description the business owner wrote themselves on Google My Business. Perfect source for authentic voice and tone when personalizing outreach.

12. Industry & cuisine classification

Every business is classified into one of 14 coarse industry buckets (Food & Beverage, Healthcare, Legal Services, Beauty & Wellness, Fitness & Sports, …) and restaurants get a cuisine tag (Italian, Japanese, Mexican, BBQ, …). Makes filtering and segmentation trivial.

Core features

✅ Searches Google Maps by keyword + location (e.g., "dentists in London") ✅ Extracts: name, address, phone, WhatsApp, website, rating, review count, category, industry, cuisine, opening hours, price level ✅ GPS coordinates (latitude, longitude, plusCode) for mapping & geo-analysis ✅ Visits business websites to find emails via 5 independent extraction sources ✅ Crawls contact subpages in 10+ languages (/contact, /kapcsolat, /kontakt, /impressum, /contacto, /contatti, etc.) ✅ Decodes Cloudflare-obfuscated emails (data-cfemail attribute) ✅ Parses JSON-LD / schema.org structured data for contact info ✅ Deobfuscates text patterns like info [at] domain [dot] com, HTML entities, ROT13Ranks emails by relevance — primary email = domain match with business website ✅ WhatsApp Business number extraction from wa.me/ and api.whatsapp.com links ✅ Contact form detection — flags businesses that accept contact via form only ✅ Social profiles on Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTokMenu URL and Reservation URL (OpenTable, Resy, Tock, TheFork) ✅ Multi-layer false-positive filtering (placeholder emails, tracking pixels, font authors) ✅ Works in any language — Hungarian, German, Spanish, English, etc. ✅ Proxy support with Apify residential proxies ✅ Export to JSON, CSV, Excel, or connect via API / webhook

Input

FieldTypeDescriptionDefault
searchQueriesArray of stringsSearch terms like "plumbers in Chicago"[]
startUrlsArray of URLsDirect Google Maps URLs to scrape[]
maxResultsIntegerMax results per query (0 = unlimited)100
scrapeEmailsBooleanVisit websites to find emails + tech stacktrue
scrapeSocialsBooleanExtract social media linkstrue
maxConcurrencyIntegerParallel browser pages5
languageStringGoogle Maps language codeen
proxyConfigurationObjectProxy settingsApify residential

Example input

{
"searchQueries": [
"restaurants in Budapest",
"dentists in London",
"plumbers in Chicago"
],
"maxResults": 50,
"scrapeEmails": true,
"scrapeSocials": true,
"language": "en"
}

Output

Each result contains complete business contact information plus all the exclusive scoring and profiling fields:

{
"name": "Osteria Nonnino",
"address": "123 Main Street, New York, NY 10013",
"latitude": 40.72183,
"longitude": -74.00437,
"plusCode": "PQXH+8V Manhattan",
"phone": "+1 (212) 555-1234",
"whatsapp": "+12125551234",
"website": "https://osteria-nonnino.com",
"primaryEmail": "info@osteria-nonnino.com",
"emails": [
"info@osteria-nonnino.com",
"reservations@osteria-nonnino.com",
"owner@gmail.com"
],
"hasContactForm": true,
"rating": 4.6,
"reviewCount": 328,
"priceLevel": "$$",
"category": "Italian restaurant",
"industry": "Food & Beverage",
"cuisine": "Italian",
"businessStatus": "operational",
"isClaimed": true,
"businessDescription": "Family-run Italian restaurant serving homemade pasta in the heart of Manhattan.",
"serviceOptions": [
"Dine-In", "Takeout", "Reservations", "Outdoor Seating", "Wi-Fi"
],
"reviewKeywords": ["authentic pasta", "great service", "cozy"],
"openingHours": {
"Monday": "11:00 AM – 10:00 PM"
},
"socialMedia": {
"facebook": "https://facebook.com/osterianonnino",
"instagram": "https://instagram.com/osterianonnino",
"linkedin": null, "twitter": null, "youtube": null, "tiktok": null
},
"techStack": [
"WordPress", "WooCommerce", "Google Analytics",
"Facebook Pixel", "Mailchimp"
],
"websiteLanguage": "en-us",
"bookingUrl": "https://www.opentable.com/r/osteria-nonnino",
"menuUrl": "https://osteria-nonnino.com/menu",
"leadScore": 95,
"leadReadiness": "hot",
"aiLeadProfile": {
"businessSummary": "Osteria Nonnino — Italian restaurant, in New York, 4.6★ (328 reviews), claimed listing",
"outreachHooks": [],
"painSignals": [],
"personalizationContext": "Customers mention: authentic pasta, great service, cozy | Services offered: Dine-In, Takeout, Reservations, Outdoor Seating | Owner says: \"Family-run Italian restaurant..\""
},
"googleMapsUrl": "https://www.google.com/maps/place/Osteria+Nonnino",
"placeId": "0x4741dc14183e4511:0x2356a71b716602c5",
"searchQuery": "italian restaurants Manhattan",
"scrapedAt": "2026-04-17T10:30:00.000Z"
}

Output fields reference

FieldDescription
leadScore0-100 aggregate lead quality score — sort by this to prioritize outreach
leadReadinesshot / warm / cold / dead — readiness bucket derived from leadScore
aiLeadProfilePre-built outreach profile with business summary, hooks, pain signals, personalization context — feeds directly into LLM prompts
techStackArray of detected technologies (CMS, e-commerce, analytics, marketing tools)
industryOne of 14 coarse industry buckets
cuisineCuisine tag for restaurants
businessStatusoperational / temporarily_closed / permanently_closed
businessDescriptionOwner-written description from Google My Business
serviceOptionsArray of delivery/amenity tags
reviewKeywordsArray of keywords customers mention in reviews
primaryEmailSingle best email — domain matches business website when possible
emailsAll found emails, ranked by relevance (primaryEmail is always emails[0])
bookingUrlReservation / booking URL (OpenTable, Resy, Tock, TheFork)
menuUrlDirect URL to the restaurant's menu
hasContactFormtrue if the site has a contact form (useful when primaryEmail is null)
whatsappE.164 WhatsApp Business number
websiteLanguageISO code of the website's primary language (en, hu, en-us, …)
latitude / longitudeGPS coordinates for mapping and geo-analysis
plusCodeGoogle's short location code

How it works

  1. Google Maps Search — Uses a Playwright browser to search Google Maps, scroll through all results, and collect business listing URLs.
  2. Place Data Extraction — Visits each business page to extract name, address, phone, website, rating, review count, category, opening hours, GPS, price level, business status, owner description, service options, review keywords, menu URL, reservation URL, claimed status, plus code.
  3. Website Analysis — Uses a fast Cheerio crawler to visit each business website and extract emails from five independent sources:
    • mailto: anchor links
    • Cloudflare-obfuscated email tags (data-cfemail)
    • JSON-LD / schema.org structured data
    • Text deobfuscation (info [at] domain [dot] com, HTML entities, ROT13)
    • Regex pattern matching on the rendered HTML
  4. Tech stack fingerprinting — Detects 40+ technologies from script URLs, meta generators, class names, and DOM attributes.
  5. Contact page fallback — If the homepage yields no email (or only third-party emails), the actor automatically follows /contact, /kapcsolat, /kontakt, /impressum, /contacto, /contatti, /contactez-nous, etc.
  6. Email ranking — Emails are ranked so the best one (matching the business domain) becomes primaryEmail.
  7. Scoring + profiling — Every record gets a leadScore, leadReadiness bucket, and a full aiLeadProfile ready for LLM consumption.
  8. Smart filtering — Removes placeholder emails (user@domain.com), Sentry DSNs, font-author emails, image filenames, tracking URLs, and other common false positives.

Cost estimation

  • Uses Playwright (headful browser) for Google Maps — roughly $1-3 per 100 businesses depending on proxy usage.
  • Website email scraping uses lightweight Cheerio — adds minimal cost.
  • Typical run: 50 businesses with email scraping ≈ $0.50-1.50

Use cases — what the new features unlock

🎯 Sales prospecting

Sort leads by leadScore desc → outreach only to hot leads. Filter by leadReadiness === 'hot' for instant prioritization.

🎯 Tech-stack targeted campaigns

techStack.includes('Wix') && !techStack.includes('WooCommerce')

→ businesses on Wix without e-commerce — perfect target for "upgrade to WooCommerce + Shopify" pitches.

🎯 AI cold-outreach at scale

Loop over records, feed aiLeadProfile into a GPT-4 prompt, generate personalized email in 1 LLM call per lead.

🎯 Agency lead-gen

Filter industry === 'Food & Beverage' && cuisine === 'Italian' && businessStatus === 'operational' && leadReadiness !== 'dead' → Italian restaurant leads ready for outreach.

🎯 Expansion research

Group by websiteLanguage + industry → map market coverage by language.

🎯 Dead-data filtering

Drop businessStatus === 'permanently_closed' automatically — no more wasted outreach.

Tips for best results

  1. Use specific queries — "Italian restaurants in Manhattan, NYC" works better than just "restaurants"
  2. Residential proxies recommended — Google Maps is more likely to block datacenter IPs
  3. Lower concurrency if blocked — Reduce maxConcurrency to 2-3 if you see failures
  4. Use leadScore filtering — sort by score desc to focus on best prospects
  5. Plug aiLeadProfile into your LLM — skip the data-wrangling step entirely
  6. Check hasContactForm — businesses without scrapable emails often still accept contact via form

Email hit rates by market (from real test runs)

MarketSampleEmail Hit RatePrimary-email Domain Match
US restaurants (Manhattan)2065-70%50%
Hungarian dentists (Budapest)1553-67%40%
European small businesses50-60%40%

Business sites using contact-form-only UX (no email published anywhere) are the main reason for "no email" results — these are flagged as hasContactForm: true so you can still reach them.

Integrations

  • Zapier / Make — Automate lead flow to any app
  • Google Sheets — Export directly to spreadsheets
  • API access — Fetch results programmatically via the Apify API
  • Webhooks — Get notified when a run completes
  • Direct LLM consumption — Feed aiLeadProfile into OpenAI / Anthropic APIs for cold-email generation

Disclaimer: This section is general information, not legal advice. Consult qualified counsel for your specific use case and jurisdiction. The author is not responsible for how the extracted data is used.

What the scraper collects

Data typePrivacy classificationTypical legal basis
Business name, address, phone, website, hoursPublic business dataNo special basis needed
Coordinates, ratings, review counts, categoriesPublic business dataNo special basis needed
Generic emails (info@, contact@, sales@)Corporate contact info (GDPR Recital 14: not clearly "personal")Legitimate interest (B2B)
Personal emails (firstname.lastname@...)Personal data under GDPRLegitimate interest + opt-out, or consent
ownerNamePersonal data under GDPRLegitimate interest + opt-out, or consent
Social media profile URLsMixed — often personalLegitimate interest (if public profile)
  • Google's Terms of Service prohibit automated access — this is a contractual restriction, not criminal law. Enforcement is typically technical (IP / account bans), not legal action.
  • Courts have ruled (notably hiQ Labs v. LinkedIn, U.S. 9th Circuit 2022) that scraping publicly accessible data is generally not a violation of computer-misuse statutes like the CFAA.
  • EU case law (e.g. Ryanair v. PR Aviation) treats ToS violations as civil matters, not criminal.

Bottom line: scraping public business listings is not criminal in the U.S. or EU, but it does violate Google's ToS. Use residential proxies and respectful rate limits to minimize detection.

What you can do with the data

✅ Clearly permitted

  • Internal market research — competitor analysis, territory planning, aggregate statistics
  • B2B outreach to generic addresses (info@, sales@, contact@) — covered by legitimate interest under GDPR Art. 6(1)(f), provided you include a clear opt-out
  • Lead qualification and CRM enrichment for your own business
  • Academic / journalism research on market dynamics

⚠️ Requires careful compliance

  • B2B outreach to personal work emails — requires documented Legitimate Interest Assessment (LIA) + clear opt-out + respect for prior opt-outs
  • Reselling the dataset to third parties — you become a joint controller; proper contracts and data-subject rights required
  • Processing data of EU / UK / California residents — GDPR / UK GDPR / CCPA apply; privacy notice and data-subject rights workflow required

❌ Do not do this

  • Spam campaigns without opt-out — illegal under GDPR, CAN-SPAM (US), PECR (UK), Ekertv. (Hungary), CASL (Canada)
  • Selling personal data without lawful basis — GDPR violations, fines up to €20M or 4% of global turnover
  • Impersonating the data subject or using data for fraud / harassment
  • Bypassing robots.txt or explicit opt-out signals on business websites
  • Scraping facial or biometric data from social profiles (restricted globally)

Your responsibilities as the user

  1. Be the controller: when you run this actor, you are the data controller under GDPR. The actor author / Apify is a processor at most. You are responsible for:

    • Lawful basis (typically legitimate interest for B2B)
    • Privacy notice accessible to data subjects
    • Handling data-subject requests (access, erasure, objection)
    • Data retention limits (don't keep forever — delete when no longer needed)
    • Security of stored data
  2. Document your Legitimate Interest Assessment if you rely on Art. 6(1)(f). A simple 3-test LIA template:

    • Purpose test: Why do we need this data? (e.g. "prospecting for B2B sales")
    • Necessity test: Is scraping the least intrusive way? (e.g. "yes — the data is already public")
    • Balancing test: Do our interests outweigh the data subject's rights? (e.g. "yes for generic business contacts with opt-out; no for senior personal emails without prior relationship")
  3. Include opt-out in every outreach: an unsubscribe link or a "reply STOP" mechanism on every message. Suppress replied-opt-outs across all future campaigns.

  4. Respect suppression lists: never re-contact someone who has objected, even if they show up in a future scrape.

  5. Local rules: some jurisdictions (France, Germany, Italy) require prior opt-in for cold email even in B2B — check your target market's rules.

For Apify Store users

If you run this actor via the Apify Store, the data controller is you (the user), not Apify or the actor author. The per-event pricing covers infrastructure only; it does not transfer legal responsibility.

Useful references

One-sentence summary

Public business data → OK to scrape; personal data → handle per GDPR; unsolicited spam → always illegal; you (not the tool) are responsible for the use.