{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper - Places, Leads, Emails & Contacts",
    "description": "Scrape Google Maps places and local business leads with no API key. Get name, category, phone, website, emails, social links, address, rating, hours, coordinates, plus code, price level, place ID and CID. Filter by rating, category, website, phone, open now. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "bo0Tmr4FgNj0U64w3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-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/scrapers_lat~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-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/scrapers_lat~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-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": {
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One or more business types or names to find, for example dentist, coffee shop, law firm. Each query runs across the whole location. Also accepts a single value.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query (single)",
            "type": "string",
            "description": "Single business type or name to find. Combine with the location fields below. Use Search queries above to run several at once."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, area or region to search in, for example Austin, TX or Miami FL. Appended to each search query. Takes precedence over the city/state/country fields."
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City to target. Used to build the location when the Location field above is empty."
          },
          "state": {
            "title": "State / region",
            "type": "string",
            "description": "State, province or region. Used to build the location when the Location field above is empty."
          },
          "county": {
            "title": "County",
            "type": "string",
            "description": "County to target. Used to build the location when the Location field above is empty."
          },
          "postalCode": {
            "title": "Postal code",
            "type": "string",
            "description": "Postal or ZIP code to target. Used to build the location when the Location field above is empty."
          },
          "country": {
            "title": "Country name",
            "type": "string",
            "description": "Country name to append to the location, for example United States. For proxy country and Google gl use the Region field below."
          },
          "searchUrls": {
            "title": "Google Maps search or place URLs",
            "type": "array",
            "description": "Optional. One or more Google Maps search URLs (https://www.google.com/maps/search/plumber+in+Miami+FL) or place URLs. When set, these run directly alongside any search queries.",
            "items": {
              "type": "string"
            }
          },
          "maxPlaces": {
            "title": "Max places to scrape",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of places (businesses) to collect across all queries. Google returns roughly 100 to 120 results per search."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "pt",
              "fr",
              "de",
              "it",
              "nl"
            ],
            "type": "string",
            "description": "Interface language for the results (Google hl parameter).",
            "default": "en"
          },
          "region": {
            "title": "Region",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "mx",
              "br",
              "ar",
              "co",
              "cl",
              "es",
              "fr",
              "de"
            ],
            "type": "string",
            "description": "Country context for the search (Google gl parameter). Also used as the residential proxy country.",
            "default": "us"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only places with at least this Google star rating (1 to 5). Leave empty for no rating filter."
          },
          "categoryFilterWords": {
            "title": "Category filter words",
            "type": "array",
            "description": "Keep only places whose category matches one of these words, for example restaurant, bakery. Case-insensitive substring match. Leave empty to keep all categories.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithWebsite": {
            "title": "Only places with a website",
            "type": "boolean",
            "description": "Keep only places that have a website.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only places with a phone",
            "type": "boolean",
            "description": "Keep only places that have a phone number.",
            "default": false
          },
          "onlyWithEmail": {
            "title": "Only places with an email",
            "type": "boolean",
            "description": "Keep only places where a public email was found on the website. Requires the Scrape contacts add-on below.",
            "default": false
          },
          "openNowOnly": {
            "title": "Only places open now",
            "type": "boolean",
            "description": "Keep only places that are open at scrape time.",
            "default": false
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Drop places marked permanently or temporarily closed.",
            "default": false
          },
          "deduplicatePlaces": {
            "title": "Deduplicate places",
            "type": "boolean",
            "description": "Remove duplicate places (by place ID) across all queries. On by default.",
            "default": true
          },
          "scrapeImages": {
            "title": "Include image URLs",
            "type": "boolean",
            "description": "Include business photo URLs from the listing. On by default. No extra charge.",
            "default": true
          },
          "maxImages": {
            "title": "Max images per place",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of image URLs to return per place.",
            "default": 10
          },
          "scrapeContacts": {
            "title": "Scrape contacts from the website (paid add-on)",
            "type": "boolean",
            "description": "Optional paid add-on, off by default. For each place with a website, fetch the site and extract public emails plus social profiles (Facebook, Instagram, X/Twitter, LinkedIn, YouTube, TikTok, Pinterest, Discord). Billed once per place where contact data is found. Requires a paid Apify plan.",
            "default": false
          },
          "maxContactEnrich": {
            "title": "Max places to enrich with contacts",
            "minimum": 1,
            "type": "integer",
            "description": "Cap how many places the contact add-on visits, to control add-on cost. Leave empty to attempt all places that have a website."
          },
          "withAiProfileSummary": {
            "title": "AI profile summary (paid add-on)",
            "type": "boolean",
            "description": "Optional paid AI add-on, off by default. Generates a 1 to 2 sentence plain-English profile of each business. Requires a paid Apify plan. Billed only when a summary is produced.",
            "default": false
          },
          "withAiLeadScore": {
            "title": "AI lead score (paid add-on)",
            "type": "boolean",
            "description": "Optional paid AI add-on, off by default. Scores each business 0 to 100 as an outreach lead with a short rationale. Requires a paid Apify plan. Billed only when a score is produced.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}