{
  "data": {
    "id": "wdMPBcMnl2mFScdCG",
    "actId": "nzmL4XdPKeDa1Ahe3",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-27T06:48:05.440Z",
    "finishedAt": "2026-10-27T06:48:15.647Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 10113,
      "runTimeSecs": 10.113,
      "computeUnits": 0.011236666666666667,
      "imageSizeBytes": 362409472
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Google Maps Business Leads Input\",\n  \"description\": \"Find local businesses on Google Maps and read their own websites for emails, phone numbers and social profiles.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"required\": [],\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"What do you want to do?\",\n      \"type\": \"string\",\n      \"description\": \"Search Google Maps, look up specific places, or enrich a list of websites you already have.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"searchPlaces\",\n        \"specificPlaces\",\n        \"enrichWebsites\"\n      ],\n      \"enumTitles\": [\n        \"Search Google Maps for businesses\",\n        \"Look up specific Google Maps places\",\n        \"Get contacts from a list of websites\"\n      ],\n      \"default\": \"searchPlaces\",\n      \"prefill\": \"searchPlaces\",\n      \"sectionCaption\": \"How to find businesses\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search phrases\",\n      \"type\": \"array\",\n      \"description\": \"Natural-language searches such as 'coffee shops in Austin TX'. Include the place in each phrase, or use the location field below.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"sectionCaption\": \"Search Google Maps\",\n      \"sectionDescription\": \"Used when the selected mode is 'Search Google Maps for businesses'.\",\n      \"prefill\": []\n    },\n    \"locationQuery\": {\n      \"title\": \"Location (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Adds a shared location to every search phrase, for example 'Austin, TX, USA'. Leave empty when your phrases already name the place.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"\"\n    },\n    \"category\": {\n      \"title\": \"Category\",\n      \"type\": \"string\",\n      \"description\": \"Business category such as bakery, dentist or plumber. Used when keyword and search phrases are empty.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"bakery\",\n      \"default\": \"bakery\"\n    },\n    \"keyword\": {\n      \"title\": \"Keyword (overrides category)\",\n      \"type\": \"string\",\n      \"description\": \"Custom search term such as 'boutique coffee' or 'pet grooming'. Takes priority over category.\",\n      \"editor\": \"textfield\"\n    },\n    \"state\": {\n      \"title\": \"US state\",\n      \"type\": \"string\",\n      \"description\": \"US state for the search. Choose 'All' for nationwide. Ignored for non-US countries.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"All\",\n        \"AL\",\n        \"AK\",\n        \"AZ\",\n        \"AR\",\n        \"CA\",\n        \"CO\",\n        \"CT\",\n        \"DE\",\n        \"FL\",\n        \"GA\",\n        \"HI\",\n        \"ID\",\n        \"IL\",\n        \"IN\",\n        \"IA\",\n        \"KS\",\n        \"KY\",\n        \"LA\",\n        \"ME\",\n        \"MD\",\n        \"MA\",\n        \"MI\",\n        \"MN\",\n        \"MS\",\n        \"MO\",\n        \"MT\",\n        \"NE\",\n        \"NV\",\n        \"NH\",\n        \"NJ\",\n        \"NM\",\n        \"NY\",\n        \"NC\",\n        \"ND\",\n        \"OH\",\n        \"OK\",\n        \"OR\",\n        \"PA\",\n        \"RI\",\n        \"SC\",\n        \"SD\",\n        \"TN\",\n        \"TX\",\n        \"UT\",\n        \"VT\",\n        \"VA\",\n        \"WA\",\n        \"WV\",\n        \"WI\",\n        \"WY\"\n      ],\n      \"enumTitles\": [\n        \"All (nationwide)\",\n        \"Alabama\",\n        \"Alaska\",\n        \"Arizona\",\n        \"Arkansas\",\n        \"California\",\n        \"Colorado\",\n        \"Connecticut\",\n        \"Delaware\",\n        \"Florida\",\n        \"Georgia\",\n        \"Hawaii\",\n        \"Idaho\",\n        \"Illinois\",\n        \"Indiana\",\n        \"Iowa\",\n        \"Kansas\",\n        \"Kentucky\",\n        \"Louisiana\",\n        \"Maine\",\n        \"Maryland\",\n        \"Massachusetts\",\n        \"Michigan\",\n        \"Minnesota\",\n        \"Mississippi\",\n        \"Missouri\",\n        \"Montana\",\n        \"Nebraska\",\n        \"Nevada\",\n        \"New Hampshire\",\n        \"New Jersey\",\n        \"New Mexico\",\n        \"New York\",\n        \"North Carolina\",\n        \"North Dakota\",\n        \"Ohio\",\n        \"Oklahoma\",\n        \"Oregon\",\n        \"Pennsylvania\",\n        \"Rhode Island\",\n        \"South Carolina\",\n        \"South Dakota\",\n        \"Tennessee\",\n        \"Texas\",\n        \"Utah\",\n        \"Vermont\",\n        \"Virginia\",\n        \"Washington\",\n        \"West Virginia\",\n        \"Wisconsin\",\n        \"Wyoming\"\n      ],\n      \"default\": \"All\",\n      \"prefill\": \"CA\"\n    },\n    \"country\": {\n      \"title\": \"Country\",\n      \"type\": \"string\",\n      \"description\": \"Country for the search. Other countries can be named directly in a search phrase.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"US\",\n        \"GB\",\n        \"CA\",\n        \"AU\",\n        \"DE\",\n        \"FR\",\n        \"IN\",\n        \"BR\",\n        \"MX\",\n        \"JP\",\n        \"KR\",\n        \"CN\",\n        \"AE\",\n        \"SG\"\n      ],\n      \"enumTitles\": [\n        \"United States\",\n        \"United Kingdom\",\n        \"Canada\",\n        \"Australia\",\n        \"Germany\",\n        \"France\",\n        \"India\",\n        \"Brazil\",\n        \"Mexico\",\n        \"Japan\",\n        \"South Korea\",\n        \"China\",\n        \"United Arab Emirates\",\n        \"Singapore\"\n      ],\n      \"default\": \"US\",\n      \"prefill\": \"US\"\n    },\n    \"websites\": {\n      \"title\": \"Business websites\",\n      \"type\": \"array\",\n      \"description\": \"Websites to read for contact details, one per line. Bare domains such as example.com are accepted.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": [],\n      \"sectionCaption\": \"Enrich a list of websites\",\n      \"sectionDescription\": \"Used when the selected mode is 'Get contacts from a list of websites'.\"\n    },\n    \"placeUrls\": {\n      \"title\": \"Google Maps place URLs\",\n      \"type\": \"array\",\n      \"description\": \"Google Maps place links copied from the address bar or a previous export.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": [],\n      \"sectionCaption\": \"Look up specific places\",\n      \"sectionDescription\": \"Used when the selected mode is 'Look up specific Google Maps places'. Provide links, Place IDs, or both.\"\n    },\n    \"placeIds\": {\n      \"title\": \"Google Place IDs\",\n      \"type\": \"array\",\n      \"description\": \"Canonical Google Place IDs starting with 'ChIJ'.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": []\n    },\n    \"max_results\": {\n      \"title\": \"Maximum leads\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of leads to save. Google returns a ranked window of roughly 150-220 businesses per search phrase, so a larger request may end when that window ends.\",\n      \"minimum\": 1,\n      \"maximum\": 100000,\n      \"default\": 100,\n      \"prefill\": 3,\n      \"sectionCaption\": \"Limits and language\"\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Keep only businesses rated at least this value (1.0-5.0). Leave empty for any rating.\",\n      \"minimum\": 1,\n      \"maximum\": 5\n    },\n    \"extractEmails\": {\n      \"title\": \"Find emails and social profiles\",\n      \"type\": \"boolean\",\n      \"description\": \"Visit each business website for public emails, phone numbers and social profiles. Turn off for a faster Maps-only run.\",\n      \"default\": true,\n      \"prefill\": true,\n      \"sectionCaption\": \"Contact extraction\"\n    },\n    \"maxEmailsPerWebsite\": {\n      \"title\": \"Emails per website\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum email addresses to keep for one business website.\",\n      \"minimum\": 1,\n      \"maximum\": 20,\n      \"default\": 5,\n      \"prefill\": 3\n    },\n    \"maxContactPagesPerWebsite\": {\n      \"title\": \"Pages checked per website\",\n      \"type\": \"integer\",\n      \"description\": \"Homepage plus contact, about, legal, privacy or careers pages to read. More pages find more contacts but take longer.\",\n      \"minimum\": 1,\n      \"maximum\": 10,\n      \"default\": 3,\n      \"prefill\": 2,\n      \"sectionCaption\": \"Filters and results\"\n    },\n    \"onlySaveResults\": {\n      \"title\": \"Which places to save\",\n      \"type\": \"string\",\n      \"description\": \"Save every business, only businesses with an email, or only businesses with any contact detail.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"allPlaces\",\n        \"onlyWithEmails\",\n        \"onlyWithContacts\"\n      ],\n      \"enumTitles\": [\n        \"All matching businesses\",\n        \"Only businesses with an email\",\n        \"Only businesses with any contact detail\"\n      ],\n      \"default\": \"allPlaces\",\n      \"prefill\": \"allPlaces\"\n    },\n    \"categoryFilter\": {\n      \"title\": \"Category filter words\",\n      \"type\": \"array\",\n      \"description\": \"Keep places whose Google Maps category contains all words of at least one entry. Leave empty for no category filter.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"prefill\": []\n    },\n    \"websiteFilter\": {\n      \"title\": \"Website filter\",\n      \"type\": \"string\",\n      \"description\": \"Keep all places, only places with a website, or only places without one.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"allPlaces\",\n        \"withWebsite\",\n        \"withoutWebsite\"\n      ],\n      \"enumTitles\": [\n        \"All places\",\n        \"Only places with a website\",\n        \"Only places without a website\"\n      ],\n      \"default\": \"allPlaces\",\n      \"prefill\": \"allPlaces\"\n    },\n    \"skipClosedPlaces\": {\n      \"title\": \"Skip closed places\",\n      \"type\": \"boolean\",\n      \"description\": \"Check Google's public status and leave out permanently or temporarily closed places.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Language of the Google Maps interface and listing text.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"af\",\n        \"az\",\n        \"id\",\n        \"ms\",\n        \"bs\",\n        \"ca\",\n        \"cs\",\n        \"da\",\n        \"de\",\n        \"et\",\n        \"es\",\n        \"es-419\",\n        \"eu\",\n        \"fil\",\n        \"fr\",\n        \"gl\",\n        \"hr\",\n        \"zu\",\n        \"is\",\n        \"it\",\n        \"sw\",\n        \"lv\",\n        \"lt\",\n        \"hu\",\n        \"nl\",\n        \"no\",\n        \"uz\",\n        \"pl\",\n        \"pt-BR\",\n        \"pt-PT\",\n        \"ro\",\n        \"sq\",\n        \"sk\",\n        \"sl\",\n        \"fi\",\n        \"sv\",\n        \"vi\",\n        \"tr\",\n        \"el\",\n        \"bg\",\n        \"ky\",\n        \"kk\",\n        \"mk\",\n        \"mn\",\n        \"ru\",\n        \"sr\",\n        \"uk\",\n        \"ka\",\n        \"hy\",\n        \"iw\",\n        \"ur\",\n        \"ar\",\n        \"fa\",\n        \"am\",\n        \"ne\",\n        \"hi\",\n        \"mr\",\n        \"bn\",\n        \"pa\",\n        \"gu\",\n        \"ta\",\n        \"te\",\n        \"kn\",\n        \"ml\",\n        \"si\",\n        \"th\",\n        \"lo\",\n        \"my\",\n        \"km\",\n        \"ko\",\n        \"ja\",\n        \"zh-CN\",\n        \"zh-TW\",\n        \"zh\",\n        \"pt\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"Afrikaans\",\n        \"azərbaycan\",\n        \"Bahasa Indonesia\",\n        \"Bahasa Melayu\",\n        \"bosanski\",\n        \"català\",\n        \"Čeština\",\n        \"Dansk\",\n        \"Deutsch\",\n        \"eesti\",\n        \"Español\",\n        \"Español (Latinoamérica)\",\n        \"euskara\",\n        \"Filipino\",\n        \"Français\",\n        \"galego\",\n        \"Hrvatski\",\n        \"isiZulu\",\n        \"íslenska\",\n        \"Italiano\",\n        \"Kiswahili\",\n        \"latviešu\",\n        \"lietuvių\",\n        \"magyar\",\n        \"Nederlands\",\n        \"norsk\",\n        \"oʻzbekcha\",\n        \"polski\",\n        \"Português (Brasil)\",\n        \"Português (Portugal)\",\n        \"română\",\n        \"shqip\",\n        \"Slovenčina\",\n        \"slovenščina\",\n        \"Suomi\",\n        \"Svenska\",\n        \"Tiếng Việt\",\n        \"Türkçe\",\n        \"Ελληνικά\",\n        \"български\",\n        \"кыргызча\",\n        \"қазақ тілі\",\n        \"македонски\",\n        \"монгол\",\n        \"Русский\",\n        \"српски\",\n        \"Українська\",\n        \"ქართული\",\n        \"հայերեն\",\n        \"עברית\",\n        \"اردو\",\n        \"العربية\",\n        \"فارسی\",\n        \"አማርኛ\",\n        \"नेपाली\",\n        \"हिन्दी\",\n        \"मराठी\",\n        \"বাংলা\",\n        \"ਪੰਜਾਬੀ\",\n        \"ગુજરાતી\",\n        \"தமிழ்\",\n        \"తెలుగు\",\n        \"ಕನ್ನಡ\",\n        \"മലയാളം\",\n        \"සිංහල\",\n        \"ไทย\",\n        \"ລາວ\",\n        \"ဗမာ\",\n        \"ខ្មែរ\",\n        \"한국어\",\n        \"日本語\",\n        \"简体中文\",\n        \"繁體中文\",\n        \"中文 (Chinese)\",\n        \"Português\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    }\n  }\n}",
    "readme": "# Google Maps Business Lead & Email Finder\n\nBuild a local prospecting list without a Google account, browser cookie or developer key. The actor searches Google Maps for the businesses you describe, then visits each business's own public website to collect the email addresses, extra phone numbers and social profiles that the business publishes.\n\n## Three ways to use it\n\n- Search Maps by category or phrase. One row per business with its listing details and Google Maps link.\n- Look up places you already have. Paste Google Maps place links or Place IDs.\n- Enrich a website list. Bring your own domains and skip the Maps search entirely.\n\n## What you get\n\nEach lead carries the business name, Google Maps categories, a split address, phone, website, rating, review count, Place ID, coordinates and a clean Google Maps URL. With contact extraction on, the row also carries emails found on the business's website, an MX-checked subset, the source page for each email, additional website phone numbers and up to ten social profiles.\n\nMaps itself has no email field. An address is only reported when the business publishes it on its own site, and every missing field is left out rather than guessed.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `searchPlaces` | Search Maps, look up specific places, or enrich websites |\n| `searchQueries` | string[] | – | Phrases for Maps, such as `roofers in Dallas TX` |\n| `locationQuery` | string | – | Shared location appended to each phrase |\n| `category` | string | `bakery` | Category used when keyword and phrases are empty |\n| `keyword` | string | – | Custom term that takes priority over category |\n| `state` | select | `All` | US state, or `All` for nationwide |\n| `country` | select | `US` | Country for the search |\n| `websites` | string[] | – | Domains for website mode; bare domains are accepted |\n| `placeUrls` | string[] | – | Google Maps place links for specific-place mode |\n| `placeIds` | string[] | – | Place IDs starting with `ChIJ` |\n| `max_results` | integer | `100` | Total lead cap (1–100,000) |\n| `minRating` | number | – | Keep places rated at least this value (1.0–5.0) |\n| `extractEmails` | boolean | `true` | Read business websites for contact details |\n| `maxEmailsPerWebsite` | integer | `5` | Email cap per business website |\n| `maxContactPagesPerWebsite` | integer | `3` | Homepage plus contact/about/legal/privacy pages |\n| `onlySaveResults` | select | `allPlaces` | All places, only with an email, or only with contacts |\n| `categoryFilter` | string[] | – | Keep categories containing all words of any entry |\n| `websiteFilter` | select | `allPlaces` | All places, with a website, or without one |\n| `skipClosedPlaces` | boolean | `false` | Leave out permanently or temporarily closed places |\n| `language` | select | `en` | Maps interface language (74 options plus two legacy codes) |\n\n### Examples\n\n```json\n{\"mode\":\"searchPlaces\",\"searchQueries\":[\"bakeries in London\"],\"max_results\":50,\"extractEmails\":true}\n```\n\n```json\n{\"mode\":\"specificPlaces\",\"placeIds\":[\"ChIJ…\"],\"extractEmails\":true}\n```\n\n```json\n{\"mode\":\"enrichWebsites\",\"websites\":[\"example-bakery.com\",\"example-dentist.de\"]}\n```\n\n## Output\n\n- Listing: `name`, `googleBusinessCategories`, `street`, `city`, `state`, `zip`, `country`, `countryCode`, `phoneNumber`, `url`, `reviewScore`, `reviewsNumber`, `placeId`, `featureId`, `googleMapsUrl`, `priceLevel`, `plusCode`, `location`, `websiteType`.\n- Contacts: `email`, `emails`, `emailsMxValid`, `emailProvenance`, `websitePhones`, `contactPageUrl`, `websitePagesCrawled`, `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `pinterest`, `threads`, `whatsapp`, `telegram`.\n- Context: `recordType`, `sourceUrl`, `scrapedAt`.\n\n`emailProvenance` names the signal and the page that supplied each address. `websiteType` marks social-profile and directory links so a platform page is never treated as the business's own site.\n\n## How many emails should I expect?\n\nIn a 128-business sample across Austin, London, Berlin and Paris, 74% published an email within the homepage plus two contact pages; reading deeper pages lifted the measured rate to 77% of businesses with a website. About 76% of the businesses with a website had at least one MX-valid address (98% of the email-bearing sites in the sample). European businesses often publish a legally required Impressum page, which helps those markets; sites that only offer a contact form, hide their address in JavaScript, or block automated visits cannot yield one. Treat 66–77% as a realistic range, not a promise for every market.\n\n## Limitations\n\n- A single Maps phrase exposes a ranked window of roughly 150–220 businesses. Run several related phrases, or split by area, to widen coverage; duplicates are removed by Place ID.\n- Some websites publish no email, use a contact form only, or block automated access. Those rows keep their Maps details and simply omit website contacts.\n- `priceLevel` is rarely exposed by Google's public listing data and is omitted rather than invented.\n- `plusCode` is the code computed from the coordinates; Google's optional locality label is not appended.\n- `emailsMxValid` confirms that the address domain publishes an MX record. It cannot prove that a person reads the inbox or detect a catch-all mailbox.\n- Closed-place checks use Google's public status. A place whose status cannot be read is kept.\n\n## FAQ\n\n**Do I need an API key, cookies or a proxy?**\nNo. Searches and business websites are read from public pages. You do not configure a connection.\n\n**Why is a row missing an email?**\nNot every business has a website, and not every website publishes an address. Some use a contact form or a booking widget. The row is still a valid lead unless you choose `onlySaveResults: \"onlyWithEmails\"`; that filter keeps the matching rows among the places fetched up to your lead cap.\n\n**What does `emailsMxValid` mean?**\nIt is the part of `emails` whose domain had an MX record when the run executed. An address is kept in `emails` even when DNS has no answer; it is simply not listed as MX-valid.\n\n**What is `emailProvenance`?**\nA small list that pairs each email with its signal (`mailto`, `jsonLd`, `cloudflare`, `text`, `obfuscated` or `raw`) and the page where it was found.\n\n**Can I use the actor without Google Maps?**\nYes. Choose `enrichWebsites` and paste the domains. Each row is keyed to the website you supplied.\n\n**Does it find owner or decision-maker emails?**\nNo. It reports public business contact details; personal or executive addresses are not inferred.\n\nUse public data lawfully and in line with Google's terms. This actor is not affiliated with Google.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "google-maps-business-lead-and-email-finder",
      "title": "Google Maps Business Lead & Email Finder",
      "description": "Find Google Maps business leads by category, keyword or location: name, address, phone, website, rating and coordinates. Adds emails (with source and MX check), extra phones and social links from each business's own website.",
      "version": "1.0",
      "buildTag": "latest",
      "environmentVariables": {},
      "dockerfile": "./Dockerfile",
      "readme": "# Google Maps Business Lead & Email Finder\n\nBuild a local prospecting list without a Google account, browser cookie or developer key. The actor searches Google Maps for the businesses you describe, then visits each business's own public website to collect the email addresses, extra phone numbers and social profiles that the business publishes.\n\n## Three ways to use it\n\n- Search Maps by category or phrase. One row per business with its listing details and Google Maps link.\n- Look up places you already have. Paste Google Maps place links or Place IDs.\n- Enrich a website list. Bring your own domains and skip the Maps search entirely.\n\n## What you get\n\nEach lead carries the business name, Google Maps categories, a split address, phone, website, rating, review count, Place ID, coordinates and a clean Google Maps URL. With contact extraction on, the row also carries emails found on the business's website, an MX-checked subset, the source page for each email, additional website phone numbers and up to ten social profiles.\n\nMaps itself has no email field. An address is only reported when the business publishes it on its own site, and every missing field is left out rather than guessed.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `searchPlaces` | Search Maps, look up specific places, or enrich websites |\n| `searchQueries` | string[] | – | Phrases for Maps, such as `roofers in Dallas TX` |\n| `locationQuery` | string | – | Shared location appended to each phrase |\n| `category` | string | `bakery` | Category used when keyword and phrases are empty |\n| `keyword` | string | – | Custom term that takes priority over category |\n| `state` | select | `All` | US state, or `All` for nationwide |\n| `country` | select | `US` | Country for the search |\n| `websites` | string[] | – | Domains for website mode; bare domains are accepted |\n| `placeUrls` | string[] | – | Google Maps place links for specific-place mode |\n| `placeIds` | string[] | – | Place IDs starting with `ChIJ` |\n| `max_results` | integer | `100` | Total lead cap (1–100,000) |\n| `minRating` | number | – | Keep places rated at least this value (1.0–5.0) |\n| `extractEmails` | boolean | `true` | Read business websites for contact details |\n| `maxEmailsPerWebsite` | integer | `5` | Email cap per business website |\n| `maxContactPagesPerWebsite` | integer | `3` | Homepage plus contact/about/legal/privacy pages |\n| `onlySaveResults` | select | `allPlaces` | All places, only with an email, or only with contacts |\n| `categoryFilter` | string[] | – | Keep categories containing all words of any entry |\n| `websiteFilter` | select | `allPlaces` | All places, with a website, or without one |\n| `skipClosedPlaces` | boolean | `false` | Leave out permanently or temporarily closed places |\n| `language` | select | `en` | Maps interface language (74 options plus two legacy codes) |\n\n### Examples\n\n```json\n{\"mode\":\"searchPlaces\",\"searchQueries\":[\"bakeries in London\"],\"max_results\":50,\"extractEmails\":true}\n```\n\n```json\n{\"mode\":\"specificPlaces\",\"placeIds\":[\"ChIJ…\"],\"extractEmails\":true}\n```\n\n```json\n{\"mode\":\"enrichWebsites\",\"websites\":[\"example-bakery.com\",\"example-dentist.de\"]}\n```\n\n## Output\n\n- Listing: `name`, `googleBusinessCategories`, `street`, `city`, `state`, `zip`, `country`, `countryCode`, `phoneNumber`, `url`, `reviewScore`, `reviewsNumber`, `placeId`, `featureId`, `googleMapsUrl`, `priceLevel`, `plusCode`, `location`, `websiteType`.\n- Contacts: `email`, `emails`, `emailsMxValid`, `emailProvenance`, `websitePhones`, `contactPageUrl`, `websitePagesCrawled`, `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `tiktok`, `pinterest`, `threads`, `whatsapp`, `telegram`.\n- Context: `recordType`, `sourceUrl`, `scrapedAt`.\n\n`emailProvenance` names the signal and the page that supplied each address. `websiteType` marks social-profile and directory links so a platform page is never treated as the business's own site.\n\n## How many emails should I expect?\n\nIn a 128-business sample across Austin, London, Berlin and Paris, 74% published an email within the homepage plus two contact pages; reading deeper pages lifted the measured rate to 77% of businesses with a website. About 76% of the businesses with a website had at least one MX-valid address (98% of the email-bearing sites in the sample). European businesses often publish a legally required Impressum page, which helps those markets; sites that only offer a contact form, hide their address in JavaScript, or block automated visits cannot yield one. Treat 66–77% as a realistic range, not a promise for every market.\n\n## Limitations\n\n- A single Maps phrase exposes a ranked window of roughly 150–220 businesses. Run several related phrases, or split by area, to widen coverage; duplicates are removed by Place ID.\n- Some websites publish no email, use a contact form only, or block automated access. Those rows keep their Maps details and simply omit website contacts.\n- `priceLevel` is rarely exposed by Google's public listing data and is omitted rather than invented.\n- `plusCode` is the code computed from the coordinates; Google's optional locality label is not appended.\n- `emailsMxValid` confirms that the address domain publishes an MX record. It cannot prove that a person reads the inbox or detect a catch-all mailbox.\n- Closed-place checks use Google's public status. A place whose status cannot be read is kept.\n\n## FAQ\n\n**Do I need an API key, cookies or a proxy?**\nNo. Searches and business websites are read from public pages. You do not configure a connection.\n\n**Why is a row missing an email?**\nNot every business has a website, and not every website publishes an address. Some use a contact form or a booking widget. The row is still a valid lead unless you choose `onlySaveResults: \"onlyWithEmails\"`; that filter keeps the matching rows among the places fetched up to your lead cap.\n\n**What does `emailsMxValid` mean?**\nIt is the part of `emails` whose domain had an MX record when the run executed. An address is kept in `emails` even when DNS has no answer; it is simply not listed as MX-valid.\n\n**What is `emailProvenance`?**\nA small list that pairs each email with its signal (`mailto`, `jsonLd`, `cloudflare`, `text`, `obfuscated` or `raw`) and the page where it was found.\n\n**Can I use the actor without Google Maps?**\nYes. Choose `enrichWebsites` and paste the domains. Each row is keyed to the website you supplied.\n\n**Does it find owner or decision-maker emails?**\nNo. It reports public business contact details; personal or executive addresses are not inferred.\n\nUse public data lawfully and in line with Google's terms. This actor is not affiliated with Google.\n",
      "input": {
        "title": "Google Maps Business Leads Input",
        "description": "Find local businesses on Google Maps and read their own websites for emails, phone numbers and social profiles.",
        "type": "object",
        "schemaVersion": 1,
        "required": [],
        "properties": {
          "mode": {
            "title": "What do you want to do?",
            "type": "string",
            "description": "Search Google Maps, look up specific places, or enrich a list of websites you already have.",
            "editor": "select",
            "enum": [
              "searchPlaces",
              "specificPlaces",
              "enrichWebsites"
            ],
            "enumTitles": [
              "Search Google Maps for businesses",
              "Look up specific Google Maps places",
              "Get contacts from a list of websites"
            ],
            "default": "searchPlaces",
            "prefill": "searchPlaces",
            "sectionCaption": "How to find businesses"
          },
          "searchQueries": {
            "title": "Search phrases",
            "type": "array",
            "description": "Natural-language searches such as 'coffee shops in Austin TX'. Include the place in each phrase, or use the location field below.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "sectionCaption": "Search Google Maps",
            "sectionDescription": "Used when the selected mode is 'Search Google Maps for businesses'.",
            "prefill": []
          },
          "locationQuery": {
            "title": "Location (optional)",
            "type": "string",
            "description": "Adds a shared location to every search phrase, for example 'Austin, TX, USA'. Leave empty when your phrases already name the place.",
            "editor": "textfield",
            "prefill": ""
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Business category such as bakery, dentist or plumber. Used when keyword and search phrases are empty.",
            "editor": "textfield",
            "prefill": "bakery",
            "default": "bakery"
          },
          "keyword": {
            "title": "Keyword (overrides category)",
            "type": "string",
            "description": "Custom search term such as 'boutique coffee' or 'pet grooming'. Takes priority over category.",
            "editor": "textfield"
          },
          "state": {
            "title": "US state",
            "type": "string",
            "description": "US state for the search. Choose 'All' for nationwide. Ignored for non-US countries.",
            "editor": "select",
            "enum": [
              "All",
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ],
            "enumTitles": [
              "All (nationwide)",
              "Alabama",
              "Alaska",
              "Arizona",
              "Arkansas",
              "California",
              "Colorado",
              "Connecticut",
              "Delaware",
              "Florida",
              "Georgia",
              "Hawaii",
              "Idaho",
              "Illinois",
              "Indiana",
              "Iowa",
              "Kansas",
              "Kentucky",
              "Louisiana",
              "Maine",
              "Maryland",
              "Massachusetts",
              "Michigan",
              "Minnesota",
              "Mississippi",
              "Missouri",
              "Montana",
              "Nebraska",
              "Nevada",
              "New Hampshire",
              "New Jersey",
              "New Mexico",
              "New York",
              "North Carolina",
              "North Dakota",
              "Ohio",
              "Oklahoma",
              "Oregon",
              "Pennsylvania",
              "Rhode Island",
              "South Carolina",
              "South Dakota",
              "Tennessee",
              "Texas",
              "Utah",
              "Vermont",
              "Virginia",
              "Washington",
              "West Virginia",
              "Wisconsin",
              "Wyoming"
            ],
            "default": "All",
            "prefill": "CA"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Country for the search. Other countries can be named directly in a search phrase.",
            "editor": "select",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "DE",
              "FR",
              "IN",
              "BR",
              "MX",
              "JP",
              "KR",
              "CN",
              "AE",
              "SG"
            ],
            "enumTitles": [
              "United States",
              "United Kingdom",
              "Canada",
              "Australia",
              "Germany",
              "France",
              "India",
              "Brazil",
              "Mexico",
              "Japan",
              "South Korea",
              "China",
              "United Arab Emirates",
              "Singapore"
            ],
            "default": "US",
            "prefill": "US"
          },
          "websites": {
            "title": "Business websites",
            "type": "array",
            "description": "Websites to read for contact details, one per line. Bare domains such as example.com are accepted.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": [],
            "sectionCaption": "Enrich a list of websites",
            "sectionDescription": "Used when the selected mode is 'Get contacts from a list of websites'."
          },
          "placeUrls": {
            "title": "Google Maps place URLs",
            "type": "array",
            "description": "Google Maps place links copied from the address bar or a previous export.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": [],
            "sectionCaption": "Look up specific places",
            "sectionDescription": "Used when the selected mode is 'Look up specific Google Maps places'. Provide links, Place IDs, or both."
          },
          "placeIds": {
            "title": "Google Place IDs",
            "type": "array",
            "description": "Canonical Google Place IDs starting with 'ChIJ'.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": []
          },
          "max_results": {
            "title": "Maximum leads",
            "type": "integer",
            "description": "Maximum number of leads to save. Google returns a ranked window of roughly 150-220 businesses per search phrase, so a larger request may end when that window ends.",
            "minimum": 1,
            "maximum": 100000,
            "default": 100,
            "prefill": 3,
            "sectionCaption": "Limits and language"
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Keep only businesses rated at least this value (1.0-5.0). Leave empty for any rating.",
            "minimum": 1,
            "maximum": 5
          },
          "extractEmails": {
            "title": "Find emails and social profiles",
            "type": "boolean",
            "description": "Visit each business website for public emails, phone numbers and social profiles. Turn off for a faster Maps-only run.",
            "default": true,
            "prefill": true,
            "sectionCaption": "Contact extraction"
          },
          "maxEmailsPerWebsite": {
            "title": "Emails per website",
            "type": "integer",
            "description": "Maximum email addresses to keep for one business website.",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "prefill": 3
          },
          "maxContactPagesPerWebsite": {
            "title": "Pages checked per website",
            "type": "integer",
            "description": "Homepage plus contact, about, legal, privacy or careers pages to read. More pages find more contacts but take longer.",
            "minimum": 1,
            "maximum": 10,
            "default": 3,
            "prefill": 2,
            "sectionCaption": "Filters and results"
          },
          "onlySaveResults": {
            "title": "Which places to save",
            "type": "string",
            "description": "Save every business, only businesses with an email, or only businesses with any contact detail.",
            "editor": "select",
            "enum": [
              "allPlaces",
              "onlyWithEmails",
              "onlyWithContacts"
            ],
            "enumTitles": [
              "All matching businesses",
              "Only businesses with an email",
              "Only businesses with any contact detail"
            ],
            "default": "allPlaces",
            "prefill": "allPlaces"
          },
          "categoryFilter": {
            "title": "Category filter words",
            "type": "array",
            "description": "Keep places whose Google Maps category contains all words of at least one entry. Leave empty for no category filter.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "prefill": []
          },
          "websiteFilter": {
            "title": "Website filter",
            "type": "string",
            "description": "Keep all places, only places with a website, or only places without one.",
            "editor": "select",
            "enum": [
              "allPlaces",
              "withWebsite",
              "withoutWebsite"
            ],
            "enumTitles": [
              "All places",
              "Only places with a website",
              "Only places without a website"
            ],
            "default": "allPlaces",
            "prefill": "allPlaces"
          },
          "skipClosedPlaces": {
            "title": "Skip closed places",
            "type": "boolean",
            "description": "Check Google's public status and leave out permanently or temporarily closed places.",
            "default": false,
            "prefill": false
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of the Google Maps interface and listing text.",
            "editor": "select",
            "enum": [
              "en",
              "af",
              "az",
              "id",
              "ms",
              "bs",
              "ca",
              "cs",
              "da",
              "de",
              "et",
              "es",
              "es-419",
              "eu",
              "fil",
              "fr",
              "gl",
              "hr",
              "zu",
              "is",
              "it",
              "sw",
              "lv",
              "lt",
              "hu",
              "nl",
              "no",
              "uz",
              "pl",
              "pt-BR",
              "pt-PT",
              "ro",
              "sq",
              "sk",
              "sl",
              "fi",
              "sv",
              "vi",
              "tr",
              "el",
              "bg",
              "ky",
              "kk",
              "mk",
              "mn",
              "ru",
              "sr",
              "uk",
              "ka",
              "hy",
              "iw",
              "ur",
              "ar",
              "fa",
              "am",
              "ne",
              "hi",
              "mr",
              "bn",
              "pa",
              "gu",
              "ta",
              "te",
              "kn",
              "ml",
              "si",
              "th",
              "lo",
              "my",
              "km",
              "ko",
              "ja",
              "zh-CN",
              "zh-TW",
              "zh",
              "pt"
            ],
            "enumTitles": [
              "English",
              "Afrikaans",
              "azərbaycan",
              "Bahasa Indonesia",
              "Bahasa Melayu",
              "bosanski",
              "català",
              "Čeština",
              "Dansk",
              "Deutsch",
              "eesti",
              "Español",
              "Español (Latinoamérica)",
              "euskara",
              "Filipino",
              "Français",
              "galego",
              "Hrvatski",
              "isiZulu",
              "íslenska",
              "Italiano",
              "Kiswahili",
              "latviešu",
              "lietuvių",
              "magyar",
              "Nederlands",
              "norsk",
              "oʻzbekcha",
              "polski",
              "Português (Brasil)",
              "Português (Portugal)",
              "română",
              "shqip",
              "Slovenčina",
              "slovenščina",
              "Suomi",
              "Svenska",
              "Tiếng Việt",
              "Türkçe",
              "Ελληνικά",
              "български",
              "кыргызча",
              "қазақ тілі",
              "македонски",
              "монгол",
              "Русский",
              "српски",
              "Українська",
              "ქართული",
              "հայերեն",
              "עברית",
              "اردو",
              "العربية",
              "فارسی",
              "አማርኛ",
              "नेपाली",
              "हिन्दी",
              "मराठी",
              "বাংলা",
              "ਪੰਜਾਬੀ",
              "ગુજરાતી",
              "தமிழ்",
              "తెలుగు",
              "ಕನ್ನಡ",
              "മലയാളം",
              "සිංහල",
              "ไทย",
              "ລາວ",
              "ဗမာ",
              "ខ្មែរ",
              "한국어",
              "日本語",
              "简体中文",
              "繁體中文",
              "中文 (Chinese)",
              "Português"
            ],
            "default": "en",
            "prefill": "en"
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Google Maps Business Lead & Email Finder Output",
        "description": "Dataset of Google Maps business leads with contact details, website emails (source and MX-checked), extra phones, and social profiles.",
        "properties": {
          "results": {
            "type": "string",
            "title": "Business Leads",
            "description": "One row per business with Maps listing data, website contact details, email provenance and social profiles.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Business Leads",
              "transformation": {
                "fields": [
                  "recordType",
                  "name",
                  "googleBusinessCategories",
                  "street",
                  "city",
                  "state",
                  "zip",
                  "country",
                  "countryCode",
                  "phoneNumber",
                  "url",
                  "email",
                  "emails",
                  "reviewScore",
                  "reviewsNumber",
                  "placeId",
                  "featureId",
                  "googleMapsUrl",
                  "priceLevel",
                  "plusCode",
                  "location",
                  "facebook",
                  "instagram",
                  "linkedin",
                  "twitter",
                  "youtube",
                  "tiktok",
                  "websitePhones",
                  "contactPageUrl",
                  "websitePagesCrawled",
                  "scrapedAt",
                  "sourceUrl",
                  "emailsMxValid",
                  "emailProvenance",
                  "pinterest",
                  "threads",
                  "whatsapp",
                  "telegram",
                  "websiteType"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "recordType": {
                    "label": "Record type",
                    "format": "text"
                  },
                  "name": {
                    "label": "Business",
                    "format": "text"
                  },
                  "googleBusinessCategories": {
                    "label": "Categories",
                    "format": "text"
                  },
                  "street": {
                    "label": "Street",
                    "format": "text"
                  },
                  "city": {
                    "label": "City",
                    "format": "text"
                  },
                  "state": {
                    "label": "State / region",
                    "format": "text"
                  },
                  "zip": {
                    "label": "Postal code",
                    "format": "text"
                  },
                  "country": {
                    "label": "Country",
                    "format": "text"
                  },
                  "countryCode": {
                    "label": "Country code",
                    "format": "text"
                  },
                  "phoneNumber": {
                    "label": "Phone",
                    "format": "text"
                  },
                  "url": {
                    "label": "Website",
                    "format": "link"
                  },
                  "email": {
                    "label": "Email",
                    "format": "text"
                  },
                  "emails": {
                    "label": "Emails",
                    "format": "text"
                  },
                  "reviewScore": {
                    "label": "Rating",
                    "format": "number"
                  },
                  "reviewsNumber": {
                    "label": "Reviews",
                    "format": "number"
                  },
                  "placeId": {
                    "label": "Place ID",
                    "format": "text"
                  },
                  "featureId": {
                    "label": "Feature ID",
                    "format": "text"
                  },
                  "googleMapsUrl": {
                    "label": "Google Maps",
                    "format": "link"
                  },
                  "priceLevel": {
                    "label": "Price level",
                    "format": "text"
                  },
                  "plusCode": {
                    "label": "Plus Code",
                    "format": "text"
                  },
                  "location": {
                    "label": "Coordinates",
                    "format": "text"
                  },
                  "facebook": {
                    "label": "Facebook",
                    "format": "link"
                  },
                  "instagram": {
                    "label": "Instagram",
                    "format": "link"
                  },
                  "linkedin": {
                    "label": "LinkedIn",
                    "format": "link"
                  },
                  "twitter": {
                    "label": "X / Twitter",
                    "format": "link"
                  },
                  "youtube": {
                    "label": "YouTube",
                    "format": "link"
                  },
                  "tiktok": {
                    "label": "TikTok",
                    "format": "link"
                  },
                  "websitePhones": {
                    "label": "Website phones",
                    "format": "text"
                  },
                  "contactPageUrl": {
                    "label": "Contact page",
                    "format": "link"
                  },
                  "websitePagesCrawled": {
                    "label": "Website pages crawled",
                    "format": "number"
                  },
                  "scrapedAt": {
                    "label": "Scraped at",
                    "format": "text"
                  },
                  "sourceUrl": {
                    "label": "Source URL",
                    "format": "link"
                  },
                  "emailsMxValid": {
                    "label": "MX-valid emails",
                    "format": "text"
                  },
                  "emailProvenance": {
                    "label": "Email sources",
                    "format": "text"
                  },
                  "pinterest": {
                    "label": "Pinterest",
                    "format": "link"
                  },
                  "threads": {
                    "label": "Threads",
                    "format": "link"
                  },
                  "whatsapp": {
                    "label": "WhatsApp",
                    "format": "link"
                  },
                  "telegram": {
                    "label": "Telegram",
                    "format": "link"
                  },
                  "websiteType": {
                    "label": "Website type",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "minMemoryMbytes": 1024,
      "maxMemoryMbytes": 1024
    },
    "buildNumber": "1.0.2",
    "imageDigest": "224ff1331d7c18bd1d217ef00832b9f63e5fb1ea59687d5141400369fc53a98d",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.011236666666666667
    }
  }
}