# Google Maps Lead Enricher - Emails, Tech Stack & Socials (`groupoject/google-maps-lead-enricher`) Actor

Enrich Google Maps business datasets with emails, social links, website tech stack, contact pages, SEO metadata, and lead scores for local B2B prospecting.

- **URL**: https://apify.com/groupoject/google-maps-lead-enricher.md
- **Developed by:** [Group Oject](https://apify.com/groupoject) (community)
- **Categories:** Lead generation, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 enriched business leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Maps Lead Enricher - Emails, Tech Stack & Socials

Turn Google Maps scraper output into a lead-ready prospecting dataset.

This Actor reads Google Maps business records from an Apify dataset, pasted JSON/CSV records, or direct website URLs. It enriches each business website with public emails, social profiles, website technology, contact pages, SEO metadata, and a lead score.

It is built for agencies, local SEO teams, sales teams, SaaS companies, ecommerce tools, recruiters, and consultants who already collect local businesses but need better contact and qualification data.

### Why use it

Google Maps scrapers are great at finding businesses. This Actor helps answer the next sales question: which businesses are worth contacting, and how can you reach them?

### What it extracts

- Original business name, category, address, phone, rating, reviews, and Maps URL when present
- Website domain, final URL, page title, H1, and meta description
- Public business-domain emails and phone numbers
- LinkedIn, X/Twitter, Facebook, Instagram, YouTube, and TikTok links
- Contact, about, pricing, sales, demo, services, and company pages
- CMS: WordPress, Webflow, Wix, Squarespace
- Ecommerce: Shopify, WooCommerce, Magento, BigCommerce
- Analytics and ad pixels: Google Tag Manager, GA4, Meta Pixel, TikTok Pixel, LinkedIn Insight Tag, Hotjar
- CRM, marketing, and chat tools: HubSpot, Salesforce Pardot, Marketo, Klaviyo, Mailchimp, Segment, Intercom, Drift, Zendesk, Crisp
- Payments and infrastructure: Stripe, PayPal, Cloudflare, Vercel
- Lead score from 0 to 100

### Input options

Use any of these:

1. Google Maps dataset IDs from Apify scraper runs.
2. Business records JSON/CSV pasted directly into the input.
3. Website URLs as a fallback for direct enrichment.

Private Apify datasets require an Apify API token in the encrypted token field. Public datasets and pasted records do not.

```json
{
  "datasetIds": ["YOUR_GOOGLE_MAPS_DATASET_ID"],
  "apifyApiToken": "YOUR_APIFY_TOKEN_IF_THE_DATASET_IS_PRIVATE",
  "maxBusinesses": 100,
  "includeLinkedPages": true,
  "maxPagesPerSite": 4,
  "extractEmails": true,
  "extractPhones": true,
  "detectTechnologies": true
}
```

Example pasted business records:

```json
[
  {
    "title": "Example Dental",
    "categoryName": "Dentist",
    "website": "https://exampledental.com",
    "phone": "+1 555 123 4567",
    "address": "New York, NY",
    "rating": 4.8,
    "reviewsCount": 120
  }
]
```

### Output

Each dataset item is one enriched local business lead.

```json
{
  "businessName": "Example Dental",
  "businessCategory": "Dentist",
  "address": "New York, NY",
  "rating": 4.8,
  "reviewsCount": 120,
  "domain": "exampledental.com",
  "leadScore": 86,
  "emails": ["info@exampledental.com"],
  "mapsPhone": "+1 555 123 4567",
  "linkedinUrl": "https://www.linkedin.com/company/example-dental",
  "contactPageUrl": "https://exampledental.com/contact",
  "technologies": ["WordPress", "Google Tag Manager", "Meta Pixel"]
}
```

### Pricing

One result equals one enriched business lead written to the default dataset.

Recommended workflow:

- Run a Google Maps scraper for a category and city
- Copy the dataset ID into this Actor
- Export enriched leads to CSV, Google Sheets, CRM, or your outreach system

### Notes

This Actor only reads public website pages. Some businesses do not have a website, hide email addresses, or block crawlers. Use `Skip businesses without websites` if you only want enriched records with website data.

# Actor input Schema

## `datasetIds` (type: `array`):

Apify dataset IDs from Google Maps scraper runs. The Actor will read business names, websites, phones, addresses, ratings, and categories, then enrich each website.

## `apifyApiToken` (type: `string`):

Optional. Required only when the Google Maps dataset is private. Create a token in Apify Settings > Integrations.

## `businessRecordsText` (type: `string`):

Paste Google Maps-style business records as JSON array, JSON lines, or CSV. Supported fields include title/name, website/url, phone, address, category, rating, reviewsCount, and placeUrl.

## `urls` (type: `array`):

Website URLs to enrich when you do not have a Google Maps dataset yet.

## `urlsText` (type: `string`):

Paste one company website per line, or comma-separated.

## `maxBusinesses` (type: `integer`):

Maximum businesses to enrich and output. Default is 100 so test runs stay predictable.

## `skipBusinessesWithoutWebsite` (type: `boolean`):

If enabled, output only records with a website URL that can be enriched.

## `datasetItemLimit` (type: `integer`):

Maximum records to read from each input dataset.

## `includeLinkedPages` (type: `boolean`):

Also scan high-value same-domain pages such as contact, about, pricing, company, team, menu, services, and location pages.

## `maxPagesPerSite` (type: `integer`):

Maximum pages to fetch per website when key-page crawling is enabled.

## `extractEmails` (type: `boolean`):

Find public email addresses and common obfuscated email formats.

## `extractPhones` (type: `boolean`):

Find public phone numbers from the pages scanned.

## `detectTechnologies` (type: `boolean`):

Detect CMS, ecommerce, analytics, ads, chat, CRM, payment, and marketing tools.

## `requestDelayMs` (type: `integer`):

Delay after each website request.

## `maxConcurrency` (type: `integer`):

Number of websites to enrich in parallel.

## `proxyConfiguration` (type: `object`):

Optional proxy configuration. Most public websites work without a proxy.

## `debugMode` (type: `boolean`):

Verbose logging.

## Actor input object example

```json
{
  "datasetIds": [],
  "urls": [
    "https://www.hubspot.com",
    "https://www.shopify.com",
    "https://zapier.com"
  ],
  "maxBusinesses": 100,
  "skipBusinessesWithoutWebsite": false,
  "datasetItemLimit": 1000,
  "includeLinkedPages": true,
  "maxPagesPerSite": 4,
  "extractEmails": true,
  "extractPhones": true,
  "detectTechnologies": true,
  "requestDelayMs": 250,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debugMode": false
}
```

# Actor output Schema

## `leads` (type: `string`):

One enriched local business lead per row.

## `summary` (type: `string`):

Totals, submitted leads, output leads, and failed enrichments.

## `errors` (type: `string`):

Business records or websites that failed to load or parse.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "datasetIds": [],
    "urls": [
        "https://www.hubspot.com",
        "https://www.shopify.com",
        "https://zapier.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("groupoject/google-maps-lead-enricher").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "datasetIds": [],
    "urls": [
        "https://www.hubspot.com",
        "https://www.shopify.com",
        "https://zapier.com",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("groupoject/google-maps-lead-enricher").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "datasetIds": [],
  "urls": [
    "https://www.hubspot.com",
    "https://www.shopify.com",
    "https://zapier.com"
  ]
}' |
apify call groupoject/google-maps-lead-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,groupoject/google-maps-lead-enricher"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/FDxENc6sJf0zxi4gy/builds/Xqr2FuRPZv5k8OCPO/openapi.json
