{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Maps Email & Social Enricher",
    "description": "Find emails and social profiles for businesses on Google Maps. Enriches each listing with up to four social profiles (LinkedIn, Facebook, Instagram, Twitter) and emails surfaced from the business website's home, contact, and about pages. Pay-per-lead pricing, CSV-friendly flat output.",
    "version": "2.0",
    "x-build-id": "KRt8rjHkvV7wKqEXC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~google-maps-email-social-enricher/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-google-maps-email-social-enricher",
        "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/coregent~google-maps-email-social-enricher/runs": {
      "post": {
        "operationId": "runs-sync-coregent-google-maps-email-social-enricher",
        "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/coregent~google-maps-email-social-enricher/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-google-maps-email-social-enricher",
        "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": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "What to look for on Google Maps, one search per line — for example \"plumbers\" or \"digital marketing agency\". Combine these with Locations below to cover several areas at once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Areas to search in, one per line — for example \"Brooklyn, NY\" or \"Manchester, UK\". Every query is run in every location (\"plumbers\" × [\"Brooklyn, NY\", \"Queens, NY\"] = 2 searches). This is how you get past Google's ~120-results-per-search limit: more areas, not a bigger Max results. Leave empty to use your queries exactly as written.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Google Maps URLs",
            "type": "array",
            "description": "Google Maps URLs to scrape directly, one per line. Two forms are accepted: a place URL for a single business (https://www.google.com/maps/place/... or a ?q=place_id: share link), and a search URL for a whole results feed (https://www.google.com/maps/search/...). Provide search queries, URLs, or both.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Run-wide limit on the number of businesses saved across every search (hard cap 5000). Businesses removed by the filters below do not count toward it.",
            "default": 50
          },
          "maxResultsPerSearch": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Limit for each individual search (each query × location pair). Google Maps itself returns at most ~120 businesses per search however far the results are scrolled, which is why this cannot be set higher — add more locations instead.",
            "default": 120
          },
          "onlyWithContacts": {
            "title": "Only save businesses with a contact",
            "type": "boolean",
            "description": "Save only businesses where an email address or a social profile was actually found. Off by default so you can see full coverage. Note: whether a website yields a contact is only known after it has been fetched, so with this on a run can finish with fewer rows than Max results.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "none",
              "3",
              "3.5",
              "4",
              "4.5"
            ],
            "type": "string",
            "description": "Keep only businesses rated at or above this. Businesses with no rating at all are removed when a minimum is set — choose \"No minimum\" to keep them.",
            "default": "none"
          },
          "skipClosedPlaces": {
            "title": "Skip closed businesses",
            "type": "boolean",
            "description": "Remove businesses Google marks as permanently or temporarily closed. On by default — a closed business is not a lead.",
            "default": true
          },
          "websiteFilter": {
            "title": "Website",
            "enum": [
              "all",
              "withWebsite",
              "withoutWebsite"
            ],
            "type": "string",
            "description": "Filter by whether the business has a website. \"Only with a website\" gives the best email and social yield. \"Only without a website\" finds businesses with a weak digital presence — the shortlist for a web-design or local-SEO pitch; those rows carry no emails or socials, because there is no site to read them from.",
            "default": "all"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "nl",
              "pl",
              "sv",
              "da",
              "tr",
              "id",
              "ja"
            ],
            "type": "string",
            "description": "Language Google Maps returns results in (the hl parameter). Affects category names and the wording of statuses such as \"Permanently closed\".",
            "default": "en"
          },
          "countryCode": {
            "title": "Country",
            "enum": [
              "",
              "us",
              "gb",
              "ca",
              "au",
              "nz",
              "ie",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "be",
              "pt",
              "se",
              "pl",
              "in",
              "sg",
              "ae",
              "za",
              "br",
              "mx"
            ],
            "type": "string",
            "description": "Bias results toward one country (the gl parameter) and use it as the fallback for the countryCode output column. Leave as \"Any\" to let the query and locations decide.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy configuration. Datacenter (the default) or no proxy both work reliably for Google Maps and business websites at this Actor's concurrency. Apify Residential is NOT supported and will fail the run at startup — in a pay-per-event Actor, residential bandwidth is billed to the developer rather than to you, so a single heavy run can cost more than the leads it returns. If you need residential routing, supply your own provider under Custom proxy URLs; that traffic bypasses Apify entirely.",
            "default": {
              "useApifyProxy": true
            }
          },
          "extractEmails": {
            "title": "Extract emails",
            "type": "boolean",
            "description": "Search each business website for email addresses (homepage plus ranked contact / about pages). Turning this off does not reduce your bill — a row is charged for any contact point found.",
            "default": true
          },
          "extractSocials": {
            "title": "Extract social links",
            "type": "boolean",
            "description": "Detect LinkedIn, Facebook, Instagram, Twitter / X, YouTube and TikTok profile URLs on each business website.",
            "default": true
          },
          "maxCrawledPages": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Upper bound on pages fetched per business website — the homepage plus the highest-ranked contact / about pages. Hard cap 5. Raising this finds a few more addresses on large sites and makes runs slower.",
            "default": 3
          },
          "deDuplication": {
            "title": "Deduplicate by Place ID",
            "type": "boolean",
            "description": "Skip businesses that appear in more than one of your searches, using the Google Place ID as the key. Leave this on unless you deliberately want one row per search per business.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}