{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper [Advance]",
    "description": "Scrape Google Maps business data—names, phones, websites, emails, reviews (up to 5,000), photos, and GPS—to CSV or JSON. No Google Places API key. Up to 500 places per run. Search by keyword + location, Maps URL, Place ID, GeoJSON area, or map explore. Built for lead gen and local SEO.",
    "version": "0.8",
    "x-build-id": "g4iotWHjPOqJWys1n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapeio~google-maps-scraper-advance/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapeio-google-maps-scraper-advance",
        "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/scrapeio~google-maps-scraper-advance/runs": {
      "post": {
        "operationId": "runs-sync-scrapeio-google-maps-scraper-advance",
        "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/scrapeio~google-maps-scraper-advance/run-sync": {
      "post": {
        "operationId": "run-sync-scrapeio-google-maps-scraper-advance",
        "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": {
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "What to find on Maps (e.g. coffee shop). For several phrases use \"Additional search queries\"."
          },
          "searchTerms": {
            "title": "Additional search queries",
            "type": "array",
            "description": "Extra phrases — each becomes its own Maps search (same location applies).",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City or region appended to keyword searches (e.g. Austin, TX, USA). Compose one string here instead of splitting into city/state fields."
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Full Maps search or place links.",
            "items": {
              "type": "string"
            }
          },
          "placeIds": {
            "title": "Place IDs",
            "type": "array",
            "description": "Place IDs from Google (often start with ChIJ…).",
            "items": {
              "type": "string"
            }
          },
          "customGeolocation": {
            "title": "GeoJSON area or point",
            "type": "object",
            "description": "Point (+ optional radiusKm), Polygon, or MultiPolygon. Searches grid points inside the shape."
          },
          "exploreMapInsteadOfSearch": {
            "title": "Explore map here (no keyword)",
            "type": "boolean",
            "description": "Open the map at Map center below and scroll visible listings.",
            "default": false
          },
          "mapCenter": {
            "title": "Map center",
            "type": "object",
            "description": "{ \"lat\": number, \"lng\": number, \"zoom\": optional 1–21 }."
          },
          "maxResults": {
            "title": "Max places",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop after this many unique businesses (1–500).",
            "default": 100
          },
          "languageCode": {
            "title": "Maps language",
            "type": "string",
            "description": "UI locale, e.g. en, de, es.",
            "default": "en"
          },
          "categories": {
            "title": "Post-filter keywords",
            "type": "array",
            "description": "After scraping, keep rows whose name/snippet mentions one of these.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "Minimum stars (0–5)",
            "type": "number",
            "description": "Drop rows below this rating when stars are visible in the list."
          },
          "searchMatching": {
            "title": "Name vs queries",
            "enum": [
              "all",
              "only_includes"
            ],
            "type": "string",
            "description": "How place names match your keywords. “Exact phrase” mode is omitted here — Maps titles rarely equal a typed query verbatim (Unicode, apostrophes, brands); use substring match or plain API-only `only_exact` if you know the precise title.",
            "default": "all"
          },
          "website": {
            "title": "Website filter",
            "enum": [
              "allPlaces",
              "withWebsite",
              "withoutWebsite"
            ],
            "type": "string",
            "description": "Usually needs opening place details (automatic when filtering by website).",
            "default": "allPlaces"
          },
          "skipClosedPlaces": {
            "title": "Skip closed",
            "type": "boolean",
            "description": "Remove permanently/temporarily closed listings seen in UI.",
            "default": false
          },
          "scrapePlaceDetailPage": {
            "title": "Open each place page",
            "type": "boolean",
            "description": "Slower — phone, website, address. Turns on automatically for reviews/images/extras.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per place",
            "minimum": 0,
            "type": "integer",
            "description": "0 = skip (up to 5000 subject to Maps UI)."
          },
          "reviewsSort": {
            "title": "Review sort",
            "enum": [
              "newest",
              "mostRelevant",
              "highestRanking",
              "lowestRanking"
            ],
            "type": "string",
            "description": "Best-effort from the Reviews menu.",
            "default": "newest"
          },
          "reviewsFilterString": {
            "title": "Review text contains",
            "type": "string",
            "description": "Keep reviews whose text includes this phrase."
          },
          "scrapeReviewsPersonalData": {
            "title": "Reviewer names",
            "type": "boolean",
            "description": "If off, reviewerName is omitted.",
            "default": true
          },
          "maxImages": {
            "title": "Max photos per place",
            "minimum": 0,
            "type": "integer",
            "description": "0 = skip (cap 200)."
          },
          "scrapeImageAuthors": {
            "title": "Photo author / alt",
            "type": "boolean",
            "description": "When scraping photos, include author or alt text metadata when Maps exposes it.",
            "default": false
          },
          "includeWebResults": {
            "title": "Web results block",
            "type": "boolean",
            "description": "Extract links from the Web results section on the place page when present.",
            "default": false
          },
          "scrapeDirectories": {
            "title": "Related / directory links",
            "type": "boolean",
            "description": "Extract extra Maps-related place links (e.g. directory-style listings inside a venue).",
            "default": false
          },
          "maxQuestions": {
            "title": "Q&A pairs",
            "minimum": 0,
            "type": "integer",
            "description": "If this key is present, Q&A runs. 0 = light heuristic pass."
          },
          "scrapeTableReservationProvider": {
            "title": "Reservation hints",
            "type": "boolean",
            "description": "Best-effort scrape of reservation provider name or booking URL from place page text.",
            "default": false
          },
          "enrichContactsFromWebsite": {
            "title": "Crawl website for contacts",
            "type": "boolean",
            "description": "After a site URL is found, fetch emails/phones/social links.",
            "default": false
          },
          "enrichSocialFacebook": {
            "title": "Facebook preview",
            "type": "boolean",
            "description": "If a Facebook URL was discovered, load public meta (title/description) for a short preview.",
            "default": false
          },
          "enrichSocialInstagram": {
            "title": "Instagram preview",
            "type": "boolean",
            "description": "If an Instagram URL was discovered, load public meta for a short preview.",
            "default": false
          },
          "enrichSocialYoutube": {
            "title": "YouTube preview",
            "type": "boolean",
            "description": "If a YouTube URL was discovered, load public meta for a short preview.",
            "default": false
          },
          "enrichSocialTiktok": {
            "title": "TikTok preview",
            "type": "boolean",
            "description": "If a TikTok URL was discovered, load public meta for a short preview.",
            "default": false
          },
          "enrichSocialTwitter": {
            "title": "X / Twitter preview",
            "type": "boolean",
            "description": "If an X/Twitter URL was discovered, load public meta for a short preview.",
            "default": false
          },
          "includeReviewsDatasetView": {
            "title": "Flat reviews file (KV)",
            "type": "boolean",
            "description": "Also writes REVIEWS_ROWS JSON to key-value store.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}