{
  "data": {
    "id": "Znvinlco4eXEZqAMR",
    "actId": "cbcgtWlBcgrsLiv99",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-27T06:48:03.620Z",
    "finishedAt": "2026-10-27T06:48:33.738Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 29786,
      "runTimeSecs": 29.786,
      "computeUnits": 0.03309555555555556,
      "imageSizeBytes": 3119397888
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Maps Business Finder Input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"enum\": [\n        \"search\",\n        \"placeUrls\",\n        \"placeIds\"\n      ],\n      \"enumTitles\": [\n        \"Search Google Maps\",\n        \"Scrape place URLs\",\n        \"Scrape Place IDs\"\n      ],\n      \"description\": \"Search mode uses a text query; placeUrls mode reads specific Maps URLs; placeIds mode resolves canonical ChIJ Place IDs.\",\n      \"default\": \"search\",\n      \"prefill\": \"search\",\n      \"editor\": \"select\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search Query\",\n      \"type\": \"string\",\n      \"description\": \"What to search for on Google Maps. Include a location for best results, for example 'coffee shops in New York'. Used when mode is search.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"coffee shops in New York\"\n    },\n    \"location\": {\n      \"title\": \"Location (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Optional location appended to each search term, for example 'Austin, TX'. Leave blank when the location is already in the query.\",\n      \"editor\": \"textfield\"\n    },\n    \"placeUrls\": {\n      \"title\": \"Place URLs\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"description\": \"Google Maps place URLs to read directly. Used in placeUrls and placeIds modes; the two direct modes accept a mixed batch.\",\n      \"editor\": \"stringList\"\n    },\n    \"placeIds\": {\n      \"title\": \"Google Place IDs\",\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"description\": \"Canonical Google Place IDs beginning with ChIJ. Used in placeUrls and placeIds modes; the two direct modes accept a mixed batch.\",\n      \"editor\": \"stringList\",\n      \"minItems\": 1\n    },\n    \"maxResults\": {\n      \"title\": \"Max Results\",\n      \"type\": \"integer\",\n      \"description\": \"Places to collect per search in search mode, or in total in the direct modes. Google returns a ranked window of roughly 160-230 places for a typical query; split broad searches by neighborhood or category for wider coverage.\",\n      \"minimum\": 1,\n      \"maximum\": 100000,\n      \"default\": 20,\n      \"prefill\": 3\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Language for Google Maps names, categories, addresses and hours.\",\n      \"enum\": [\n        \"en\",\n        \"af\",\n        \"az\",\n        \"id\",\n        \"ms\",\n        \"bs\",\n        \"ca\",\n        \"cs\",\n        \"da\",\n        \"de\",\n        \"et\",\n        \"es\",\n        \"es-419\",\n        \"eu\",\n        \"fil\",\n        \"fr\",\n        \"gl\",\n        \"hr\",\n        \"zu\",\n        \"is\",\n        \"it\",\n        \"sw\",\n        \"lv\",\n        \"lt\",\n        \"hu\",\n        \"nl\",\n        \"no\",\n        \"uz\",\n        \"pl\",\n        \"pt-BR\",\n        \"pt-PT\",\n        \"ro\",\n        \"sq\",\n        \"sk\",\n        \"sl\",\n        \"fi\",\n        \"sv\",\n        \"vi\",\n        \"tr\",\n        \"el\",\n        \"bg\",\n        \"ky\",\n        \"kk\",\n        \"mk\",\n        \"mn\",\n        \"ru\",\n        \"sr\",\n        \"uk\",\n        \"ka\",\n        \"hy\",\n        \"iw\",\n        \"ur\",\n        \"ar\",\n        \"fa\",\n        \"am\",\n        \"ne\",\n        \"hi\",\n        \"mr\",\n        \"bn\",\n        \"pa\",\n        \"gu\",\n        \"ta\",\n        \"te\",\n        \"kn\",\n        \"ml\",\n        \"si\",\n        \"th\",\n        \"lo\",\n        \"my\",\n        \"km\",\n        \"ko\",\n        \"ja\",\n        \"zh-CN\",\n        \"zh-TW\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"Afrikaans\",\n        \"azərbaycan\",\n        \"Bahasa Indonesia\",\n        \"Bahasa Melayu\",\n        \"bosanski\",\n        \"català\",\n        \"Čeština\",\n        \"Dansk\",\n        \"Deutsch\",\n        \"eesti\",\n        \"Español\",\n        \"Español (Latinoamérica)\",\n        \"euskara\",\n        \"Filipino\",\n        \"Français\",\n        \"galego\",\n        \"Hrvatski\",\n        \"isiZulu\",\n        \"íslenska\",\n        \"Italiano\",\n        \"Kiswahili\",\n        \"latviešu\",\n        \"lietuvių\",\n        \"magyar\",\n        \"Nederlands\",\n        \"norsk\",\n        \"oʻzbekcha\",\n        \"polski\",\n        \"Português (Brasil)\",\n        \"Português (Portugal)\",\n        \"română\",\n        \"shqip\",\n        \"Slovenčina\",\n        \"slovenščina\",\n        \"Suomi\",\n        \"Svenska\",\n        \"Tiếng Việt\",\n        \"Türkçe\",\n        \"Ελληνικά\",\n        \"български\",\n        \"кыргызча\",\n        \"қазақ тілі\",\n        \"македонски\",\n        \"монгол\",\n        \"Русский\",\n        \"српски\",\n        \"Українська\",\n        \"ქართული\",\n        \"հայերեն\",\n        \"עברית\",\n        \"اردو\",\n        \"العربية\",\n        \"فارسی\",\n        \"አማርኛ\",\n        \"नेपाली\",\n        \"हिन्दी\",\n        \"मराठी\",\n        \"বাংলা\",\n        \"ਪੰਜਾਬੀ\",\n        \"ગુજરાતી\",\n        \"தமிழ்\",\n        \"తెలుగు\",\n        \"ಕನ್ನಡ\",\n        \"മലയാളം\",\n        \"සිංහල\",\n        \"ไทย\",\n        \"ລາວ\",\n        \"ဗမာ\",\n        \"ខ្មែរ\",\n        \"한국어\",\n        \"日本語\",\n        \"简体中文\",\n        \"繁體中文\"\n      ],\n      \"default\": \"en\",\n      \"editor\": \"select\"\n    },\n    \"includeDetails\": {\n      \"title\": \"Include place details\",\n      \"type\": \"boolean\",\n      \"description\": \"Read the place panel for Plus Code, price range, hotel and fuel details, attributes, photo count and rating histogram. Adds one request per place; the basic listing fields and weekly hours are always included.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"searchTerms\": {\n      \"title\": \"Search terms (batch)\",\n      \"type\": \"array\",\n      \"description\": \"Several search terms in one run, for example [\\\"coffee shops\\\", \\\"dentists\\\"]. Each term is searched in every location.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"locations\": {\n      \"title\": \"Locations (batch)\",\n      \"type\": \"array\",\n      \"description\": \"Several locations in one run, for example [\\\"New York, NY\\\", \\\"Austin, TX\\\"]. Each term is searched in each location.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Only keep businesses rated at or above this value. Businesses with no published rating are skipped.\",\n      \"minimum\": 1,\n      \"maximum\": 5\n    },\n    \"maxRating\": {\n      \"title\": \"Maximum rating\",\n      \"type\": \"number\",\n      \"description\": \"Only keep businesses rated at or below this value.\",\n      \"minimum\": 1,\n      \"maximum\": 5\n    },\n    \"minReviews\": {\n      \"title\": \"Minimum review count\",\n      \"type\": \"integer\",\n      \"description\": \"Only keep businesses with at least this many reviews.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"maxReviews\": {\n      \"title\": \"Maximum review count\",\n      \"type\": \"integer\",\n      \"description\": \"Only keep businesses with at most this many reviews.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"openNow\": {\n      \"title\": \"Open now only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only keep businesses Google currently shows as open.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"hasWebsite\": {\n      \"title\": \"Must have a website\",\n      \"type\": \"boolean\",\n      \"description\": \"Only keep businesses that publish a website on their Google Maps listing.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"hasPhone\": {\n      \"title\": \"Must have a phone number\",\n      \"type\": \"boolean\",\n      \"description\": \"Only keep businesses that publish a phone number on their Google Maps listing.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"nameFilter\": {\n      \"title\": \"Business name contains\",\n      \"type\": \"string\",\n      \"description\": \"Only keep businesses whose name contains this text, for example \\\"pizza\\\".\",\n      \"editor\": \"textfield\"\n    },\n    \"includeClosed\": {\n      \"title\": \"Include permanently closed businesses\",\n      \"type\": \"boolean\",\n      \"description\": \"When off, businesses Google marks as permanently closed are skipped.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"excludeCategories\": {\n      \"title\": \"Exclude categories\",\n      \"type\": \"array\",\n      \"description\": \"Skip businesses whose category contains any of these words, for example [\\\"hotel\\\", \\\"casino\\\"].\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    }\n  }\n}",
    "readme": "# Google Maps Business Finder with Hours, Ratings & Location\n\nFind businesses on **Google Maps** from a search phrase, a Maps place URL, or a canonical Place ID. The actor returns one clean row per business with its category, address, phone, website, rating, review count, weekly hours, price information where Google publishes it, attributes, photos and coordinates. It runs without a login, an API key, or proxy setup.\n\n## What this actor does\n\n- **Search, URL and Place ID modes:** search by keyword, paste a list of Maps place URLs, or look up `ChIJ` Place IDs. The two direct modes accept a mixed batch.\n- **Batch coverage:** run several search terms across several locations in one run, with a separate result allowance for each term × location pair.\n- **Complete business rows:** name, category, full address, phone, website, rating, review count, weekly hours, open/closed status, coordinates, Place ID and Maps URL.\n- **Optional place details:** add Plus Code, price range, hotel stars and nightly price, fuel prices, accessibility and amenity attributes, photo count, photos and the rating histogram.\n- **Useful filters:** rating range, review-count range, open now, must have a website or phone, name contains, exclude categories, and optionally skip permanently closed places.\n- **74 languages:** names, categories, addresses and hours follow the language you select.\n- **No browser, no login, no API key.** Empty fields are omitted instead of returned as placeholders.\n\n## Output per business\n\nEach row can include:\n\n| Field | Meaning |\n|---|---|\n| `recordType` | Always `business` |\n| `searchTerm` | The search that found the business (search mode) |\n| `rankInSearch` | Position in that search's ranked results (search mode) |\n| `name` | Business name |\n| `categoryName` | Primary category |\n| `categories` | All categories Google lists |\n| `address` | Public address |\n| `phone` | Public phone number |\n| `website` | Public website |\n| `totalScore` | Star rating |\n| `reviewsCount` | Number of reviews |\n| `hours` | Weekly schedule with stable English weekday keys, e.g. `{\"monday\": \"9 AM to 5 PM\"}` |\n| `hoursStatus` | Google's current status line, e.g. `Closed · Opens 9 AM` |\n| `isOpenNow` | `true` or `false` when Google states the current state |\n| `priceLevel` | Displayed price range for restaurants, e.g. `$20–30` |\n| `priceOfferAmount` / `priceOfferCurrency` / `priceOfferDateRange` | Nightly hotel price Google shows, when available |\n| `hotelStars` / `hotelStarRating` | Hotel star class as Google labels it, plus the numeric value |\n| `hotelAmenities` | Named hotel amenities with availability |\n| `checkInTime` / `checkOutTime` | Check-in and check-out times, when shown |\n| `fuelPrices` | Fuel grade and price, when Google publishes it |\n| `plusCode` | Plus Code |\n| `description` | Editorial description, when Google provides one |\n| `ratingHistogram` | Review counts by star |\n| `photosSample` / `photoCount` | Visible photo URLs and the total photo count |\n| `placeAttributes` | Attribute chips such as `LGBTQ+ friendly` or accessibility labels |\n| `amenities` | Header amenity labels |\n| `attributes` | Structured attribute groups with label and value |\n| `serviceOptions` | Known service/accessibility flags as booleans |\n| `bookingLinks` | Reservation or booking links Google shows |\n| `hasStreetView` / `streetViewCount` | Street View availability |\n| `permanentlyClosed` / `temporarilyClosed` | Set only when Google marks the place closed |\n| `claimed` | `false` only when Google shows an \"Own this business?\" link |\n| `location` | `{lat, lng}` object |\n| `latitude` / `longitude` | The same coordinates as plain columns |\n| `placeId` | Canonical Google Place ID (`ChIJ…`) |\n| `featureId` | Legacy Maps feature ID (`0x…:0x…`) |\n| `cid` | Decimal Maps customer ID derived from the feature ID |\n| `kgmid` | Knowledge Graph identifier (`/g/…`) |\n| `timezone` | IANA time zone |\n| `countryCode` | Two-letter country code |\n| `googleMapsUrl` / `sourceUrl` | Maps URL for the place |\n| `scrapedAt` | UTC scrape timestamp |\n\nFields are conditional. A business without a website, phone, rating, hours, price or photos simply omits that field.\n\n`popularTimesSummary`, `menuLink` and `locatedIn` are retained as legacy conditional fields for saved integrations; the browserless path does not populate them.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `placeUrls`, or `placeIds` |\n| `searchQuery` | string | – | Search phrase such as `coffee shops in Brooklyn` (mode=search) |\n| `location` | string | – | Location appended to each search term |\n| `placeUrls` | array | – | Google Maps place URLs (direct modes) |\n| `placeIds` | array | – | Canonical `ChIJ…` Place IDs (direct modes) |\n| `maxResults` | integer | `20` | Places per search, or total in the direct modes (1–100,000) |\n| `language` | string | `en` | One of 74 Google Maps interface languages |\n| `includeDetails` | boolean | `true` | Read Plus Code, price, hotel/fuel, attributes, photos and histogram |\n| `searchTerms` | array | `[]` | Batch search terms |\n| `locations` | array | `[]` | Batch locations; each term is searched in each location |\n| `minRating` | number | – | Keep ratings at or above this value |\n| `maxRating` | number | – | Keep ratings at or below this value |\n| `minReviews` | integer | – | Keep review counts at or above this value |\n| `maxReviews` | integer | – | Keep review counts at or below this value |\n| `openNow` | boolean | `false` | Keep places Google shows as open |\n| `hasWebsite` | boolean | `false` | Keep places with a website |\n| `hasPhone` | boolean | `false` | Keep places with a phone number |\n| `nameFilter` | string | – | Keep names containing this text |\n| `includeClosed` | boolean | `true` | When off, skip permanently closed places |\n| `excludeCategories` | array | `[]` | Skip categories containing these words |\n\n### Example: search a city\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"coffee shops\",\n  \"location\": \"Brooklyn, NY\",\n  \"maxResults\": 50,\n  \"includeDetails\": true\n}\n```\n\n### Example: several categories across several cities\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchTerms\": [\"coffee shops\", \"bakeries\"],\n  \"locations\": [\"Austin, TX\", \"Dallas, TX\"],\n  \"minRating\": 4.0,\n  \"minReviews\": 25,\n  \"hasWebsite\": true,\n  \"maxResults\": 100\n}\n```\n\n### Example: read specific place URLs\n\n```json\n{\n  \"mode\": \"placeUrls\",\n  \"placeUrls\": [\n    \"https://www.google.com/maps/place/GRIND+THE+NYC+COFFEE+SHOP+%26+BAGEL+HOUSE/@40.7590839,-73.9918101,17z/data=!3m1!4b1!4m6!3m5!1s0x89c259125a931087:0x3d471d4575240620!8m2!3d40.7590839!4d-73.9918101\"\n  ],\n  \"maxResults\": 1\n}\n```\n\n### Example: read Place IDs\n\n```json\n{\n  \"mode\": \"placeIds\",\n  \"placeIds\": [\"ChIJhxCTWhJZwokRIAYkdUUdRz0\", \"ChIJ-Y-kFABZwokRIpR1-ZpuRjQ\"],\n  \"maxResults\": 2\n}\n```\n\n### Example: search in Japanese\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"東京 レストラン\",\n  \"language\": \"ja\",\n  \"maxResults\": 30\n}\n```\n\n## Use cases\n\n- Build local prospect lists with phone, website, rating and hours for a city or neighborhood.\n- Compare ratings, review counts, price ranges and amenities across competitors.\n- Refresh opening hours, ratings and contact details for a fixed list of branch URLs or Place IDs.\n- Find hotels with star class, nightly price and check-in/check-out times.\n- Compare fuel prices at stations in an area.\n- Add coordinates, Place IDs and Plus Codes to an existing location database.\n\n## FAQ\n\n**What is the data source?** Public Google Maps pages and their public place data. No Google account, API key or login is used.\n\n**Do I need to set up a proxy?** No. The actor tries a direct connection first and escalates to Apify's proxy pool only if Google repeatedly blocks requests. There is no proxy field to configure; just fill in the input and run it.\n\n**How many results can one search return?** Google returns a ranked window of roughly 160–230 places for a typical city query; broad categories such as hotels can return more. That is the source's window, not an unlimited directory. Split a broad search by neighborhood or category for wider coverage.\n\n**Why did I get fewer rows than `maxResults`?** The source window ended, filters removed rows, duplicate places were merged, or a place page could not be read. The run status says which of these happened.\n\n**Why are some fields missing?** Google publishes different details for different businesses, categories and countries. A place without a published website, phone, price or hours omits that field; the actor never invents a value.\n\n**Are prices always available?** No. Restaurant price ranges, hotel nightly prices and fuel prices appear only when Google publishes them for that place and date.\n\n**Does this actor scrape reviews?** No. It returns the rating and review count, plus the rating histogram. Review text and reviewer profiles are outside this actor's scope.\n\n**Can I search several cities or categories in one run?** Yes. Use `searchTerms` and `locations`; every term is searched in every location with its own `maxResults` allowance.\n\n**What happens to duplicates?** Places are matched by Place ID, feature ID or Maps URL (or name plus address when none is available) across the whole run. A place found twice is saved once.\n\n**Is this affiliated with Google?** No. It is an independent tool that reads public Google Maps pages. Use the data responsibly and follow applicable terms and laws.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-maps-business-finder-with-hours-ratings",
      "title": "Google Maps Business Finder with Hours, Ratings & Location",
      "description": "Find Google Maps businesses by search term, place URL or Place ID. Get name, address, phone, website, category, rating, reviews, hours, price, attributes and coordinates. Fast, browserless, no login or API key.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Google Maps Business Finder with Hours, Ratings & Location\n\nFind businesses on **Google Maps** from a search phrase, a Maps place URL, or a canonical Place ID. The actor returns one clean row per business with its category, address, phone, website, rating, review count, weekly hours, price information where Google publishes it, attributes, photos and coordinates. It runs without a login, an API key, or proxy setup.\n\n## What this actor does\n\n- **Search, URL and Place ID modes:** search by keyword, paste a list of Maps place URLs, or look up `ChIJ` Place IDs. The two direct modes accept a mixed batch.\n- **Batch coverage:** run several search terms across several locations in one run, with a separate result allowance for each term × location pair.\n- **Complete business rows:** name, category, full address, phone, website, rating, review count, weekly hours, open/closed status, coordinates, Place ID and Maps URL.\n- **Optional place details:** add Plus Code, price range, hotel stars and nightly price, fuel prices, accessibility and amenity attributes, photo count, photos and the rating histogram.\n- **Useful filters:** rating range, review-count range, open now, must have a website or phone, name contains, exclude categories, and optionally skip permanently closed places.\n- **74 languages:** names, categories, addresses and hours follow the language you select.\n- **No browser, no login, no API key.** Empty fields are omitted instead of returned as placeholders.\n\n## Output per business\n\nEach row can include:\n\n| Field | Meaning |\n|---|---|\n| `recordType` | Always `business` |\n| `searchTerm` | The search that found the business (search mode) |\n| `rankInSearch` | Position in that search's ranked results (search mode) |\n| `name` | Business name |\n| `categoryName` | Primary category |\n| `categories` | All categories Google lists |\n| `address` | Public address |\n| `phone` | Public phone number |\n| `website` | Public website |\n| `totalScore` | Star rating |\n| `reviewsCount` | Number of reviews |\n| `hours` | Weekly schedule with stable English weekday keys, e.g. `{\"monday\": \"9 AM to 5 PM\"}` |\n| `hoursStatus` | Google's current status line, e.g. `Closed · Opens 9 AM` |\n| `isOpenNow` | `true` or `false` when Google states the current state |\n| `priceLevel` | Displayed price range for restaurants, e.g. `$20–30` |\n| `priceOfferAmount` / `priceOfferCurrency` / `priceOfferDateRange` | Nightly hotel price Google shows, when available |\n| `hotelStars` / `hotelStarRating` | Hotel star class as Google labels it, plus the numeric value |\n| `hotelAmenities` | Named hotel amenities with availability |\n| `checkInTime` / `checkOutTime` | Check-in and check-out times, when shown |\n| `fuelPrices` | Fuel grade and price, when Google publishes it |\n| `plusCode` | Plus Code |\n| `description` | Editorial description, when Google provides one |\n| `ratingHistogram` | Review counts by star |\n| `photosSample` / `photoCount` | Visible photo URLs and the total photo count |\n| `placeAttributes` | Attribute chips such as `LGBTQ+ friendly` or accessibility labels |\n| `amenities` | Header amenity labels |\n| `attributes` | Structured attribute groups with label and value |\n| `serviceOptions` | Known service/accessibility flags as booleans |\n| `bookingLinks` | Reservation or booking links Google shows |\n| `hasStreetView` / `streetViewCount` | Street View availability |\n| `permanentlyClosed` / `temporarilyClosed` | Set only when Google marks the place closed |\n| `claimed` | `false` only when Google shows an \"Own this business?\" link |\n| `location` | `{lat, lng}` object |\n| `latitude` / `longitude` | The same coordinates as plain columns |\n| `placeId` | Canonical Google Place ID (`ChIJ…`) |\n| `featureId` | Legacy Maps feature ID (`0x…:0x…`) |\n| `cid` | Decimal Maps customer ID derived from the feature ID |\n| `kgmid` | Knowledge Graph identifier (`/g/…`) |\n| `timezone` | IANA time zone |\n| `countryCode` | Two-letter country code |\n| `googleMapsUrl` / `sourceUrl` | Maps URL for the place |\n| `scrapedAt` | UTC scrape timestamp |\n\nFields are conditional. A business without a website, phone, rating, hours, price or photos simply omits that field.\n\n`popularTimesSummary`, `menuLink` and `locatedIn` are retained as legacy conditional fields for saved integrations; the browserless path does not populate them.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search`, `placeUrls`, or `placeIds` |\n| `searchQuery` | string | – | Search phrase such as `coffee shops in Brooklyn` (mode=search) |\n| `location` | string | – | Location appended to each search term |\n| `placeUrls` | array | – | Google Maps place URLs (direct modes) |\n| `placeIds` | array | – | Canonical `ChIJ…` Place IDs (direct modes) |\n| `maxResults` | integer | `20` | Places per search, or total in the direct modes (1–100,000) |\n| `language` | string | `en` | One of 74 Google Maps interface languages |\n| `includeDetails` | boolean | `true` | Read Plus Code, price, hotel/fuel, attributes, photos and histogram |\n| `searchTerms` | array | `[]` | Batch search terms |\n| `locations` | array | `[]` | Batch locations; each term is searched in each location |\n| `minRating` | number | – | Keep ratings at or above this value |\n| `maxRating` | number | – | Keep ratings at or below this value |\n| `minReviews` | integer | – | Keep review counts at or above this value |\n| `maxReviews` | integer | – | Keep review counts at or below this value |\n| `openNow` | boolean | `false` | Keep places Google shows as open |\n| `hasWebsite` | boolean | `false` | Keep places with a website |\n| `hasPhone` | boolean | `false` | Keep places with a phone number |\n| `nameFilter` | string | – | Keep names containing this text |\n| `includeClosed` | boolean | `true` | When off, skip permanently closed places |\n| `excludeCategories` | array | `[]` | Skip categories containing these words |\n\n### Example: search a city\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"coffee shops\",\n  \"location\": \"Brooklyn, NY\",\n  \"maxResults\": 50,\n  \"includeDetails\": true\n}\n```\n\n### Example: several categories across several cities\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchTerms\": [\"coffee shops\", \"bakeries\"],\n  \"locations\": [\"Austin, TX\", \"Dallas, TX\"],\n  \"minRating\": 4.0,\n  \"minReviews\": 25,\n  \"hasWebsite\": true,\n  \"maxResults\": 100\n}\n```\n\n### Example: read specific place URLs\n\n```json\n{\n  \"mode\": \"placeUrls\",\n  \"placeUrls\": [\n    \"https://www.google.com/maps/place/GRIND+THE+NYC+COFFEE+SHOP+%26+BAGEL+HOUSE/@40.7590839,-73.9918101,17z/data=!3m1!4b1!4m6!3m5!1s0x89c259125a931087:0x3d471d4575240620!8m2!3d40.7590839!4d-73.9918101\"\n  ],\n  \"maxResults\": 1\n}\n```\n\n### Example: read Place IDs\n\n```json\n{\n  \"mode\": \"placeIds\",\n  \"placeIds\": [\"ChIJhxCTWhJZwokRIAYkdUUdRz0\", \"ChIJ-Y-kFABZwokRIpR1-ZpuRjQ\"],\n  \"maxResults\": 2\n}\n```\n\n### Example: search in Japanese\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"東京 レストラン\",\n  \"language\": \"ja\",\n  \"maxResults\": 30\n}\n```\n\n## Use cases\n\n- Build local prospect lists with phone, website, rating and hours for a city or neighborhood.\n- Compare ratings, review counts, price ranges and amenities across competitors.\n- Refresh opening hours, ratings and contact details for a fixed list of branch URLs or Place IDs.\n- Find hotels with star class, nightly price and check-in/check-out times.\n- Compare fuel prices at stations in an area.\n- Add coordinates, Place IDs and Plus Codes to an existing location database.\n\n## FAQ\n\n**What is the data source?** Public Google Maps pages and their public place data. No Google account, API key or login is used.\n\n**Do I need to set up a proxy?** No. The actor tries a direct connection first and escalates to Apify's proxy pool only if Google repeatedly blocks requests. There is no proxy field to configure; just fill in the input and run it.\n\n**How many results can one search return?** Google returns a ranked window of roughly 160–230 places for a typical city query; broad categories such as hotels can return more. That is the source's window, not an unlimited directory. Split a broad search by neighborhood or category for wider coverage.\n\n**Why did I get fewer rows than `maxResults`?** The source window ended, filters removed rows, duplicate places were merged, or a place page could not be read. The run status says which of these happened.\n\n**Why are some fields missing?** Google publishes different details for different businesses, categories and countries. A place without a published website, phone, price or hours omits that field; the actor never invents a value.\n\n**Are prices always available?** No. Restaurant price ranges, hotel nightly prices and fuel prices appear only when Google publishes them for that place and date.\n\n**Does this actor scrape reviews?** No. It returns the rating and review count, plus the rating histogram. Review text and reviewer profiles are outside this actor's scope.\n\n**Can I search several cities or categories in one run?** Yes. Use `searchTerms` and `locations`; every term is searched in every location with its own `maxResults` allowance.\n\n**What happens to duplicates?** Places are matched by Place ID, feature ID or Maps URL (or name plus address when none is available) across the whole run. A place found twice is saved once.\n\n**Is this affiliated with Google?** No. It is an independent tool that reads public Google Maps pages. Use the data responsibly and follow applicable terms and laws.\n",
      "input": {
        "title": "Google Maps Business Finder Input",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "enum": [
              "search",
              "placeUrls",
              "placeIds"
            ],
            "enumTitles": [
              "Search Google Maps",
              "Scrape place URLs",
              "Scrape Place IDs"
            ],
            "description": "Search mode uses a text query; placeUrls mode reads specific Maps URLs; placeIds mode resolves canonical ChIJ Place IDs.",
            "default": "search",
            "prefill": "search",
            "editor": "select"
          },
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "What to search for on Google Maps. Include a location for best results, for example 'coffee shops in New York'. Used when mode is search.",
            "editor": "textfield",
            "prefill": "coffee shops in New York"
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "Optional location appended to each search term, for example 'Austin, TX'. Leave blank when the location is already in the query.",
            "editor": "textfield"
          },
          "placeUrls": {
            "title": "Place URLs",
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Google Maps place URLs to read directly. Used in placeUrls and placeIds modes; the two direct modes accept a mixed batch.",
            "editor": "stringList"
          },
          "placeIds": {
            "title": "Google Place IDs",
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Canonical Google Place IDs beginning with ChIJ. Used in placeUrls and placeIds modes; the two direct modes accept a mixed batch.",
            "editor": "stringList",
            "minItems": 1
          },
          "maxResults": {
            "title": "Max Results",
            "type": "integer",
            "description": "Places to collect per search in search mode, or in total in the direct modes. Google returns a ranked window of roughly 160-230 places for a typical query; split broad searches by neighborhood or category for wider coverage.",
            "minimum": 1,
            "maximum": 100000,
            "default": 20,
            "prefill": 3
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language for Google Maps names, categories, addresses and hours.",
            "enum": [
              "en",
              "af",
              "az",
              "id",
              "ms",
              "bs",
              "ca",
              "cs",
              "da",
              "de",
              "et",
              "es",
              "es-419",
              "eu",
              "fil",
              "fr",
              "gl",
              "hr",
              "zu",
              "is",
              "it",
              "sw",
              "lv",
              "lt",
              "hu",
              "nl",
              "no",
              "uz",
              "pl",
              "pt-BR",
              "pt-PT",
              "ro",
              "sq",
              "sk",
              "sl",
              "fi",
              "sv",
              "vi",
              "tr",
              "el",
              "bg",
              "ky",
              "kk",
              "mk",
              "mn",
              "ru",
              "sr",
              "uk",
              "ka",
              "hy",
              "iw",
              "ur",
              "ar",
              "fa",
              "am",
              "ne",
              "hi",
              "mr",
              "bn",
              "pa",
              "gu",
              "ta",
              "te",
              "kn",
              "ml",
              "si",
              "th",
              "lo",
              "my",
              "km",
              "ko",
              "ja",
              "zh-CN",
              "zh-TW"
            ],
            "enumTitles": [
              "English",
              "Afrikaans",
              "azərbaycan",
              "Bahasa Indonesia",
              "Bahasa Melayu",
              "bosanski",
              "català",
              "Čeština",
              "Dansk",
              "Deutsch",
              "eesti",
              "Español",
              "Español (Latinoamérica)",
              "euskara",
              "Filipino",
              "Français",
              "galego",
              "Hrvatski",
              "isiZulu",
              "íslenska",
              "Italiano",
              "Kiswahili",
              "latviešu",
              "lietuvių",
              "magyar",
              "Nederlands",
              "norsk",
              "oʻzbekcha",
              "polski",
              "Português (Brasil)",
              "Português (Portugal)",
              "română",
              "shqip",
              "Slovenčina",
              "slovenščina",
              "Suomi",
              "Svenska",
              "Tiếng Việt",
              "Türkçe",
              "Ελληνικά",
              "български",
              "кыргызча",
              "қазақ тілі",
              "македонски",
              "монгол",
              "Русский",
              "српски",
              "Українська",
              "ქართული",
              "հայերեն",
              "עברית",
              "اردو",
              "العربية",
              "فارسی",
              "አማርኛ",
              "नेपाली",
              "हिन्दी",
              "मराठी",
              "বাংলা",
              "ਪੰਜਾਬੀ",
              "ગુજરાતી",
              "தமிழ்",
              "తెలుగు",
              "ಕನ್ನಡ",
              "മലയാളം",
              "සිංහල",
              "ไทย",
              "ລາວ",
              "ဗမာ",
              "ខ្មែរ",
              "한국어",
              "日本語",
              "简体中文",
              "繁體中文"
            ],
            "default": "en",
            "editor": "select"
          },
          "includeDetails": {
            "title": "Include place details",
            "type": "boolean",
            "description": "Read the place panel for Plus Code, price range, hotel and fuel details, attributes, photo count and rating histogram. Adds one request per place; the basic listing fields and weekly hours are always included.",
            "default": true,
            "prefill": false
          },
          "searchTerms": {
            "title": "Search terms (batch)",
            "type": "array",
            "description": "Several search terms in one run, for example [\"coffee shops\", \"dentists\"]. Each term is searched in every location.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "locations": {
            "title": "Locations (batch)",
            "type": "array",
            "description": "Several locations in one run, for example [\"New York, NY\", \"Austin, TX\"]. Each term is searched in each location.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Only keep businesses rated at or above this value. Businesses with no published rating are skipped.",
            "minimum": 1,
            "maximum": 5
          },
          "maxRating": {
            "title": "Maximum rating",
            "type": "number",
            "description": "Only keep businesses rated at or below this value.",
            "minimum": 1,
            "maximum": 5
          },
          "minReviews": {
            "title": "Minimum review count",
            "type": "integer",
            "description": "Only keep businesses with at least this many reviews.",
            "minimum": 0,
            "maximum": 10000000
          },
          "maxReviews": {
            "title": "Maximum review count",
            "type": "integer",
            "description": "Only keep businesses with at most this many reviews.",
            "minimum": 0,
            "maximum": 10000000
          },
          "openNow": {
            "title": "Open now only",
            "type": "boolean",
            "description": "Only keep businesses Google currently shows as open.",
            "default": false,
            "prefill": false
          },
          "hasWebsite": {
            "title": "Must have a website",
            "type": "boolean",
            "description": "Only keep businesses that publish a website on their Google Maps listing.",
            "default": false,
            "prefill": false
          },
          "hasPhone": {
            "title": "Must have a phone number",
            "type": "boolean",
            "description": "Only keep businesses that publish a phone number on their Google Maps listing.",
            "default": false,
            "prefill": false
          },
          "nameFilter": {
            "title": "Business name contains",
            "type": "string",
            "description": "Only keep businesses whose name contains this text, for example \"pizza\".",
            "editor": "textfield"
          },
          "includeClosed": {
            "title": "Include permanently closed businesses",
            "type": "boolean",
            "description": "When off, businesses Google marks as permanently closed are skipped.",
            "default": true,
            "prefill": true
          },
          "excludeCategories": {
            "title": "Exclude categories",
            "type": "array",
            "description": "Skip businesses whose category contains any of these words, for example [\"hotel\", \"casino\"].",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Maps Business Finder with Hours, Ratings & Location Output",
        "description": "Dataset of public Google Maps places with name, address, category, rating, review count, hours, price, attributes, coordinates and place identifiers.",
        "properties": {
          "places": {
            "type": "string",
            "title": "Places",
            "description": "Each item contains only fields observed on the public place page or its Maps XHR data.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Google Maps Businesses",
              "transformation": {
                "fields": [
                  "recordType",
                  "searchTerm",
                  "rankInSearch",
                  "name",
                  "categoryName",
                  "categories",
                  "totalScore",
                  "reviewsCount",
                  "address",
                  "phone",
                  "website",
                  "priceLevel",
                  "isOpenNow",
                  "latitude",
                  "longitude",
                  "placeId",
                  "googleMapsUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "name": {
                    "label": "Name",
                    "format": "text"
                  },
                  "categoryName": {
                    "label": "Category",
                    "format": "text"
                  },
                  "totalScore": {
                    "label": "Rating",
                    "format": "number"
                  },
                  "reviewsCount": {
                    "label": "Reviews",
                    "format": "number"
                  },
                  "address": {
                    "label": "Address",
                    "format": "text"
                  },
                  "phone": {
                    "label": "Phone",
                    "format": "text"
                  },
                  "website": {
                    "label": "Website",
                    "format": "link"
                  }
                }
              }
            },
            "full": {
              "title": "Complete Business Data",
              "transformation": {
                "fields": [
                  "recordType",
                  "searchTerm",
                  "rankInSearch",
                  "name",
                  "categoryName",
                  "categories",
                  "description",
                  "totalScore",
                  "reviewsCount",
                  "ratingHistogram",
                  "priceLevel",
                  "priceOfferAmount",
                  "priceOfferCurrency",
                  "priceOfferDateRange",
                  "address",
                  "location",
                  "longitude",
                  "latitude",
                  "plusCode",
                  "locatedIn",
                  "phone",
                  "website",
                  "menuLink",
                  "bookingLinks",
                  "hours",
                  "hoursStatus",
                  "isOpenNow",
                  "serviceOptions",
                  "amenities",
                  "placeAttributes",
                  "attributes",
                  "hotelAmenities",
                  "priceOfferFreeCancellation",
                  "checkOutTime",
                  "checkInTime",
                  "hotelStarRating",
                  "hotelStars",
                  "fuelPrices",
                  "hasStreetView",
                  "streetViewCount",
                  "photosSample",
                  "photoCount",
                  "popularTimesSummary",
                  "claimed",
                  "permanentlyClosed",
                  "temporarilyClosed",
                  "placeId",
                  "featureId",
                  "cid",
                  "kgmid",
                  "timezone",
                  "countryCode",
                  "googleMapsUrl",
                  "sourceUrl",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {},
      "minMemoryMbytes": 1024,
      "maxMemoryMbytes": 1024
    },
    "buildNumber": "1.0.2",
    "imageDigest": "70e0ac14a3e292804a7ef3d07f060f4dec20e72bcf558c8026f2f35605af231d",
    "actVersion": {
      "sourceType": "TARBALL",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.03309555555555556
    }
  }
}