# Google Business Profile Scraper (`sfoln/google-business-profile`)

Get the full Google Business Profile of any business by name and city, place ID or CID: categories, address, phone, website, rating and its distribution, hours, attributes, review topics, photo count and claimed status. $19 per 1,000 profiles.

- Family: Local & maps
- Categories: Lead generation, Travel, SEO tools
- Availability: on request (private on Apify). Email contact@sfoln.com with subject "Access request: Google Business Profile Scraper (sfoln/google-business-profile)" before calling; calls fail until it is public.
- JSON: https://www.sfoln.com/actors/google-business-profile.json
- MCP: https://mcp.apify.com?tools=sfoln/google-business-profile
- REST (sync): POST https://api.apify.com/v2/actors/sfoln~google-business-profile/run-sync-get-dataset-items
- REST (async): POST https://api.apify.com/v2/actors/sfoln~google-business-profile/runs

Google Business Profile Scraper looks up the complete Google Business Profile of any business — by name and city, Google place ID or CID — and returns one normalized record with categories, description, full address, phone, website, rating and rating distribution, opening hours, attributes (accessibility, payments, service options…), review topics, photo count, claimed status, booking link and owner contributor URL. Built for listing audits, local-SEO tools, CRM enrichment and AI agents that need the facts Google shows on a business panel.

## Price per delivered record

| Event | Price | Per 1,000 | Charged for |
| --- | --- | --- | --- |
| Google Business Profile (`google-business-profile`) | $0.019 | $19 / 1,000 | Charged once per business for which a full Google Business Profile was returned (or a billed not-found lookup). |

Pay-per-event, USD, billed by Apify; no platform usage charge. Only records with status `ok` are charged. Cap a run with `maxTotalChargeUsd`. Apify free plan: up to 10 per run.

## Run

```bash
curl -X POST "https://api.apify.com/v2/actors/sfoln~google-business-profile/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"businesses":["cid:2946633002421908862"],"location":"New York,New York,United States"}'
```

