{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email Scraper: Business Leads with Emails",
    "description": "Get business leads from Google Maps with emails: name, category, address, phone, website, rating and reviews from Google Maps, plus emails, extra phones and Instagram, Facebook, LinkedIn and X profiles read from each business's website and contact page.",
    "version": "0.1",
    "x-build-id": "3xbI8cDhLn2sdgzWb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/redfoxscout~google-maps-leads-with-emails/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-redfoxscout-google-maps-leads-with-emails",
        "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/redfoxscout~google-maps-leads-with-emails/runs": {
      "post": {
        "operationId": "runs-sync-redfoxscout-google-maps-leads-with-emails",
        "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/redfoxscout~google-maps-leads-with-emails/run-sync": {
      "post": {
        "operationId": "run-sync-redfoxscout-google-maps-leads-with-emails",
        "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": "What to search",
            "type": "array",
            "description": "Searches as you would type them in Google Maps, one per line, e.g. dentists in Dubai, or just dentists with a location below. Optional when you give Google Maps URLs or place IDs.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (optional)",
            "type": "array",
            "description": "Cities or areas. Every search is run in every location (<search> in <location>).",
            "items": {
              "type": "string"
            }
          },
          "searchWholeArea": {
            "title": "Cover the whole area (beyond ~120 places)",
            "type": "boolean",
            "description": "Google Maps shows at most ~120 places per search. On: the area (location, \"in <city>\" or your map point) is split into map tiles, busy tiles are split again, and every matching place is returned once. Duplicates are free. Use with a higher max results.",
            "default": false
          },
          "startUrls": {
            "title": "Google Maps URLs (optional)",
            "type": "array",
            "description": "Google Maps search URLs (maps/search/...@lat,lng,zoom), place URLs, ?cid= links or maps.app.goo.gl short links.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "placeIds": {
            "title": "Place IDs (optional)",
            "type": "array",
            "description": "Google place IDs such as ChIJ1S_Bov20RIYRe7MiR8tYawY. One row per place.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithEmail": {
            "title": "Only leads with an email",
            "type": "boolean",
            "description": "Deliver (and charge) only businesses where an email was found on their website.",
            "default": false
          },
          "checkEmailDomains": {
            "title": "Check that emails can receive mail",
            "type": "boolean",
            "description": "On (default): each email's domain is checked for mail servers (MX). Addresses on domains that cannot receive mail are dropped from email and emails (still listed in emailsChecked), so the best sendable address comes first.",
            "default": true
          },
          "includePeople": {
            "title": "People on team pages",
            "type": "boolean",
            "description": "Also list the people the business's website shows on its team, leadership and about pages: name, title, and the email, phone or LinkedIn shown beside them. Team pages count toward Contact pages per website. Off by default.",
            "default": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of names and categories, e.g. en, de, ar, fr.",
            "default": "en"
          },
          "countryCode": {
            "title": "Country code",
            "type": "string",
            "description": "Two-letter country code Google uses for regional results, e.g. us, gb, ae.",
            "default": "us"
          },
          "latitude": {
            "title": "Map point latitude (optional)",
            "type": "number",
            "description": "Search around a point instead of a named place, e.g. 25.2048. Use with longitude and radius."
          },
          "longitude": {
            "title": "Map point longitude (optional)",
            "type": "number",
            "description": "e.g. 55.2708."
          },
          "radiusKm": {
            "title": "Radius around the point (km)",
            "minimum": 0.2,
            "maximum": 200,
            "type": "number",
            "description": "Size of the area around the map point. With 'Cover the whole area' every place inside it is returned.",
            "default": 5
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Leave out places Google marks as permanently or temporarily closed.",
            "default": false
          },
          "categoryFilterWords": {
            "title": "Only these categories (optional)",
            "type": "array",
            "description": "Keep a place only if one of its Google categories contains one of these words, e.g. dentist, orthodontist.",
            "items": {
              "type": "string"
            }
          },
          "searchMatching": {
            "title": "Name must match the search",
            "enum": [
              "all",
              "only_includes",
              "only_exact"
            ],
            "type": "string",
            "description": "Useful for brand searches (e.g. Starbucks): drop places Google adds that are not that business.",
            "default": "all"
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Skip places rated below this."
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 0,
            "type": "integer",
            "description": "Skip places with fewer reviews."
          },
          "skipWithoutPhone": {
            "title": "Only places with a phone number",
            "type": "boolean",
            "description": "Skip places that list no phone.",
            "default": false
          },
          "maxPagesPerSite": {
            "title": "Contact pages per website",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Besides the home page, how many contact, about or imprint pages to check on each website.",
            "default": 3
          },
          "maxItems": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop each search after this many leads. A normal search ends at ~120 places; with Cover the whole area use hundreds or thousands.",
            "default": 40
          },
          "maxConcurrency": {
            "title": "Searches in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches run at once.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Off by default and usually not needed. Turn on for very large sweeps if Google starts rate-limiting.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}