{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper · No Login · $0.07/1k",
    "description": "Google Maps scraper and API: places from any search and location with address, phone, website, rating, review count, opening hours and photos. Add details, reviews and emails or social profiles from websites. Rating, category and website filters. No login, no API key. $0.07 per 1,000 places.",
    "version": "0.0",
    "x-build-id": "FXp332BFS5LUrbD6I"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alfalfa~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alfalfa-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/alfalfa~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alfalfa-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/alfalfa~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alfalfa-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": {
          "searchStringsArray": {
            "title": "Search terms",
            "type": "array",
            "description": "What to look for on Google Maps, one per line: <code>restaurant</code>, <code>dentist</code>, <code>coffee shop</code>. Each term is searched in every location below. A term that already names a place (<code>pizza in Brooklyn</code>) works without a location.",
            "items": {
              "type": "string"
            }
          },
          "locationQuery": {
            "title": "Location",
            "type": "string",
            "description": "City, district, region or country as you would type it into Google Maps: <code>New York, USA</code>, <code>Prague</code>, <code>Texas</code>. Separate several locations with a semicolon. Larger areas are searched part by part, so you are not limited to the 120 places Google shows on one map."
          },
          "maxCrawledPlacesPerSearch": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum places for each search term in each location (and for each search URL). Duplicates are removed across the whole run and charged once.",
            "default": 100
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt-BR",
              "pt-PT",
              "nl",
              "pl",
              "cs",
              "sk",
              "hu",
              "ro",
              "bg",
              "hr",
              "sl",
              "sr",
              "uk",
              "ru",
              "el",
              "tr",
              "sv",
              "da",
              "no",
              "fi",
              "et",
              "lv",
              "lt",
              "ar",
              "he",
              "fa",
              "hi",
              "bn",
              "th",
              "vi",
              "id",
              "ms",
              "fil",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language of the place names, categories, opening hours and review translations.",
            "default": "en"
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Place pages (<code>google.com/maps/place/...</code>), share links (<code>maps.app.goo.gl/...</code>), <code>?cid=</code> and <code>maps?q=&lt;place name&gt;</code> links, and search pages (<code>google.com/maps/search/pizza/@40.75,-73.98,14z</code>, searched in that map area). A link to a text file with one URL per line works too.",
            "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 (<code>ChIJ...</code>), one per line. CIDs (the number in <code>?cid=</code> links) work too.",
            "items": {
              "type": "string"
            }
          },
          "scrapePlaceDetailPage": {
            "title": "Include place details",
            "type": "boolean",
            "description": "Adds the description from the owner, star breakdown, review topics, photo count and, where Google shows them, price range, popular times, menu, image categories and related places. One extra request per place. $0.20 per 1,000 places with details. Places from URLs and place IDs always come with details. Off = the search result fields: name, address, phone, website, rating, review count, weekly hours, attributes.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per place",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Reviews to collect for each place, saved in the <code>reviews</code> field of the place. 0 = none. $0.035 per 1,000 reviews. Up to 5,000 per place; a place with very long reviews stops earlier, at the size one dataset record can hold (about 6 MB).",
            "default": 0
          },
          "reviewsSort": {
            "title": "Sort reviews by",
            "enum": [
              "newest",
              "mostRelevant",
              "highestRanking",
              "lowestRanking"
            ],
            "type": "string",
            "description": "Order in which reviews are collected. With a start date below, reviews are always collected newest first.",
            "default": "newest"
          },
          "reviewsStartDate": {
            "title": "Reviews newer than",
            "type": "string",
            "description": "Only reviews published after this date: <code>2026-01-31</code> or a period like <code>3 months</code>, <code>2 weeks</code>, <code>1 year</code>."
          },
          "reviewsFilterString": {
            "title": "Only reviews containing",
            "type": "string",
            "description": "Keep only reviews whose text (or translation) contains this word or phrase. Not case sensitive."
          },
          "scrapeReviewsPersonalData": {
            "title": "Include reviewer details",
            "type": "boolean",
            "description": "Reviewer name, profile link, photo, review count and Local Guide flag. Turn off if you do not need personal data.",
            "default": true
          },
          "maxImages": {
            "title": "Max image URLs per place",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Photo URLs to include in <code>imageUrls</code> (from the place details, usually up to 20). 0 = only the main photo. No surcharge.",
            "default": 0
          },
          "scrapeContacts": {
            "title": "Emails and social profiles from websites",
            "type": "boolean",
            "description": "Visits the website of each place and adds emails, phone numbers and Facebook, Instagram, LinkedIn, X, YouTube, TikTok and Pinterest profiles. $0.90 per 1,000 places where an email or profile was found; nothing for the rest.",
            "default": false
          },
          "categoryFilterWords": {
            "title": "Only these categories",
            "type": "array",
            "description": "Keep places whose Google category contains one of these words: <code>pizza</code> keeps Pizza restaurant and Pizza delivery. Empty = all. Filters are free.",
            "items": {
              "type": "string"
            }
          },
          "searchMatching": {
            "title": "Place name must match the search term",
            "enum": [
              "all",
              "only_includes",
              "only_exact"
            ],
            "type": "string",
            "description": "Keep only places whose name contains, or equals, the search term. Useful for brands (<code>Starbucks</code>).",
            "default": "all"
          },
          "placeMinimumStars": {
            "title": "Minimum rating",
            "enum": [
              "",
              "two",
              "twoAndHalf",
              "three",
              "threeAndHalf",
              "four",
              "fourAndHalf"
            ],
            "type": "string",
            "description": "Keep only places rated at least this many stars. Places without a rating are left out.",
            "default": ""
          },
          "website": {
            "title": "Website",
            "enum": [
              "allPlaces",
              "withWebsite",
              "withoutWebsite"
            ],
            "type": "string",
            "description": "Keep places with a website, without one (good for selling web design), or all.",
            "default": "allPlaces"
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places marked as temporarily or permanently closed.",
            "default": false
          },
          "countryCode": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country the searches are made from (<code>us</code>, <code>de</code>). Affects how Google reads ambiguous locations and formats phone numbers. Default <code>us</code>."
          },
          "maxConcurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Places processed in parallel (default 10).",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential proxies are included in the price. Leave the default unless you want your own proxy servers.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}