# Google Maps Opportunity & Lead Finder (`bourassteam/google-maps-opportunity-leads`) Actor

Scrape Google Maps businesses and instantly identify high-value sales opportunities: missing websites, unclaimed listings, low reviews, plus contact emails and socials.

- **URL**: https://apify.com/bourassteam/google-maps-opportunity-leads.md
- **Developed by:** [Ilyass Bourass](https://apify.com/bourassteam) (community)
- **Categories:** Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🎯 Google Maps Opportunity & High-Value Lead Finder

#### The Smart Lead Scraper Built for Web Agencies, SEO Specialists & Cold Outreach Pros

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?style=flat\&logo=apify)](https://apify.com)
[![Model Context Protocol](https://img.shields.io/badge/MCP-Compatible-blue)](https://mcp.apify.com)
[![Pricing](https://img.shields.io/badge/Pricing-Pay--Per--Event%20\($0.002\)-brightgreen)](#pricing)
[![Data Quality](https://img.shields.io/badge/Data%20Enrichment-Emails%20%2B%20Socials-purple)](#features)

***

### ⚡ Why Most Google Maps Scrapers Waste Your Time

Traditional Google Maps scrapers dump thousands of random, unvetted business rows. When you reach out to them:

- ❌ 85% already have modern $10,000 websites and in-house marketing teams.
- ❌ You burn hours manually checking Google Maps profiles to see who actually needs help.
- ❌ Raw scrapers don't extract direct contact emails or social media profiles.

**This Actor is different.** It is designed around **Opportunity Intelligence**. It automatically identifies and scores businesses with acute digital pain points—businesses that are **ready to buy**:

| Opportunity Tag | The Real-World Pain Point | Who Buys This Lead? |
|---|---|---|
| 🚨 `NO_WEBSITE` | Active business on Google Maps with **zero website**. | Web design & development agencies. |
| 🛡️ `UNCLAIMED_GBP` | Unclaimed & unverified Google Business Profile. | Local SEO agencies & Google My Business managers. |
| ⭐ `LOW_RATING` | Rating under 4.3 stars with unhappy customer reviews. | Review management & ORM software vendors. |
| 📉 `LOW_REVIEW_COUNT` | Established local business with fewer than 15 reviews. | Automated review funnels & marketing consultants. |

***

### 🚀 Key Features

- **Instant Opportunity Scoring (0–100+)**: Every single lead is tagged with its actionable weaknesses so you can segment your email campaigns automatically.
- **Deep Website & Social Enrichment**: Real-time extraction of:
  - 📧 Direct contact emails (`info@`, `contact@`, `sales@`, etc.)
  - 📘 Facebook pages
  - 📷 Instagram profiles
  - 💼 LinkedIn company handles
  - 🐦 Twitter / X accounts
- **Anti-Bot & Stealth Engine**: Runs on headless browser technology with rotating proxies and dynamic DOM resilience to ensure 0 IP bans.
- **Filter for Pure Opportunities**: Toggle `onlyOpportunities` to filter out every business that already has a healthy online presence and get a 100% actionable prospect list.
- **AI & MCP Compatible**: Natively exposed on the Model Context Protocol (`mcp.apify.com`) so your autonomous AI sales agents can run lead searches dynamically.

***

### 📊 Feature Comparison

| Feature | Generic Maps Scrapers | Outscraper / Apollo | **Our Opportunity Extractor** |
|---|:---:|:---:|:---:|
| Google Maps Place Data | ✅ | ✅ | ✅ |
| **Missing Website Detection (`NO_WEBSITE`)** | ❌ | ❌ | **✅ Built-in** |
| **Unclaimed Listing Check (`UNCLAIMED_GBP`)** | ❌ | ❌ | **✅ Built-in** |
| **Opportunity Scoring (0–100)** | ❌ | ❌ | **✅ Built-in** |
| Real-time Contact Email & Socials | Rare / Add-on | Add-on ($$$) | **✅ Included** |
| Model Context Protocol (MCP) AI Support | ❌ | ❌ | **✅ Native** |
| Pricing Model | High Monthly Sub | Credits / Seat | **Pay-Per-Lead ($0.002)** |

***

### 📥 Input Settings

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQuery` | String | `"plumbers in Austin TX"` | Niche and target geography. |
| `maxItems` | Integer | `30` | Number of leads to extract (up to 5,000 per run). |
| `onlyOpportunities` | Boolean | `false` | When `true`, returns ONLY businesses with missing websites, unclaimed profiles, or poor ratings. |
| `enrichSocials` | Boolean | `true` | Scans target websites for direct emails and social profiles. |

***

### 📤 Sample Output JSON

```json
[
  {
    "name": "Presto Painting Services Tampa Bay",
    "category": "Painter",
    "phone": "+1 813-555-0199",
    "address": "Tampa, FL 33602, United States",
    "website": null,
    "has_website": false,
    "is_claimed": false,
    "rating": 3.8,
    "reviews_count": 4,
    "opportunity_tags": [
      "NO_WEBSITE",
      "UNCLAIMED_GBP",
      "LOW_RATING",
      "LOW_REVIEW_COUNT"
    ],
    "opportunity_score": 105,
    "email": null,
    "facebook": null,
    "instagram": null,
    "linkedin": null,
    "twitter": null
  },
  {
    "name": "Elite Roofing Solutions",
    "category": "Roofing contractor",
    "phone": "+1 469-555-0142",
    "address": "Dallas, TX 75201, United States",
    "website": "https://eliteroofing.com",
    "has_website": true,
    "is_claimed": true,
    "rating": 4.9,
    "reviews_count": 128,
    "opportunity_tags": [
      "STANDARD_CLIENT"
    ],
    "opportunity_score": 0,
    "email": "info@eliteroofing.com",
    "facebook": "https://facebook.com/eliteroofing",
    "instagram": "https://instagram.com/eliteroofing",
    "linkedin": null,
    "twitter": null
  }
]
```

***

### 🤖 Running via AI Agents (Model Context Protocol / MCP)

You can call this Actor directly inside Cursor, Claude Desktop, or custom Python agents:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_USERNAME/google-maps-opportunity-leads").call(run_input={
    "searchQuery": "dentists in Miami FL",
    "maxItems": 50,
    "onlyOpportunities": True,
    "enrichSocials": True
})

dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
print(f"Extracted {len(dataset_items)} high-opportunity leads!")
```

***

### ❓ Frequently Asked Questions (FAQ)

##### How do I export my leads to Excel or Google Sheets?

Once your Actor run completes in the Apify Console, click the **Export** button in the top right. You can download your data instantly as **CSV, Excel (.xlsx), or JSON**.

##### Can I use this for any country or language?

Yes. The scraper supports international locations, postal codes, and multilingual business names across the globe.

##### How does Pay-Per-Event (PPE) work?

You only pay for what you extract at a transparent rate of **$0.002 per lead** ($2.00 per 1,000 qualified leads). No expensive monthly recurring software lock-ins.

# Actor input Schema

## `searchQuery` (type: `string`):

Enter the business niche and location (e.g. 'plumbers in Austin TX' or 'italian restaurants in Miami FL')

## `maxItems` (type: `integer`):

Maximum number of business listings to scrape and analyze (e.g. 50, 100, 500).

## `onlyOpportunities` (type: `boolean`):

If enabled, filters out standard businesses and only outputs leads with missing websites, unclaimed Google profiles, or low review scores.

## `enrichSocials` (type: `boolean`):

Visits the company website in real-time to discover contact emails, Facebook, Instagram, LinkedIn, and Twitter/X handles.

## `useProxy` (type: `boolean`):

Recommended for high-volume extractions (over 500 leads). Requires active Apify proxy access.

## Actor input object example

```json
{
  "searchQuery": "plumbers in Austin TX",
  "maxItems": 30,
  "onlyOpportunities": false,
  "enrichSocials": true,
  "useProxy": false
}
```

# Actor output Schema

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

Direct link to JSON/CSV dataset containing all extracted leads, verified contacts, and sales opportunity tags.

# 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 = {
    "searchQuery": "plumbers in Austin TX"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bourassteam/google-maps-opportunity-leads").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 = { "searchQuery": "plumbers in Austin TX" }

# Run the Actor and wait for it to finish
run = client.actor("bourassteam/google-maps-opportunity-leads").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 '{
  "searchQuery": "plumbers in Austin TX"
}' |
apify call bourassteam/google-maps-opportunity-leads --silent --output-dataset

```

## MCP server setup

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

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/Jr2Qo2cw5Pe6q5l9j/builds/FVEdPEbGkfVO6MCys/openapi.json
