{
  "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.18",
    "x-build-id": "ezAI0wR3o3LVJP0f5"
  },
  "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 + radiusKm (recommended, radius ≤ 20 km). Polygon/MultiPolygon allowed up to maxResults 80 (uses a small search grid)."
          },
          "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": "Unique businesses to collect (1–500). Default 50. Use list-only for 200–500; add detail/reviews only for smaller runs. Set Actor timeout ≥ 15 min on Apify for 400+ list-only.",
            "default": 50
          },
          "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": "Open each place page for phone, website, address. Auto-on for reviews/images. Capped at 30 place pages per run if maxResults > 30.",
            "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": "Crawl business websites for emails/phones/socials (up to 50 places per run). Needs website on the place row.",
            "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 (one row per review).",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy (optional override)",
            "type": "object",
            "description": "ProxyJet is hardcoded in the Actor (ca.proxy-jet.io). Use proxyUrls here only to override. Env PROXY_URL / PROXYJET_URL also overrides if set."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}