{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Scraper Email Phone Social",
    "description": "Extract Google Maps contact details. 🔥 $5/1k 🔥 Scrape phones, emails, websites, social media links, addresses, zip codes, ratings, and reviews from Google Maps business listings. Export as JSON or CSV, run via API, schedule runs, or integrate with other tools.",
    "version": "0.0",
    "x-build-id": "WST3745smfv5Gwj2j"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/autoharvestor~Google-Maps-Scraper-Email-Phone/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-autoharvestor-Google-Maps-Scraper-Email-Phone",
        "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/autoharvestor~Google-Maps-Scraper-Email-Phone/runs": {
      "post": {
        "operationId": "runs-sync-autoharvestor-Google-Maps-Scraper-Email-Phone",
        "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/autoharvestor~Google-Maps-Scraper-Email-Phone/run-sync": {
      "post": {
        "operationId": "run-sync-autoharvestor-Google-Maps-Scraper-Email-Phone",
        "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": {
          "category": {
            "title": "Business Category",
            "type": "string",
            "description": "Primary business category or niche (e.g. 'Roofing contractor', 'Dentist', 'Coffee shop', 'Chartered accountant')."
          },
          "keyword": {
            "title": "Search Keyword (Optional)",
            "type": "string",
            "description": "Specific search keyword or trade query (e.g. 'chartered accountant', 'commercial roofing', 'emergency plumber')."
          },
          "location": {
            "title": "Target Location",
            "type": "string",
            "description": "City, state, metro area, or address to automatically tile and search (e.g. 'Austin, TX', 'California', 'London, UK')."
          },
          "searchTerms": {
            "title": "Multiple Search Terms (Optional)",
            "type": "array",
            "description": "Additional search phrases to run in parallel (e.g. ['roof repair', 'commercial roofing']).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Direct Google Maps URLs",
            "type": "array",
            "description": "Public Google Maps search or place URLs to scrape directly.",
            "items": {
              "type": "string"
            }
          },
          "maxCrawledPlacesPerSearch": {
            "title": "Max Leads Per Search / Tile",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum places to extract per search area / tile.",
            "default": 100
          },
          "maxTotalPlaces": {
            "title": "Global Max Leads Cap",
            "minimum": 1,
            "type": "integer",
            "description": "Hard stop cap across all searches and tiles (default 100).",
            "default": 100
          },
          "scrapeContactEnrichment": {
            "title": "Enrich Email & Socials from Website",
            "type": "boolean",
            "description": "Automatically visits business website to extract contact emails and social media profiles (Facebook, Instagram, LinkedIn, Twitter). Recommended for CRM lead generation.",
            "default": true
          },
          "maxReviews": {
            "title": "Max Reviews per Business",
            "minimum": 0,
            "type": "integer",
            "description": "Number of recent customer reviews to extract (author, rating, text, date, owner response).",
            "default": 5
          },
          "reviewsSort": {
            "title": "Reviews Sorting",
            "enum": [
              "mostRelevant",
              "newest",
              "highestRating",
              "lowestRating"
            ],
            "type": "string",
            "description": "Sort order for extracted reviews.",
            "default": "mostRelevant"
          },
          "zoom": {
            "title": "Map Zoom Level",
            "minimum": 1,
            "maximum": 21,
            "type": "integer",
            "description": "Zoom level for geospatial tiling (14 recommended for metropolitan business density).",
            "default": 14
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code for Google Maps results (e.g. 'en', 'es', 'de').",
            "default": "en"
          },
          "scrapePlaceDetailPage": {
            "title": "Scrape Full Place Details",
            "type": "boolean",
            "description": "Scrape complete details including hours, amenities, and photos.",
            "default": true
          },
          "includeReviewerInfo": {
            "title": "Include Reviewer Name",
            "type": "boolean",
            "description": "Include reviewer full names. When disabled, outputs 'Anonymous User' for GDPR/CCPA privacy compliance.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Select proxies to be used for Google Maps requests. Apify Residential proxies (groups-RESIDENTIAL) are pre-configured by default to prevent Google rate limits, CAPTCHAs, and 429 blocking.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "concurrency": {
            "title": "Crawler Concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of parallel browser workers.",
            "default": 3
          },
          "outputFormat": {
            "title": "Local Export Format",
            "enum": [
              "json",
              "csv",
              "ndjson",
              "sqlite"
            ],
            "type": "string",
            "description": "Format for local file export (json, csv, ndjson, sqlite).",
            "default": "json"
          },
          "exportDir": {
            "title": "Export Directory",
            "type": "string",
            "description": "Local directory path where scraped results are saved.",
            "default": "./results"
          },
          "headless": {
            "title": "Headless Browser",
            "type": "boolean",
            "description": "Run browser in headless mode (recommended for cloud runs).",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}