{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Leads Scraper: Phones, Emails & Reviews",
    "description": "Build contact-ready Google Maps business lists with a transparent 0-100 lead score. Detailed mode adds phones, websites, public emails, social links, reviews, hours, photos, and coordinates.",
    "version": "1.0",
    "x-build-id": "iSAwmNSs1KJefVhpc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~google-maps-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-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/fascinating_lentil~google-maps-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-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/fascinating_lentil~google-maps-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-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": {
          "keywords": {
            "title": "Search keywords",
            "minItems": 1,
            "type": "array",
            "description": "Business types or search terms such as dentists, restaurants, real estate agents, or auto repair. Each keyword is combined with each location. Optional when startUrls is supplied.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Google Maps search or place URLs",
            "type": "array",
            "description": "Optional Google Maps search URLs (preserves filters and map area) or direct place URLs. Short maps.app.goo.gl place links are supported. URLs can be combined with keyword/location searches.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Custom worldwide locations",
            "minItems": 1,
            "type": "array",
            "description": "Cities, regions, postal codes, addresses, or 'lat,lon' pairs to search. Include the country for best accuracy, e.g. 'Mumbai, India', 'London, UK', or '48.8566,2.3522'. Required when Location preset is 'None'.",
            "items": {
              "type": "string"
            }
          },
          "locationPreset": {
            "title": "Location preset",
            "enum": [
              "none",
              "high_demand_markets",
              "world_major_cities"
            ],
            "type": "string",
            "description": "Optional city preset. Keep 'None' for a controlled low-cost run. Presets create many keyword/location searches and should be used only for intentional batch jobs.",
            "default": "none"
          },
          "maxResults": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of businesses to save per keyword/location combination. Use 1-5 for tests or agent calls; increase only for intentional production lead lists.",
            "default": 5
          },
          "language": {
            "title": "Result language",
            "pattern": "^[a-zA-Z]{2,5}$",
            "minLength": 2,
            "maxLength": 5,
            "type": "string",
            "description": "Two-letter language code for result text, e.g. 'en', 'es', 'de', 'fr', 'ja'.",
            "default": "en"
          },
          "countryCode": {
            "title": "Optional country bias",
            "pattern": "^[a-zA-Z]{2}$",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Optional two-letter country code that biases Google Maps results and proxy country, e.g. 'us', 'gb', 'de', 'jp'. Leave empty for worldwide searches based only on the location text."
          },
          "maxCrawledPlacesPerQuery": {
            "title": "Max places to visit per query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on places the Actor inspects per keyword/location. Keep close to maxResults for cheaper tests. Across the whole run, queries multiplied by this value cannot exceed 1,000 planned core place inspections; optional missing-field retries are additional.",
            "default": 5
          },
          "skipClosedBusinesses": {
            "title": "Skip permanently closed businesses",
            "type": "boolean",
            "description": "If true, businesses marked as 'Permanently closed' are filtered out.",
            "default": true
          },
          "extractionMode": {
            "title": "Extraction mode",
            "enum": [
              "fast",
              "detailed"
            ],
            "type": "string",
            "description": "Fast mode saves search-feed fields without opening every business page. Detailed mode visits each place for phone, website, structured hours, photos, status, price, reviews, and optional website contacts. Direct place URLs always use Detailed extraction.",
            "default": "fast"
          },
          "scrapeDetails": {
            "title": "Retry missing phone/address",
            "type": "boolean",
            "description": "Detailed mode only. Revisit a place once when phone or address is still missing and also attempt its Plus Code. Leave disabled unless missing-field recovery is important.",
            "default": false
          },
          "maxReviews": {
            "title": "Review samples per business",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Detailed mode and direct place URLs only. Save up to 20 visible public Google review samples per business. Set to 0 for the fastest run.",
            "default": 0
          },
          "maxImages": {
            "title": "Image URLs per business",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Detailed mode and direct place URLs only. Capture up to 20 visible Google Maps image URLs. The default captures the hero image when available.",
            "default": 1
          },
          "enrichContacts": {
            "title": "Find public emails and social links",
            "type": "boolean",
            "description": "Detailed mode and direct place URLs only. Fetch one bounded public HTML page from each listed business website and collect visible public emails, social profile links, and a contact-page URL. The website request runs directly and does not use the Google Maps proxy.",
            "default": false
          },
          "proxyConfig": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Use Apify Proxy, custom proxy URLs, or a direct connection. The default tries lower-cost datacenter proxy first and falls back to Residential only if the cheap tier is blocked. Explicit proxy choices are never overridden.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}