{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper: Places, Hours, Popular Times & Leads",
    "description": "Scrape Google Maps places by search, area, URL or place ID: phone, website, rating, reviews, hours, popular times and emails. Export CSV, Excel, JSON or XML.",
    "version": "0.1",
    "x-build-id": "9x2amMswtNqATMEUc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-google-maps-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/parseforge~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-google-maps-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/parseforge~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-google-maps-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "What you would type into Google Maps: a category (\"dentists\"), a cuisine (\"ramen\"), a brand or a business name. Each term is searched separately and combined with the location below.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, neighborhood, postcode or region, in plain words (for example \"Austin, TX\", \"Shibuya, Tokyo\" or \"10115 Berlin\"). It is added to every search term. Leave it empty to put the place in the term itself or to use the coordinates below."
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Google Maps search URLs (maps/search/...@lat,lng,zoom), place URLs (maps/place/...), ?cid= links or maps.app.goo.gl short links. A search URL keeps its map area; a place URL returns that one place.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "Google place IDs (ChIJ...), CIDs (the long number in ?cid=) or feature IDs (0x...:0x...). Each returns one place.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          },
          "maxPlacesPerSearch": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper limit for each search term. One map view of Google Maps lists about 180 places at most; turn on Deep search below to go past that in a big area.",
            "default": 120
          },
          "latitude": {
            "title": "Latitude",
            "type": "string",
            "description": "Center of the map, in decimal degrees (for example 47.6062)."
          },
          "longitude": {
            "title": "Longitude",
            "type": "string",
            "description": "Center of the map, in decimal degrees (for example -122.3321)."
          },
          "zoom": {
            "title": "Zoom",
            "minimum": 1,
            "maximum": 21,
            "type": "integer",
            "description": "Google Maps zoom level for the coordinates: 11 is a whole city, 14 a district, 17 a few streets.",
            "default": 13
          },
          "deepSearch": {
            "title": "Deep search (split big areas)",
            "type": "boolean",
            "description": "When a search fills Google's per-view limit, split the area into smaller views and search each one, up to three levels deep. Finds many more places in a large city; takes longer.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt-BR",
              "pt-PT",
              "nl",
              "pl",
              "ru",
              "uk",
              "tr",
              "ar",
              "he",
              "hi",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "th",
              "vi",
              "id",
              "ms",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "sk",
              "hu",
              "ro",
              "bg",
              "el",
              "hr",
              "sr",
              "sl",
              "lt",
              "lv",
              "et",
              "fil",
              "fa",
              "bn",
              "ca"
            ],
            "type": "string",
            "description": "Language of the text Google returns: category names, weekday names, opening status and descriptions.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "enum": [
              "af",
              "ax",
              "al",
              "dz",
              "as",
              "ad",
              "ao",
              "ai",
              "aq",
              "ag",
              "ar",
              "am",
              "aw",
              "ac",
              "au",
              "at",
              "az",
              "bs",
              "bh",
              "bd",
              "bb",
              "by",
              "be",
              "bz",
              "bj",
              "dy",
              "bm",
              "bt",
              "bo",
              "ba",
              "bw",
              "bv",
              "br",
              "io",
              "vg",
              "bn",
              "bg",
              "bf",
              "hv",
              "bi",
              "kh",
              "cm",
              "ca",
              "ic",
              "cv",
              "bq",
              "ky",
              "cf",
              "ea",
              "td",
              "cl",
              "cn",
              "cx",
              "cp",
              "cc",
              "co",
              "km",
              "cg",
              "cd",
              "zr",
              "ck",
              "cr",
              "ci",
              "hr",
              "cu",
              "an",
              "cw",
              "cy",
              "cz",
              "dk",
              "dg",
              "dj",
              "dm",
              "do",
              "ec",
              "eg",
              "sv",
              "gq",
              "er",
              "ee",
              "sz",
              "et",
              "fk",
              "fo",
              "fj",
              "fi",
              "fr",
              "fx",
              "gf",
              "pf",
              "tf",
              "ga",
              "gm",
              "ge",
              "dd",
              "de",
              "gh",
              "gi",
              "gr",
              "gl",
              "gd",
              "gp",
              "gu",
              "gt",
              "gg",
              "gn",
              "gw",
              "gy",
              "ht",
              "hm",
              "hn",
              "hk",
              "hu",
              "is",
              "in",
              "id",
              "ir",
              "iq",
              "ie",
              "im",
              "il",
              "it",
              "jm",
              "jp",
              "je",
              "jo",
              "kz",
              "ke",
              "ki",
              "kw",
              "kg",
              "la",
              "lv",
              "lb",
              "ls",
              "lr",
              "ly",
              "li",
              "lt",
              "lu",
              "mo",
              "mg",
              "mw",
              "my",
              "mv",
              "ml",
              "mt",
              "mh",
              "mq",
              "mr",
              "mu",
              "yt",
              "mx",
              "fm",
              "md",
              "mc",
              "mn",
              "me",
              "ms",
              "ma",
              "mz",
              "bu",
              "mm",
              "na",
              "nr",
              "np",
              "nl",
              "nc",
              "nz",
              "ni",
              "ne",
              "ng",
              "nu",
              "nf",
              "kp",
              "mk",
              "mp",
              "no",
              "om",
              "pk",
              "pw",
              "ps",
              "pa",
              "pg",
              "py",
              "pe",
              "ph",
              "pn",
              "pl",
              "pt",
              "pr",
              "qa",
              "re",
              "ro",
              "ru",
              "su",
              "rw",
              "ws",
              "sm",
              "st",
              "cq",
              "sa",
              "sn",
              "cs",
              "rs",
              "yu",
              "sc",
              "sl",
              "sg",
              "sx",
              "sk",
              "si",
              "sb",
              "so",
              "za",
              "gs",
              "kr",
              "ss",
              "es",
              "lk",
              "bl",
              "sh",
              "kn",
              "lc",
              "mf",
              "pm",
              "vc",
              "sd",
              "sr",
              "sj",
              "se",
              "ch",
              "sy",
              "tw",
              "tj",
              "tz",
              "th",
              "tl",
              "tp",
              "tg",
              "tk",
              "to",
              "tt",
              "ta",
              "tn",
              "tr",
              "tm",
              "tc",
              "tv",
              "um",
              "vi",
              "ug",
              "ua",
              "ae",
              "gb",
              "uk",
              "us",
              "uy",
              "uz",
              "nh",
              "vu",
              "va",
              "ve",
              "vd",
              "vn",
              "wf",
              "eh",
              "yd",
              "ye",
              "zm",
              "rh",
              "zw"
            ],
            "type": "string",
            "description": "The country Google biases results toward when a search is ambiguous (for example \"pizza\" with no location, or \"Springfield city hall\").",
            "default": "us"
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "0",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Keep only places with at least this star rating. Places without any rating are left out when this is set.",
            "default": "0"
          },
          "minReviews": {
            "title": "Minimum reviews",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Keep only places with at least this many Google reviews."
          },
          "categoryFilter": {
            "title": "Category must include",
            "type": "array",
            "description": "Keep only places whose Google categories contain one of these words (for example \"dentist\" keeps \"Cosmetic dentist\" and \"Pediatric dentist\"). Use the same language as the Language field.",
            "items": {
              "type": "string"
            }
          },
          "openNow": {
            "title": "Open now",
            "type": "boolean",
            "description": "Keep only places that Google shows as open at the moment of the run, in their local time.",
            "default": false
          },
          "requireWebsite": {
            "title": "Has a website",
            "type": "boolean",
            "description": "Keep only places that list a website.",
            "default": false
          },
          "requirePhone": {
            "title": "Has a phone number",
            "type": "boolean",
            "description": "Keep only places that list a phone number.",
            "default": false
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places Google marks as permanently or temporarily closed.",
            "default": true
          },
          "includePlaceDetails": {
            "title": "Include place details",
            "type": "boolean",
            "description": "Adds popular times by hour, the 1 to 5 star distribution, the menu link, the owner's description, typical time spent, the venue it is located in, review topics, \"people also search for\" and up to 20 photo URLs.",
            "default": false
          },
          "includeContacts": {
            "title": "Include website contacts",
            "type": "boolean",
            "description": "Adds the primary email, every email found, and LinkedIn, Facebook, Instagram, X, YouTube and TikTok profile links from the business website.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel places",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many places are processed at once. Only matters with place details or website contacts on.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy without a group (datacenter) works for Google Maps. Residential is not needed; the run switches to it by itself only if Google keeps refusing.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}