{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Scraper API | $3/1K Scored Business Leads",
    "description": "Most Google Maps scrapers just dump raw leads. This one scores every lead by how reachable it is and tags why it's worth contacting — no website, weak reviews, a dated site, no marketing — then gives you a one-page market summary. Emails included, all in one run, flat JSON.",
    "version": "1.0",
    "x-build-id": "lAbc4uBnNwDuUZug2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/berkaydev~google-maps-email-scraper-business-leads/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-berkaydev-google-maps-email-scraper-business-leads",
        "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/berkaydev~google-maps-email-scraper-business-leads/runs": {
      "post": {
        "operationId": "runs-sync-berkaydev-google-maps-email-scraper-business-leads",
        "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/berkaydev~google-maps-email-scraper-business-leads/run-sync": {
      "post": {
        "operationId": "run-sync-berkaydev-google-maps-email-scraper-business-leads",
        "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": {
          "searchTerms": {
            "title": "Business types to search",
            "minItems": 1,
            "type": "array",
            "description": "Required. What kind of businesses to find, one per line. Examples: dentists, Italian restaurants, Zahnarzt, furniture store. 行业关键词，每行一个（英文或当地语言效果最好）。",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "minLength": 2,
            "type": "string",
            "description": "City and country, e.g. London, UK · Berlin, Germany · Dubai, UAE. Can stay empty if the search term already names the place (e.g. dentists in Austin, TX). 城市和国家，例如 Dubai, UAE。"
          },
          "maxResults": {
            "title": "How many businesses",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Businesses per search term. You pay per business delivered, so 20 businesses cost less than $0.10 — see the Pricing tab for the exact price on your plan. Up to 500. 每个关键词返回的商家数量，按条计费。",
            "default": 50
          },
          "minRating": {
            "title": "Minimum Google rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only include businesses with at least this Google Maps rating. Set to 4.0 for high-quality leads, leave at 0 for no filter.",
            "default": 0
          },
          "onlyWithWebsite": {
            "title": "Only businesses with a website",
            "type": "boolean",
            "description": "Skip businesses with no website listed. Useful if email extraction is your main goal.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only businesses with a phone number",
            "type": "boolean",
            "description": "Skip businesses with no phone number listed.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new businesses",
            "type": "boolean",
            "description": "Remembers which businesses this search already delivered and returns only the ones you have not seen before. Repeat runs get cheaper as well as shorter, because known businesses are skipped before their page is even opened. Newly opened businesses — the ones with no website, no reviews and no online presence yet — surface immediately instead of drowning in rows you have already worked through. Each search term and location keeps its own memory, and entries older than 180 days are forgotten.",
            "default": false
          },
          "extractEmail": {
            "title": "Extract email from business websites",
            "type": "boolean",
            "description": "Visit each business website and extract contact email addresses. This is what makes this Actor valuable for lead generation. Adds ~1-2 seconds per result.",
            "default": true
          },
          "enrichLeads": {
            "title": "Lead enrichment (scoring & signals)",
            "type": "boolean",
            "description": "Calculate a contactability score, opportunity tags (needs_website, weak_reviews, stale_site, no_marketing), and website signals (SSL, CMS, tracking, social links) from the homepage already fetched during email extraction — no extra compute cost.",
            "default": true
          },
          "language": {
            "title": "Results language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pt",
              "pl",
              "tr",
              "sv"
            ],
            "type": "string",
            "description": "Language used for the Google Maps search. Use the language that matches your target country.",
            "default": "en"
          },
          "compact": {
            "title": "Compact rows (for AI / LLM use)",
            "type": "boolean",
            "description": "Return only name, category, address, city, country, phone, website, email, rating, review_count, maps_url, contactability_score, lead_priority, opportunity_tags and outreach_hook. Smaller rows for language-model context windows.",
            "default": false
          },
          "seenStoreName": {
            "title": "Name of the memory (advanced)",
            "type": "string",
            "description": "Where the list of already-delivered businesses is kept. Leave as it is unless you want two separate prospecting lists that must not share a memory.",
            "default": "google-maps-seen"
          },
          "maxRunTimeSecs": {
            "title": "Max run time (seconds)",
            "minimum": 60,
            "maximum": 3500,
            "type": "integer",
            "description": "Hard limit on run duration. The Actor will save all results collected so far and exit cleanly before hitting the platform's 3600s timeout. Default 3000s is safe for most runs.",
            "default": 3000
          },
          "placeConcurrency": {
            "title": "Place page concurrency (advanced)",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "How many Google Maps place pages to render in parallel. Leave at 0 to auto-scale from memory (recommended). Maps place pages are CPU-heavy (WebGL); too much parallelism on too little CPU slows every render. Raise only if you also raise memory.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed for most runs. Use Apify Proxy if Google starts limiting a very large run (100+ results).",
            "default": {}
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}