# Fast Google Maps Business Scraper API | Full Profiles & Data (`theagents/google-maps-business`) Actor

Extract comprehensive business profiles from Google Maps with lightning speed. Our scraper delivers complete company data including contact info, hours, ratings, and amenities. Perfect for building databases, market research, and competitive analysis across Google's vast business ecosystem.

- **URL**: https://apify.com/theagents/google-maps-business.md
- **Developed by:** [Agents](https://apify.com/theagents) (community)
- **Categories:** Developer tools, Lead generation, Other
- **Stats:** 161 total users, 3 monthly users, 100.0% runs succeeded, 10 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#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

## Fast Google Maps Business Profile Scraper API: Extract Complete Business Data, Contact Info & Operating Hours

The **Google Maps Business Scraper** is an Apify Actor that extracts comprehensive business profiles from Google Maps—including full descriptions, addresses, phone numbers, websites, star ratings, review counts, review score distributions, operating hours, business categories, GPS coordinates, service options, accessibility info, dining details, amenities, atmosphere tags, and payment methods. This **google maps business profile scraper api** collects 40+ structured data fields per business without requiring a Google Places API key.

**Why this scraper instead of the Google Places API?** The Google Places API charges separately for Place Details ($17/1,000 requests), requires API key setup with billing, and doesn't return review score distributions or detailed service attributes in a single call. This scraper delivers the complete business profile—including the full `additionalInfo` object with 15+ attribute categories—at **$0.05 per single business** or **$0.016 per list query** plus $0.0004/item.

Use this **google maps business data extractor** for competitor profiling, business database building, market research, or due diligence. **Download Google Maps business profiles** to JSON, CSV, or Excel for CRM enrichment, location analytics, and competitive benchmarking.

**Pricing:** $0.016/list query | $0.05/single item query | $0.0004/business profile | **No Google API key required**

***

### Table of Contents

1. [What Does the Google Maps Business Scraper Do?](#what-does-the-google-maps-business-scraper-do)
2. [Features and Capabilities](#features-and-capabilities)
3. [Pricing](#pricing)
4. [Input Parameters](#input-parameters)
5. [Output Format and Data Fields](#output-format-and-data-fields)
6. [Custom Map Function](#custom-map-function)
7. [AI Agent Integration via MCP](#ai-agent-integration-via-mcp)
8. [Related Tools](#related-tools)
9. [Demo Mode and Free Testing](#demo-mode-and-free-testing)
10. [Automated Scheduling and Monitoring](#automated-scheduling-and-monitoring)
11. [Quick Start Guide](#quick-start-guide)
12. [Use Cases and Industries](#use-cases-and-industries)
13. [Troubleshooting](#troubleshooting)
14. [Frequently Asked Questions](#frequently-asked-questions)
15. [Contact](#contact)

***

### What Does the Google Maps Business Scraper Do?

**Google Maps business profile extraction** is the automated process of collecting detailed company information—contact details, operating hours, ratings, review distributions, service attributes, and location metadata—from individual Google Maps business listings. Unlike search scrapers that discover businesses by keyword, this tool extracts **deep profiles** from specific businesses you've already identified.

The **Agents Google Maps Business Scraper** is a high-performance data extraction tool built to scrape complete business profiles from Google Maps using direct URLs or place FIDs. Extract 40+ structured fields per business quickly and reliably—without needing the Google Places API, API keys, or complex authentication.

This tool serves as a practical alternative to the official Google Places API Place Details endpoint. The Places API charges $17 per 1,000 Place Details requests and requires multiple API calls to get the full picture—this Actor delivers the complete profile, including review distributions and detailed service attributes, in a single extraction.

#### What You Get From Every Business Profile

When you extract a Google Maps business profile, you receive:

**Business Identity and Description**

- Business name and full text description
- Primary category and all associated categories (e.g., "Mediterranean restaurant", "Caterer", "Kebab shop")
- Price range indicator (e.g., "$20–30")

**Contact Information**

- Website URL
- Phone number (formatted and unformatted)
- Plus Code (Google's location encoding)

**Location and Address**

- Full address, street, neighborhood, district, postal code, city
- GPS coordinates (latitude, longitude)
- Direct Google Maps URL

**Ratings and Review Distribution**

- Aggregate star rating (e.g., 4.7)
- Total review count
- Review score distribution (count of 1-star, 2-star, 3-star, 4-star, 5-star reviews)

**Operating Hours**

- Full weekly schedule with day-by-day hours

**Additional Business Attributes (additionalInfo)**

- Service options (dine-in, takeout, delivery, curbside pickup)
- Accessibility (wheelchair accessible entrance, restroom, seating)
- Offerings (alcohol, vegan options, halal food, healthy options, etc.)
- Dining options (breakfast, brunch, lunch, dinner, catering, table service)
- Amenities (Wi-Fi, restroom, gender-neutral restroom)
- Atmosphere (casual, cozy, etc.)
- Crowd suitability (groups, tourists)
- Planning (accepts reservations)
- Payment methods (credit cards, debit cards, NFC mobile payments)
- Children (good for kids, high chairs, kids' menu, changing tables)
- Parking (free street parking, paid street parking)
- Highlights (fast service, etc.)
- Popular for (lunch, dinner, solo dining)

**Technical Identifiers**

- Google Place ID, CID, FID
- Extraction timestamp (ISO 8601)

***

### Features and Capabilities

#### Input Flexibility

| Input Type     | Example                                 | Best For                                                 |
| -------------- | --------------------------------------- | -------------------------------------------------------- |
| **Direct URL** | `https://www.google.com/maps/place/...` | Extracting from a specific Google Maps business page     |
| **Place FID**  | `0x808587fdf883162f:0x7eb924725715409e` | Batch processing with efficient identifier-based lookups |

#### Core Features

- **Deep Profile Extraction** — 40+ fields per business including full description and service attributes
- **Review Score Distribution** — Breakdown of 1-star through 5-star review counts
- **Additional Business Attributes** — 15+ attribute categories (service options, accessibility, offerings, amenities, atmosphere, payments, parking, and more)
- **Dual Input Methods** — Target businesses by URL or FID for maximum flexibility
- **Language Support** — Extract business info in any language
- **No API Key** — No Google Places API key or OAuth setup required
- **Multiple Export Formats** — JSON, CSV, Excel direct download
- **Custom Transformations** — Reshape output with custom JavaScript map functions
- **API Integration** — RESTful API for Python, Node.js, or any HTTP client
- **Scheduled Runs** — Automate recurring extraction for profile monitoring

***

### Pricing

#### Event-Based Cost Structure

Pay only for what you scrape—no subscriptions, no hidden fees. This **google maps business scraper** uses transparent pay-per-event pricing:

| Event Type            | Price           | Description                      |
| --------------------- | --------------- | -------------------------------- |
| **List Query**        | $0.016/query    | For batch extractions from lists |
| **Single Item Query** | $0.05/query     | For individual business lookups  |
| **Dataset Item**      | $0.0004/profile | Each business profile in results |

#### Cost Comparison: This Scraper vs. Google Places API

| Feature                     | This Scraper                  | Google Places API               |
| --------------------------- | ----------------------------- | ------------------------------- |
| **Cost per 1,000 profiles** | ~$0.40 (items) + query fee    | $17.00 (Place Details)          |
| **Review distribution**     | Included (1–5 star breakdown) | Not available                   |
| **Service attributes**      | 15+ categories included       | Requires separate calls         |
| **API key required**        | No                            | Yes (with billing)              |
| **Full description text**   | Included                      | Requires separate call          |
| **Operating hours**         | Included                      | Requires Place Details call ($) |

> **Example:** Extracting 1,000 complete business profiles with a list query costs approximately **$0.42** with this scraper vs. **$17.00** with Google Places API Place Details—a **97.5% cost reduction**.

***

### Input Parameters

| Field               | Type   | Description                                                                                | Default    |
| ------------------- | ------ | ------------------------------------------------------------------------------------------ | ---------- |
| `startUrls`         | array  | Direct Google Maps business URLs from which to extract detailed information                | `[]`       |
| `placeFIDs`         | array  | Google Maps place FIDs to scrape (alternative to URLs)                                     | `[]`       |
| `language`          | string | Language code for business information (e.g., `en` for English)                            | `en`       |
| `maxItems`          | number | Maximum number of business profiles to extract                                             | `Infinity` |
| `customMapFunction` | string | JavaScript function to transform each business object (transformation only, not filtering) | `null`     |

#### Input Examples

**Single Business — By URL:**

```json
{
    "startUrls": ["https://www.google.com/maps/place/Presidio+Kebab+Mediterranean+Restaurant"],
    "language": "en"
}
```

**Batch Processing — By FID:**

```json
{
    "placeFIDs": [
        "0x808587fdf883162f:0x7eb924725715409e",
        "0x89c25a1b1e437c51:0x4b3e15b60c84b8e5"
    ],
    "language": "en",
    "maxItems": 100
}
```

**Multi-Language — International Market Research:**

```json
{
    "startUrls": ["https://www.google.com/maps/place/..."],
    "language": "de"
}
```

***

### Output Format and Data Fields

Each extracted business profile is a structured JSON object containing 40+ fields. Here is a trimmed sample:

```json
{
  "type": "place",
  "url": "https://www.google.com/maps/preview/place/Presidio+Kebab+Mediterranean+Restaurant...",
  "title": "Presidio Kebab Mediterranean Restaurant",
  "description": "Welcome to Presidio Kebab Mediterranean Restaurant in Presidio Heights...",
  "address": "Presidio Kebab Mediterranean Restaurant, 3277 Sacramento St, San Francisco, CA 94115",
  "neighborhood": "Presidio Heights",
  "street": "3277 Sacramento St",
  "district": "San Francisco",
  "postalCode": "94115",
  "city": "California",
  "location": { "lat": 37.788157554101765, "lng": -122.44965044944632 },
  "website": "https://www.presidiokebabsf.com/",
  "phone": "(415) 947-7163",
  "phoneUnformatted": "+14159477163",
  "plusCode": "QHQ3+67 Presidio Heights, San Francisco, CA",
  "price": "$20–30",
  "totalScore": 4.7,
  "placeId": "ChIJLxaD-P2HhYARnkAVV3IkuX4",
  "cid": "9131369792976273566",
  "fid": "0x808587fdf883162f:0x7eb924725715409e",
  "scrapedAt": "2025-06-12T23:29:59.859Z",
  "reviewsCount": 537,
  "reviewsDistribution": {
    "oneStar": 11, "twoStar": 8, "threeStar": 14, "fourStar": 47, "fiveStar": 457
  },
  "categories": ["Mediterranean restaurant", "Caterer", "Greek restaurant", "Kebab shop", "Restaurant"],
  "categoryName": "Mediterranean restaurant",
  "openingHours": [
    { "day": "Monday", "hours": "11 AM–8:30 PM" },
    { "day": "Tuesday", "hours": "11 AM–9 PM" }
  ],
  "additionalInfo": {
    "Service options": { "Dine-in": true, "Takeout": true, "Delivery": true },
    "Accessibility": { "Wheelchair accessible entrance": true },
    "Offerings": { "Halal food": true, "Vegan options": true, "Vegetarian options": true },
    "Payments": { "Credit cards": true, "NFC mobile payments": true },
    "Children": { "Good for kids": true, "High chairs": true }
  }
}
```

#### Complete Field Reference

| Field                 | Type   | Description                                                                                                                                                                |
| --------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`                | string | Entry type (always `"place"`)                                                                                                                                              |
| `url`                 | string | Direct Google Maps URL                                                                                                                                                     |
| `title`               | string | Business name                                                                                                                                                              |
| `description`         | string | Full business description text                                                                                                                                             |
| `address`             | string | Full formatted address                                                                                                                                                     |
| `neighborhood`        | string | Neighborhood or district name                                                                                                                                              |
| `street`              | string | Street address                                                                                                                                                             |
| `district`            | string | District/city area                                                                                                                                                         |
| `postalCode`          | string | Postal/ZIP code                                                                                                                                                            |
| `city`                | string | City or state name                                                                                                                                                         |
| `location`            | object | GPS coordinates (`lat`, `lng`)                                                                                                                                             |
| `website`             | string | Business website URL                                                                                                                                                       |
| `phone`               | string | Formatted phone number                                                                                                                                                     |
| `phoneUnformatted`    | string | Phone number in E.164 format                                                                                                                                               |
| `plusCode`            | string | Google Plus Code for the location                                                                                                                                          |
| `price`               | string | Price range indicator (e.g., "$20–30")                                                                                                                                     |
| `totalScore`          | number | Aggregate star rating (1.0–5.0)                                                                                                                                            |
| `placeId`             | string | Google Place ID                                                                                                                                                            |
| `cid`                 | string | Google CID identifier                                                                                                                                                      |
| `fid`                 | string | Google FID identifier                                                                                                                                                      |
| `scrapedAt`           | string | ISO 8601 extraction timestamp                                                                                                                                              |
| `reviewsCount`        | number | Total number of Google reviews                                                                                                                                             |
| `reviewsDistribution` | object | Count of 1-star, 2-star, 3-star, 4-star, 5-star reviews                                                                                                                    |
| `categories`          | array  | All business category tags                                                                                                                                                 |
| `categoryName`        | string | Primary business category                                                                                                                                                  |
| `openingHours`        | array  | Day-by-day operating schedule                                                                                                                                              |
| `additionalInfo`      | object | 15+ attribute categories (service options, accessibility, offerings, dining, amenities, atmosphere, crowd, planning, payments, children, parking, highlights, popular for) |

#### Data Fields by Use Case

| Use Case                   | Key Fields                                                                            |
| -------------------------- | ------------------------------------------------------------------------------------- |
| **Competitor Profiling**   | `title`, `totalScore`, `reviewsCount`, `reviewsDistribution`, `categories`, `price`   |
| **CRM Enrichment**         | `title`, `phone`, `phoneUnformatted`, `website`, `address`, `categories`              |
| **Due Diligence**          | `description`, `totalScore`, `reviewsDistribution`, `openingHours`, `additionalInfo`  |
| **Location Intelligence**  | `location`, `neighborhood`, `district`, `postalCode`, `categories`                    |
| **Accessibility Auditing** | `additionalInfo.Accessibility`, `additionalInfo.Children`, `additionalInfo.Parking`   |
| **Market Research**        | `categories`, `price`, `totalScore`, `reviewsCount`, `additionalInfo.Service options` |

***

### Custom Map Function

Transform each business profile before it's saved to the dataset. The `customMapFunction` parameter accepts a JavaScript function that reshapes every business object. Use this to extract specific fields, rename properties, or compute derived values.

**Important:** The custom map function is for **transformation only**, not filtering. Every business will still be saved—you're changing its shape, not deciding whether to include it.

#### Example: Flatten for CRM Import

```javascript
(business) => ({
    companyName: business.title,
    phone: business.phoneUnformatted,
    website: business.website,
    address: business.address,
    city: business.district,
    postalCode: business.postalCode,
    rating: business.totalScore,
    reviewCount: business.reviewsCount,
    category: business.categoryName,
    priceRange: business.price
})
```

#### Example: Extract Review Health Score

```javascript
(business) => ({
    name: business.title,
    rating: business.totalScore,
    totalReviews: business.reviewsCount,
    fiveStarPercent: business.reviewsDistribution
        ? Math.round((business.reviewsDistribution.fiveStar / business.reviewsCount) * 100)
        : null,
    oneStarPercent: business.reviewsDistribution
        ? Math.round((business.reviewsDistribution.oneStar / business.reviewsCount) * 100)
        : null,
    categories: business.categories?.join(", ")
})
```

***

### AI Agent Integration via MCP

Apify provides a hosted **Model Context Protocol (MCP) server** at `mcp.apify.com` that allows AI agents and LLM-based applications to discover and run Apify Actors as tools—including this Google Maps Business Scraper.

#### What This Means

If you're building AI agents using Claude Desktop, VS Code with MCP support, or any framework that implements the MCP specification, you can give your agent the ability to extract detailed Google Maps business profiles autonomously. The agent can call this scraper as a tool, receive structured JSON results, and use them in downstream reasoning.

#### How to Connect

Add this scraper to your MCP client configuration:

```
https://mcp.apify.com?tools=agents/google-maps-business
```

Or use the CLI for local development:

```bash
npx @apify/actors-mcp-server --tools agents/google-maps-business
```

#### Use Cases for AI Agent Integration

- **Automated due diligence** — An AI agent receives a list of business URLs, extracts full profiles, and generates a comparative analysis report with review health scores and service attribute summaries.
- **CRM enrichment pipelines** — Feed business FIDs into the scraper, then have the agent format and push contact data, categories, and ratings directly into your CRM.
- **Multi-step research workflows** — Combine this scraper with the [Google Maps Search Scraper](https://apify.com/agents/google-maps-search?fpr=yhdrb) in a single agent pipeline: first discover businesses by keyword, then extract their full profiles.

For full setup instructions, see the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

***

### Related Tools

#### Agents Data Intelligence Suite

All tools below are built and maintained by [Agents](https://apify.com/agents?fpr=yhdrb)—a team of ex-Big Tech engineers, former ad agency strategists, and data specialists delivering intelligence, precision, and impact at scale.

| Tool                                                                                      | What It Extracts                                                 | Best For                                         |
| ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ |
| **Google Maps Business Scraper**                                                          | Full business profiles, contact, attributes, review distribution | Deep profiling, due diligence **(You are here)** |
| **[Google Maps Search Scraper](https://apify.com/agents/google-maps-search?fpr=yhdrb)**   | Business listings from keyword searches                          | Lead generation, discovery                       |
| **[Google Maps Reviews Scraper](https://apify.com/agents/google-maps-reviews?fpr=yhdrb)** | Reviews, ratings, reviewer profiles, location data               | Sentiment analysis, reputation monitoring        |
| **[Google Play Reviews Scraper](https://apify.com/agents/googleplay-reviews?fpr=yhdrb)**  | App reviews, ratings, developer replies                          | App intelligence                                 |
| **[Trustpilot Reviews Scraper](https://apify.com/agents/trustpilot-reviews?fpr=yhdrb)**   | Reviews, TrustScores, company replies                            | SaaS/B2B analysis                                |
| **[Yelp Reviews Scraper](https://apify.com/agents/yelp-reviews?fpr=yhdrb)**               | Reviews, ratings, reviewer profiles                              | Restaurant/hospitality                           |
| **[Yelp Business Scraper](https://apify.com/agents/yelp-business?fpr=yhdrb)**             | Business profiles, ratings, contact                              | Business data, prospecting                       |
| **[TripAdvisor Reviews Scraper](https://apify.com/agents/tripadvisor-reviews?fpr=yhdrb)** | Hotel/restaurant reviews, ratings                                | Hospitality intelligence                         |

#### Google Maps Business Scraper vs. Google Maps Search Scraper

| Feature                 | Business Scraper (This Tool)       | Search Scraper                              |
| ----------------------- | ---------------------------------- | ------------------------------------------- |
| **Input**               | Specific URLs or FIDs              | Keyword searches                            |
| **Use case**            | Deep profiling of known businesses | Discovering businesses by category/location |
| **Fields per business** | 40+ (including additionalInfo)     | 20+                                         |
| **Review distribution** | Yes (1–5 star breakdown)           | No                                          |
| **Full description**    | Yes                                | No                                          |
| **Service attributes**  | 15+ categories                     | No                                          |
| **Best workflow**       | Use after Search to enrich results | Use first to discover businesses            |

***

### Demo Mode and Free Testing

You can test this **google maps business scraper** on Apify's Free plan. Validate the output format, data quality, and field coverage before scaling to larger batch runs.

**How to Test:**

- Run the scraper with a single business URL to see the full output structure
- Verify the `additionalInfo` object contains the attribute categories you need
- Test language switching to confirm multilingual support
- Try the `customMapFunction` with a sample transformation

***

### Automated Scheduling and Monitoring

Business profiles change over time—hours update, ratings shift, new reviews appear, and service offerings evolve. For accurate business intelligence, set up automated recurring runs to keep your data current.

#### Why Schedule Profile Extraction?

- **Rating monitoring** — Track how business ratings and review distributions change over time
- **Competitor surveillance** — Detect when competitors update hours, add services, or change pricing
- **Data freshness** — Ensure your business database always reflects the latest information
- **Profile change alerts** — Combine with webhooks to trigger notifications when key fields change
- **Agency reporting** — Automated data for client competitive intelligence dashboards

#### How to Set Up Scheduled Runs

1. Open the Actor in Apify Console
2. Configure your input parameters (startUrls or placeFIDs, language)
3. Click **Schedule** and set frequency (daily, weekly, monthly)
4. Optionally add a **webhook** to push new data to your pipeline

#### Webhook Integration

Combine scheduled runs with webhooks to build fully automated monitoring:

```
Scheduled Run → Profiles Extracted → Webhook fires → Your system receives data
```

Use webhooks to trigger:

- Database updates with refreshed business data
- Slack alerts when a competitor's rating drops or rises
- CRM syncs with updated contact information
- Dashboard refreshes for market intelligence reports

***

### Quick Start Guide

#### For Non-Technical Users (Apify Console)

1. Go to **[Google Maps Business Scraper](https://apify.com/agents/google-maps-business?fpr=yhdrb)** on Apify
2. Click **Try for free**
3. Paste a Google Maps business URL into the `startUrls` field
4. Click **Start** and wait for results
5. **Export Google Maps business data to CSV** from the Storage tab

#### For Developers (Python API)

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("agents/google-maps-business").call(run_input={
    "startUrls": ["https://www.google.com/maps/place/Presidio+Kebab+Mediterranean+Restaurant"],
    "language": "en"
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

#### For Business Intelligence Teams (Batch FID Processing)

```json
{
    "placeFIDs": [
        "0x808587fdf883162f:0x7eb924725715409e",
        "0x89c25a1b1e437c51:0x4b3e15b60c84b8e5",
        "0x80dcab3949a7c3f3:0x6a2e50b2c0a3e8d1"
    ],
    "language": "en",
    "maxItems": 50
}
```

> Use FIDs for batch processing—they're more efficient than URLs for large-scale operations. Combine with the [Google Maps Search Scraper](https://apify.com/agents/google-maps-search?fpr=yhdrb) to first discover business FIDs, then extract full profiles here.

#### For Competitor Analysis (Custom Map for Review Health)

```json
{
    "startUrls": ["https://www.google.com/maps/place/..."],
    "customMapFunction": "(b) => ({ name: b.title, rating: b.totalScore, reviews: b.reviewsCount, fiveStarPct: b.reviewsDistribution ? Math.round((b.reviewsDistribution.fiveStar / b.reviewsCount) * 100) : null, oneStarPct: b.reviewsDistribution ? Math.round((b.reviewsDistribution.oneStar / b.reviewsCount) * 100) : null, category: b.categoryName })"
}
```

> Calculate review health percentages inline with the custom map function. Export to CSV for side-by-side competitor comparison.

***

### Use Cases and Industries

#### Competitor Profiling and Benchmarking

Extract complete profiles for competitors in your market. Compare ratings, review distributions, service offerings, price levels, and operating hours. The `reviewsDistribution` field reveals the shape of a business's reputation—not just the average score. A 4.5-star rating backed by 85% five-star reviews tells a different story than 4.5 stars with evenly distributed ratings.

**Key fields:** `totalScore`, `reviewsDistribution`, `categories`, `price`, `additionalInfo`

#### CRM Enrichment and Lead Qualification

Enrich your CRM with verified business contact data—formatted and unformatted phone numbers, website URLs, full addresses, and business categories. Use the `additionalInfo` object to qualify leads: does the business accept reservations? Do they offer catering? Are they wheelchair accessible? These signals help sales teams prioritize outreach.

**Key fields:** `phone`, `phoneUnformatted`, `website`, `address`, `categories`, `additionalInfo`

#### Business Database and Directory Building

Build comprehensive local business databases with deep profile data that goes far beyond basic listings. Each profile includes the full business description, 15+ attribute categories, review distributions, and day-by-day operating hours—data that typically requires manual research to compile.

**Key fields:** `title`, `description`, `address`, `categories`, `openingHours`, `additionalInfo`

#### Due Diligence and Investment Research

Evaluate businesses for acquisition, investment, or partnership using structured data. Review distributions reveal reputation health, operating hours confirm active status, and the `additionalInfo` object shows service sophistication. Combine with the [Google Maps Reviews Scraper](https://apify.com/agents/google-maps-reviews?fpr=yhdrb) for full review text analysis.

**Key fields:** `totalScore`, `reviewsCount`, `reviewsDistribution`, `description`, `openingHours`, `additionalInfo`

#### Accessibility and Compliance Auditing

Audit businesses for accessibility compliance using the structured `additionalInfo.Accessibility` field. Identify which businesses offer wheelchair accessible entrances, restrooms, and seating. Extend to parking availability, children's facilities, and payment method support.

**Key fields:** `additionalInfo.Accessibility`, `additionalInfo.Children`, `additionalInfo.Parking`, `additionalInfo.Payments`

#### Real Estate and Location Analysis

Research the commercial ecosystem around properties or neighborhoods. Extract full profiles for all businesses in an area to assess business mix quality, dining options, service variety, and amenity coverage. GPS coordinates enable direct integration with GIS platforms.

**Key fields:** `location`, `neighborhood`, `district`, `postalCode`, `categories`, `totalScore`, `additionalInfo`

***

### Troubleshooting

#### Common Issues and Solutions

| Issue                         | Cause                                   | Solution                                                                                                             |
| ----------------------------- | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Incomplete additionalInfo** | Business hasn't provided all attributes | Not all businesses fill out every attribute category on Google Maps—the scraper captures everything that's available |
| **Missing description**       | Business hasn't written a description   | The `description` field will be empty for businesses that haven't added one to their Google profile                  |
| **Missing phone/website**     | Business hasn't listed contact info     | Some businesses don't provide phone numbers or websites on Google Maps—this is expected                              |
| **FID not found**             | Invalid or outdated FID                 | Verify the FID is correct and the business still exists on Google Maps                                               |
| **Language not applied**      | Unsupported language code               | Use standard language codes (e.g., `en`, `de`, `fr`, `ja`). Not all business content is available in every language  |

#### Performance Tips

- **Use FIDs for batch processing** — FIDs are more efficient than URLs for large-scale operations
- **Start with a single URL** — Test with one business to verify output format before scaling
- **Check data availability** — Some fields depend on what the business has provided to Google
- **Language matching** — Set the language to match your target market for localized content
- **Combine with Search** — Use the [Google Maps Search Scraper](https://apify.com/agents/google-maps-search?fpr=yhdrb) to discover businesses first, then extract full profiles here

***

### Frequently Asked Questions

#### What data can I extract from a Google Maps business profile?

Extract **business name**, **full description**, **address** (street, neighborhood, district, postal code, city), **phone number** (formatted and E.164), **website**, **GPS coordinates**, **star rating**, **review count**, **review score distribution** (1–5 star breakdown), **business categories**, **opening hours**, **price range**, **Google Place ID/CID/FID**, and a comprehensive **additionalInfo** object covering service options, accessibility, offerings, dining, amenities, atmosphere, crowd, planning, payments, children's facilities, and parking—all in structured JSON or CSV.

#### What is the additionalInfo object?

The `additionalInfo` field is a structured object containing 15+ attribute categories that Google Maps collects for businesses. It includes: **Service options** (dine-in, takeout, delivery), **Accessibility** (wheelchair access), **Offerings** (halal, vegan, alcohol), **Dining options** (breakfast, brunch, catering), **Amenities** (Wi-Fi, restroom), **Atmosphere** (casual, cozy), **Crowd** (groups, tourists), **Planning** (reservations), **Payments** (credit cards, NFC), **Children** (kids menu, high chairs), **Parking** (free/paid street), and more. Available attributes vary by business type.

#### What is the difference between this and the Google Maps Search Scraper?

The **Search Scraper** discovers businesses by keyword (e.g., "restaurants in Chicago") and returns 20+ fields per listing. This **Business Scraper** extracts deep profiles from specific businesses you've already identified (via URL or FID) and returns 40+ fields including the full description, review distributions, and 15+ attribute categories. Use Search first to discover businesses, then Business to get full profiles.

#### Can I export Google Maps business data to CSV?

Yes. **Download Google Maps business profiles** directly from Apify Console in JSON, CSV, or Excel format. This is ideal for CRM import, spreadsheet analysis, database loading, and business intelligence dashboards.

#### What is a Place FID and where do I find it?

A FID (Feature ID) is Google Maps' internal identifier for a place, formatted as two hex values separated by a colon (e.g., `0x808587fdf883162f:0x7eb924725715409e`). You can find FIDs in Google Maps URLs or extract them using the [Google Maps Search Scraper](https://apify.com/agents/google-maps-search?fpr=yhdrb). FIDs are more efficient than URLs for batch processing.

#### Does this extract individual reviews?

No. This scraper extracts the **business profile** including the aggregate review data (total count and 1–5 star distribution). For individual review text, use the **[Google Maps Reviews Scraper](https://apify.com/agents/google-maps-reviews?fpr=yhdrb)**.

#### Can I use Python to extract Google Maps business data?

Yes. Full Python support via the Apify Client library. See the [Quick Start Guide](#quick-start-guide) above for Python integration with `client.actor("agents/google-maps-business")`.

#### Can AI agents use this scraper?

Yes. Through Apify's **Model Context Protocol (MCP) server**, AI agents built with Claude Desktop, VS Code, or any MCP-compatible framework can call this scraper as a tool. This enables automated due diligence, CRM enrichment, and multi-step research pipelines. See the [AI Agent Integration via MCP](#ai-agent-integration-via-mcp) section for setup details.

#### Can I get business data in different languages?

Yes. Set the `language` parameter to any supported language code (e.g., `en`, `de`, `fr`, `ja`, `es`). The business name, description, and category labels will be returned in the specified language where available.

#### How is this different from the Google Places API?

The Google Places API Place Details endpoint charges **$17 per 1,000 requests**, requires an API key with billing, and doesn't return review score distributions or the full `additionalInfo` attribute set in a single call. This scraper delivers the complete profile at **~$0.42 per 1,000 businesses** (list query + items) with no API key—a **97.5% cost reduction**.

#### This Scraper vs. Google Places API

| Feature                 | This Scraper                  | Google Places API          |
| ----------------------- | ----------------------------- | -------------------------- |
| API Key Required        | No                            | Yes (with billing)         |
| Cost per 1,000 profiles | ~$0.42                        | $17.00 (Place Details)     |
| Review distribution     | Included (1–5 star breakdown) | Not available              |
| Service attributes      | 15+ categories                | Requires separate calls    |
| Full description        | Included                      | Requires separate call     |
| Operating hours         | Included                      | Requires Place Details ($) |
| MCP Integration         | Yes (via Apify MCP server)    | No                         |

***

### Contact

**Built by [Agents](https://apify.com/agents?fpr=yhdrb)** — Where others search, we uncover. Our team of ex-Big Tech engineers, growth hackers, and data specialists builds high-performance scraping tools engineered for speed, precision, and reliability.

For questions or further assistance:

- **Email:** Reach out at **whoaretheagents@gmail.com**
- **Discord:** Join our community to connect with our support team

***

**Ready to start extracting complete Google Maps business profiles?** With transparent event-based pricing, 40+ data fields per business, and no API key required, this **Google Maps Business Scraper API** by [Agents](https://apify.com/agents?fpr=yhdrb) is the definitive tool for **competitor profiling**, **CRM enrichment**, **due diligence**, and **business intelligence**. Start scraping today.

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with. It should be list or detail URL

## `placeFIDs` (type: `array`):

Place FIDs to start with. `fid` attribute of the place must be used

## `searchTerms` (type: `array`):

The keywords that you can search on Google Maps

## `language` (type: `string`):

Restricts places to the given language, given by an ISO 639-1 code.

## `country` (type: `string`):

Restricts places to the given country, given by an ISO 3166-1 alpha-2 code.

## `latitude` (type: `string`):

Latitude coordinate used to locate places near a specific point.

## `longitude` (type: `string`):

Longitude coordinate used to locate places near a specific point.

## `zoom` (type: `string`):

Specifies the map zoom level to control the search radius.

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

Maximum number of items that you want as output.

## `customMapFunction` (type: `string`):

Function that takes each of the objects as argument and returns data that will be mapped by the function itself.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.google.com/maps/place/San+Francisco+Museum+of+Modern+Art/@37.7891211,-122.4075952,14.81z/data=!4m6!3m5!1s0x8085807d623572e7:0xc87ca0dcbc7559fd!8m2!3d37.7857182!4d-122.4010508!16zL20vMDEyXzF0?entry=ttu&g_ep=EgoyMDI1MDUyNy4wIKXMDSoASAFQAw%3D%3D"
  ],
  "language": "en",
  "country": "US"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        "https://www.google.com/maps/place/San+Francisco+Museum+of+Modern+Art/@37.7891211,-122.4075952,14.81z/data=!4m6!3m5!1s0x8085807d623572e7:0xc87ca0dcbc7559fd!8m2!3d37.7857182!4d-122.4010508!16zL20vMDEyXzF0?entry=ttu&g_ep=EgoyMDI1MDUyNy4wIKXMDSoASAFQAw%3D%3D"
    ],
    "language": "en",
    "country": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("theagents/google-maps-business").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 = {
    "startUrls": ["https://www.google.com/maps/place/San+Francisco+Museum+of+Modern+Art/@37.7891211,-122.4075952,14.81z/data=!4m6!3m5!1s0x8085807d623572e7:0xc87ca0dcbc7559fd!8m2!3d37.7857182!4d-122.4010508!16zL20vMDEyXzF0?entry=ttu&g_ep=EgoyMDI1MDUyNy4wIKXMDSoASAFQAw%3D%3D"],
    "language": "en",
    "country": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("theagents/google-maps-business").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 '{
  "startUrls": [
    "https://www.google.com/maps/place/San+Francisco+Museum+of+Modern+Art/@37.7891211,-122.4075952,14.81z/data=!4m6!3m5!1s0x8085807d623572e7:0xc87ca0dcbc7559fd!8m2!3d37.7857182!4d-122.4010508!16zL20vMDEyXzF0?entry=ttu&g_ep=EgoyMDI1MDUyNy4wIKXMDSoASAFQAw%3D%3D"
  ],
  "language": "en",
  "country": "US"
}' |
apify call theagents/google-maps-business --silent --output-dataset

```

## MCP server setup

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

```

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/8PKf9YfkIJC2phSW6/builds/3eqddV9RQ7IVDPMZW/openapi.json