MCP client configuration:

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com?tools=sfoln/google-business-profile"
    }
  }
}
```

Example prompt: Get the Google Business Profile of Katz's Delicatessen in New York: opening hours, rating, phone, website and whether the listing is claimed.

## Input

List businesses by name (best with city), Google place ID or CID. Each line produces one dataset record.

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `businesses` (required) | array | — | Businesses: One per line: a business name ("Katz's Delicatessen New York"), a place ID ("ChIJ…" or "place_id:…"), or a CID ("cid:2946633002421908862" or the bare number of 15+ digits, always as a string: JSON numbers that large lose digits). Override the location per line with "name \| location". Accounts on the Apify free plan can process up to 10 businesses per run. |
| `location` | string | — | Location: Where to look up business names: a DataForSEO location name ("New York,New York,United States") or numeric location code (2840 = United States). For place IDs / CIDs it only sets the regional context. |
| `languageCode` | string | `"en"` | Language code: Language of the profile data (ISO code such as en, de, es). |
| `maxItems` | integer | `1000` | Max businesses: Safety cap on the number of lookups in this run. |
| `concurrency` | integer | `4` | Concurrency: How many lookups run in parallel. |
| `includeRaw` | boolean | `false` | Include raw upstream response: Attach the unmodified provider item to each record (larger output). |

Example input:

```json
{
  "businesses": [
    "cid:2946633002421908862"
  ],
  "location": "New York,New York,United States"
}
```

## Output

One record per input item with `status` (`ok` is charged; `not_found`, `error`, `skipped_*` are free) and `charged`. The run stores an `OUTPUT` summary record.

| Field | Type | Meaning |
| --- | --- | --- |
| `input` | string | object | Input: The lookup string as given. |
| `lookupKind` | string | Lookup kind: cid \| place_id \| keyword |
| `lookupKeyword` | string | Lookup keyword: Keyword sent upstream (cid:…, place_id:… or the business name). |
| `location` | string | Location: Location context used for the lookup. |
| `found` | boolean | Found: Whether a profile was found. |
| `title` | string | null | Name: Business / place name. |
| `category` | string | null | Category: Primary Google category. |
| `additionalCategories` | array | Additional categories: Secondary Google categories. |
| `categoryIds` | array | Category ids: Google category ids, e.g. pizza_restaurant. |
| `address` | string | null | Address: Full formatted address. |
| `addressInfo` | object | null | Address parts: street, borough, city, zip, region, countryCode. |
| `phone` | string | null | Phone: Phone number as shown on Google Maps. |
| `url` | string | null | Website: Website URL. |
| `domain` | string | null | Domain: Website domain without www. |
| `placeId` | string | null | Place ID: Google place_id (ChIJ…). |
| `cid` | string | null | CID: Google customer id (maps.google.com/?cid=…). |
| `featureId` | string | null | Feature ID: Google feature id. |
| `latitude` | number | null | Latitude: WGS84 latitude. |
| `longitude` | number | null | Longitude: WGS84 longitude. |
| `rating` | object | null | Rating: { value, votesCount } |
| `ratingDistribution` | object | null | Rating distribution: Number of reviews per star (1–5). |
| `priceLevel` | string | null | Price level: inexpensive \| moderate \| expensive \| very_expensive |
| `isClaimed` | boolean | null | Claimed: Whether the owner has verified the listing. |
| `currentStatus` | string | null | Current status: open \| closed \| temporarily_closed \| closed_forever |
| `openNow` | boolean | null | Open now: True when open at crawl time. |
| `workHoursSummary` | string | null | Opening hours: Compact weekly hours, e.g. "Mon 09:00-17:00; …; Sun closed". |
| `workHours` | object | null | Opening hours (structured): Day → list of "HH:MM-HH:MM" ranges; null = closed. |
| `mainImage` | string | null | Main image: URL of the main photo. |
| `totalPhotos` | integer | null | Photos: Number of photos on the listing. |
| `snippet` | string | null | Snippet: Short text shown in the results. |
| `googleMapsUrl` | string | null | Google Maps URL: Link to the place on Google Maps. |
| `description` | string | null | Description: Business description from the listing. |
| `originalTitle` | string | null | Original name: Untranslated business name. |
| `logo` | string | null | Logo: Logo image URL. |
| `hotelRating` | integer | null | Hotel stars: Hotel class 1–5 (hotels only). |
| `contactUrl` | string | null | Contact URL: Contact page link from the listing. |
| `contributorUrl` | string | null | Contributor URL: Google Maps contributor profile of the owner. |
| `bookOnlineUrl` | string | null | Book online URL: Booking link shown on the listing. |
| `attributes` | array | Attributes: Available attributes, e.g. has_delivery, accepts_reservations, has_wheelchair_accessible_entrance. |
| `unavailableAttributes` | array | Unavailable attributes: Attributes explicitly marked as not available. |
| `placeTopics` | object | null | Review topics: Keywords mentioned in reviews → number of mentions. |
| `hasPopularTimes` | boolean | Popular times available: Whether Google shows a popular-times chart for this place. |
| `localBusinessLinks` | array | Business links: Reservation / order / menu links: { type, title, url }. |
| `peopleAlsoSearch` | array | People also search: Names of related businesses Google suggests. |
| `isDirectoryItem` | boolean | null | Directory item: Whether the place is a directory (e.g. a mall) containing other businesses. |
| `services` | array | Services: Services listed on the profile { category, title, price }. |
| `status` | string | Status: ok \| not_found \| error \| skipped_budget \| skipped_free_plan |
| `charged` | boolean | Charged: Whether this record incurred a pay-per-event charge. |
| `chargedEvent` | string | Charged event: google-business-profile when charged. |
| `warnings` | array | Warnings: Non-fatal notes, when any. |
| `error` | object | Error: {code, message, provider?} when status is not ok. |
| `source` | string | Source: Upstream data source. |
| `fetchedAt` | string | Fetched at: ISO timestamp. |

Example record:

```json
{
  "input": {
    "lookup": "cid:2946633002421908862"
  },
  "lookupKind": "cid",
  "lookupKeyword": "cid:2946633002421908862",
  "location": "New York,New York,United States",
  "found": true,
  "title": "RustyBrick, Inc.",
  "category": "Software company",
  "additionalCategories": [
    "Internet marketing service",
    "Website designer"
  ],
  "categoryIds": [
    "software_company",
    "internet_marketing_service",
    "website_designer"
  ],
  "description": "Since 1994, RustyBrick has been creating Web and mobile software ...",
  "address": "250 W Nyack Rd #200, West Nyack, NY 10994",
  "addressInfo": {
    "street": "250 W Nyack Rd #200",
    "borough": null,
    "city": "West Nyack",
    "zip": "10994",
    "region": "New York",
    "countryCode": "US"
  },
  "phone": "+1877-467-8789",
  "url": "https://www.rustybrick.com/",
  "domain": "rustybrick.com",
  "placeId": "ChIJP0warDDowokRfvXMkBqL5Cg",
  "cid": "2946633002421908862",
  "featureId": "0x89c2e830ac1a4c3f:0x28e48b1a90ccf57e",
  "latitude": 41.097343,
  "longitude": -73.9934641,
  "rating": {
    "value": 4.7,
    "votesCount": 49
  },
  "ratingDistribution": {
    "1": 2,
    "2": 0,
    "3": 2,
    "4": 4,
    "5": 41
  },
  "priceLevel": null,
  "isClaimed": true,
  "currentStatus": "open",
  "openNow": true,
  "workHoursSummary": "Mon 08:30-18:00; Tue 08:30-18:00; Wed 08:30-18:00; Thu 08:30-18:00; Fri 08:30-14:00; Sat closed; Sun closed",
  "attributes": [
    "is_small_business",
    "offers_online_appointments",
    "has_wheelchair_accessible_entrance",
    "requires_appointments"
  ],
  "placeTopics": {
    "SEO": 4,
    "news": 3
  },
  "mainImage": "https://lh5.googleusercontent.com/p/...",
  "logo": "https://lh4.googleusercontent.com/...",
  "totalPhotos": 35,
  "contributorUrl": "https://maps.google.com/maps/contrib/104876075931666699163",
  "bookOnlineUrl": null,
  "services": [
    {
      "category": "Internet Marketing Service",
      "title": "Citation Building",
      "price": "$5.00"
    }
  ],
  "googleMapsUrl": "https://www.google.com/maps?cid=2946633002421908862",
  "status": "ok",
  "charged": true,
  "chargedEvent": "google-business-profile",
  "source": "dataforseo",
  "fetchedAt": "2026-10-14T10:00:00.000Z"
}
```

## Related

- [Google Maps Places Scraper](https://www.sfoln.com/actors/google-maps-search.md) (`sfoln/google-maps-search`)
- [Local SEO Audit – Google Business Profile](https://www.sfoln.com/actors/local-business-audit.md) (`sfoln/local-business-audit`)
- [Google Maps Leads Scraper + Emails](https://www.sfoln.com/actors/google-maps-business-leads.md) (`sfoln/google-maps-business-leads`)
- [Website Contact Details Scraper](https://www.sfoln.com/actors/company-contacts-finder.md) (`sfoln/company-contacts-finder`)

Publisher: SFOLN LLC, contact@sfoln.com. Catalogue: https://www.sfoln.com/catalog.json. Agent guide: https://www.sfoln.com/agents.md.
