{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Lead Scraper – Emails, Phones, Websites, Reviews",
    "description": "Google Maps Lead Scraper with email extraction: search any keyword and city and get business name, email found on the website, phone, website, address, rating, reviews, opening hours, category and GPS. No API key. Export to CSV, Excel or Google Sheets for B2B lead generation and cold outreach.",
    "version": "1.0",
    "x-build-id": "0ehvfZLLADmGfj22W"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nourishing_courier~google-maps-lead-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nourishing_courier-google-maps-lead-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/nourishing_courier~google-maps-lead-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nourishing_courier-google-maps-lead-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/nourishing_courier~google-maps-lead-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nourishing_courier-google-maps-lead-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": "Enter searches exactly like you would on Google Maps. Examples: 'dentists in Los Angeles', 'plumbers near 90210', 'Italian restaurants Manhattan'. Add multiple searches to run them all at once.",
            "default": [
              "coffee shops in San Francisco"
            ],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Or paste Google Maps URLs directly",
            "type": "array",
            "description": "Alternative: Paste direct Google Maps URLs if you already have them. Works with search result pages or individual business pages.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResults": {
            "title": "How many leads per search?",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Number of businesses to extract for each search. Start with 50-100 for testing, then increase. Maximum 500 per search.",
            "default": 5
          },
          "maxScrolls": {
            "title": "Scroll depth",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How far to scroll in search results. Higher = more businesses found but slower. 20 is good for most searches, increase to 50+ for competitive areas.",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Speed (parallel browsers)",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many businesses to scrape simultaneously. 5 is balanced. Increase to 10-15 for faster results (uses more memory/cost).",
            "default": 5
          },
          "extractEmails": {
            "title": "Find email addresses",
            "type": "boolean",
            "description": "Visit each business website to find email addresses. This is the killer feature - get contact emails not shown on Google Maps! Adds ~5-10 seconds per business.",
            "default": true
          },
          "extractPhotos": {
            "title": "Include business photos",
            "type": "boolean",
            "description": "Extract business photo URLs from Google Maps. Useful for directories or visual research.",
            "default": false
          },
          "extractReviews": {
            "title": "Include customer reviews",
            "type": "boolean",
            "description": "Extract individual review text and ratings. Great for sentiment analysis or finding businesses with specific feedback patterns.",
            "default": false
          },
          "maxReviews": {
            "title": "Reviews per business",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "If extracting reviews, how many to grab per business. 5 gives you a good sample, 20+ for deeper analysis.",
            "default": 5
          },
          "language": {
            "title": "Results language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "nl",
              "pl",
              "ru",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW",
              "ar",
              "hi",
              "th",
              "vi",
              "id",
              "tr",
              "cs",
              "sv",
              "da",
              "fi",
              "no",
              "hu",
              "ro",
              "uk",
              "he",
              "el"
            ],
            "type": "string",
            "description": "Language for search results. Choose the language spoken in your target market.",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Residential proxies are pre-configured and recommended. They prevent blocking and ensure reliable data extraction."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}