Dataspryva

Google Maps Business Lead & Email Finder

Find business leads on Google Maps by category, keyword, or location and collect name, address, phone, website, rating, review count, and coordinates. Optionally adds emails and social links found on each business's own website.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringoptionalSearch Google Maps, look up specific places, or enrich a list of websites you already have.
searchQueriesarrayoptionalNatural-language searches such as 'coffee shops in Austin TX'. Include the place in each phrase, or use the location field below.
locationQuerystringoptionalAdds a shared location to every search phrase, for example 'Austin, TX, USA'. Leave empty when your phrases already name the place.
Show all input fields
FieldTypeRequiredDescription
modestringoptionalSearch Google Maps, look up specific places, or enrich a list of websites you already have.
searchQueriesarrayoptionalNatural-language searches such as 'coffee shops in Austin TX'. Include the place in each phrase, or use the location field below.
locationQuerystringoptionalAdds a shared location to every search phrase, for example 'Austin, TX, USA'. Leave empty when your phrases already name the place.
categorystringoptionalBusiness category such as bakery, dentist or plumber. Used when keyword and search phrases are empty.
keywordstringoptionalCustom search term such as 'boutique coffee' or 'pet grooming'. Takes priority over category.
statestringoptionalUS state for the search. Choose 'All' for nationwide. Ignored for non-US countries.
countrystringoptionalCountry for the search. Other countries can be named directly in a search phrase.
websitesarrayoptionalWebsites to read for contact details, one per line. Bare domains such as example.com are accepted.
placeUrlsarrayoptionalGoogle Maps place links copied from the address bar or a previous export.
placeIdsarrayoptionalCanonical Google Place IDs starting with 'ChIJ'.
max_resultsintegeroptionalMaximum 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.
minRatingnumberoptionalKeep only businesses rated at least this value (1.0-5.0). Leave empty for any rating.
extractEmailsbooleanoptionalVisit each business website for public emails, phone numbers and social profiles. Turn off for a faster Maps-only run.
maxEmailsPerWebsiteintegeroptionalMaximum email addresses to keep for one business website.
maxContactPagesPerWebsiteintegeroptionalHomepage plus contact, about, legal, privacy or careers pages to read. More pages find more contacts but take longer.
onlySaveResultsstringoptionalSave every business, only businesses with an email, or only businesses with any contact detail.
categoryFilterarrayoptionalKeep places whose Google Maps category contains all words of at least one entry. Leave empty for no category filter.
websiteFilterstringoptionalKeep all places, only places with a website, or only places without one.
skipClosedPlacesbooleanoptionalCheck Google's public status and leave out permanently or temporarily closed places.
languagestringoptionalLanguage of the Google Maps interface and listing text.

Download the published input schema

View complete JSON
{
  "description": "Find local businesses on Google Maps and read their own websites for emails, phone numbers and social profiles.",
  "properties": {
    "category": {
      "default": "bakery",
      "description": "Business category such as bakery, dentist or plumber. Used when keyword and search phrases are empty.",
      "editor": "textfield",
      "prefill": "bakery",
      "title": "Category",
      "type": "string"
    },
    "categoryFilter": {
      "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": [],
      "title": "Category filter words",
      "type": "array"
    },
    "country": {
      "default": "US",
      "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"
      ],
      "prefill": "US",
      "title": "Country",
      "type": "string"
    },
    "extractEmails": {
      "default": true,
      "description": "Visit each business website for public emails, phone numbers and social profiles. Turn off for a faster Maps-only run.",
      "prefill": true,
      "sectionCaption": "Contact extraction",
      "title": "Find emails and social profiles",
      "type": "boolean"
    },
    "keyword": {
      "description": "Custom search term such as 'boutique coffee' or 'pet grooming'. Takes priority over category.",
      "editor": "textfield",
      "title": "Keyword (overrides category)",
      "type": "string"
    },
    "language": {
      "default": "en",
      "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"
      ],
      "prefill": "en",
      "title": "Language",
      "type": "string"
    },
    "locationQuery": {
      "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": "",
      "title": "Location (optional)",
      "type": "string"
    },
    "maxContactPagesPerWebsite": {
      "default": 3,
      "description": "Homepage plus contact, about, legal, privacy or careers pages to read. More pages find more contacts but take longer.",
      "maximum": 10,
      "minimum": 1,
      "prefill": 2,
      "sectionCaption": "Filters and results",
      "title": "Pages checked per website",
      "type": "integer"
    },
    "maxEmailsPerWebsite": {
      "default": 5,
      "description": "Maximum email addresses to keep for one business website.",
      "maximum": 20,
      "minimum": 1,
      "prefill": 3,
      "title": "Emails per website",
      "type": "integer"
    },
    "max_results": {
      "default": 100,
      "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.",
      "maximum": 100000,
      "minimum": 1,
      "prefill": 3,
      "sectionCaption": "Limits and language",
      "title": "Maximum leads",
      "type": "integer"
    },
    "minRating": {
      "description": "Keep only businesses rated at least this value (1.0-5.0). Leave empty for any rating.",
      "maximum": 5,
      "minimum": 1,
      "title": "Minimum rating",
      "type": "number"
    },
    "mode": {
      "default": "searchPlaces",
      "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"
      ],
      "prefill": "searchPlaces",
      "sectionCaption": "How to find businesses",
      "title": "What do you want to do?",
      "type": "string"
    },
    "onlySaveResults": {
      "default": "allPlaces",
      "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"
      ],
      "prefill": "allPlaces",
      "title": "Which places to save",
      "type": "string"
    },
    "placeIds": {
      "description": "Canonical Google Place IDs starting with 'ChIJ'.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Google Place IDs",
      "type": "array"
    },
    "placeUrls": {
      "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.",
      "title": "Google Maps place URLs",
      "type": "array"
    },
    "searchQueries": {
      "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"
      },
      "prefill": [],
      "sectionCaption": "Search Google Maps",
      "sectionDescription": "Used when the selected mode is 'Search Google Maps for businesses'.",
      "title": "Search phrases",
      "type": "array"
    },
    "skipClosedPlaces": {
      "default": false,
      "description": "Check Google's public status and leave out permanently or temporarily closed places.",
      "prefill": false,
      "title": "Skip closed places",
      "type": "boolean"
    },
    "state": {
      "default": "All",
      "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"
      ],
      "prefill": "CA",
      "title": "US state",
      "type": "string"
    },
    "websiteFilter": {
      "default": "allPlaces",
      "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"
      ],
      "prefill": "allPlaces",
      "title": "Website filter",
      "type": "string"
    },
    "websites": {
      "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'.",
      "title": "Business websites",
      "type": "array"
    }
  },
  "required": [],
  "schemaVersion": 1,
  "title": "Google Maps Business Leads Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
resultsstringoptionalOne row per business with Maps listing data, website contact details, email provenance and social profiles.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Dataset of Google Maps business leads with contact details, website emails (source and MX-checked), extra phones, and social profiles.",
  "properties": {
    "results": {
      "description": "One row per business with Maps listing data, website contact details, email provenance and social profiles.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Business Leads",
      "type": "string"
    }
  },
  "title": "Google Maps Business Lead & Email Finder Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "city": {
            "format": "text",
            "label": "City"
          },
          "contactPageUrl": {
            "format": "link",
            "label": "Contact page"
          },
          "country": {
            "format": "text",
            "label": "Country"
          },
          "countryCode": {
            "format": "text",
            "label": "Country code"
          },
          "email": {
            "format": "text",
            "label": "Email"
          },
          "emailProvenance": {
            "format": "text",
            "label": "Email sources"
          },
          "emails": {
            "format": "text",
            "label": "Emails"
          },
          "emailsMxValid": {
            "format": "text",
            "label": "MX-valid emails"
          },
          "facebook": {
            "format": "link",
            "label": "Facebook"
          },
          "featureId": {
            "format": "text",
            "label": "Feature ID"
          },
          "googleBusinessCategories": {
            "format": "text",
            "label": "Categories"
          },
          "googleMapsUrl": {
            "format": "link",
            "label": "Google Maps"
          },
          "instagram": {
            "format": "link",
            "label": "Instagram"
          },
          "linkedin": {
            "format": "link",
            "label": "LinkedIn"
          },
          "location": {
            "format": "text",
            "label": "Coordinates"
          },
          "name": {
            "format": "text",
            "label": "Business"
          },
          "phoneNumber": {
            "format": "text",
            "label": "Phone"
          },
          "pinterest": {
            "format": "link",
            "label": "Pinterest"
          },
          "placeId": {
            "format": "text",
            "label": "Place ID"
          },
          "plusCode": {
            "format": "text",
            "label": "Plus Code"
          },
          "priceLevel": {
            "format": "text",
            "label": "Price level"
          },
          "recordType": {
            "format": "text",
            "label": "Record type"
          },
          "reviewScore": {
            "format": "number",
            "label": "Rating"
          },
          "reviewsNumber": {
            "format": "number",
            "label": "Reviews"
          },
          "scrapedAt": {
            "format": "text",
            "label": "Scraped at"
          },
          "sourceUrl": {
            "format": "link",
            "label": "Source URL"
          },
          "state": {
            "format": "text",
            "label": "State / region"
          },
          "street": {
            "format": "text",
            "label": "Street"
          },
          "telegram": {
            "format": "link",
            "label": "Telegram"
          },
          "threads": {
            "format": "link",
            "label": "Threads"
          },
          "tiktok": {
            "format": "link",
            "label": "TikTok"
          },
          "twitter": {
            "format": "link",
            "label": "X / Twitter"
          },
          "url": {
            "format": "link",
            "label": "Website"
          },
          "websitePagesCrawled": {
            "format": "number",
            "label": "Website pages crawled"
          },
          "websitePhones": {
            "format": "text",
            "label": "Website phones"
          },
          "websiteType": {
            "format": "text",
            "label": "Website type"
          },
          "whatsapp": {
            "format": "link",
            "label": "WhatsApp"
          },
          "youtube": {
            "format": "link",
            "label": "YouTube"
          },
          "zip": {
            "format": "text",
            "label": "Postal code"
          }
        }
      },
      "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"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Google Maps Business Lead & Email Finder

Build 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.

Three ways to use it

  • Search Maps by category or phrase. One row per business with its listing details and Google Maps link.
  • Look up places you already have. Paste Google Maps place links or Place IDs.
  • Enrich a website list. Bring your own domains and skip the Maps search entirely.

What you get

Each 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.

Maps 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.

Input

Field Type Default Description
mode select searchPlaces Search Maps, look up specific places, or enrich websites
searchQueries string[] – Phrases for Maps, such as roofers in Dallas TX
locationQuery string – Shared location appended to each phrase
category string bakery Category used when keyword and phrases are empty
keyword string – Custom term that takes priority over category
state select All US state, or All for nationwide
country select US Country for the search
websites string[] – Domains for website mode; bare domains are accepted
placeUrls string[] – Google Maps place links for specific-place mode
placeIds string[] – Place IDs starting with ChIJ
max_results integer 100 Total lead cap (1–100,000)
minRating number – Keep places rated at least this value (1.0–5.0)
extractEmails boolean true Read business websites for contact details
maxEmailsPerWebsite integer 5 Email cap per business website
maxContactPagesPerWebsite integer 3 Homepage plus contact/about/legal/privacy pages
onlySaveResults select allPlaces All places, only with an email, or only with contacts
categoryFilter string[] – Keep categories containing all words of any entry
websiteFilter select allPlaces All places, with a website, or without one
skipClosedPlaces boolean false Leave out permanently or temporarily closed places
language select en Maps interface language (74 options plus two legacy codes)

Examples

{"mode":"searchPlaces","searchQueries":["bakeries in London"],"max_results":50,"extractEmails":true}
{"mode":"specificPlaces","placeIds":["ChIJ…"],"extractEmails":true}
{"mode":"enrichWebsites","websites":["example-bakery.com","example-dentist.de"]}

Output

  • Listing: name, googleBusinessCategories, street, city, state, zip, country, countryCode, phoneNumber, url, reviewScore, reviewsNumber, placeId, featureId, googleMapsUrl, priceLevel, plusCode, location, websiteType.
  • Contacts: email, emails, emailsMxValid, emailProvenance, websitePhones, contactPageUrl, websitePagesCrawled, facebook, instagram, linkedin, twitter, youtube, tiktok, pinterest, threads, whatsapp, telegram.
  • Context: recordType, sourceUrl, scrapedAt.

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.

How many emails should I expect?

In 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.

Limitations

  • 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.
  • 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.
  • priceLevel is rarely exposed by Google's public listing data and is omitted rather than invented.
  • plusCode is the code computed from the coordinates; Google's optional locality label is not appended.
  • 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.
  • Closed-place checks use Google's public status. A place whose status cannot be read is kept.

FAQ

Do I need an API key, cookies or a proxy? No. Searches and business websites are read from public pages. You do not configure a connection.

Why is a row missing an email? Not 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.

What does emailsMxValid mean? It 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.

What is emailProvenance? A small list that pairs each email with its signal (mailto, jsonLd, cloudflare, text, obfuscated or raw) and the page where it was found.

Can I use the actor without Google Maps? Yes. Choose enrichWebsites and paste the domains. Each row is keyed to the website you supplied.

Does it find owner or decision-maker emails? No. It reports public business contact details; personal or executive addresses are not inferred.

Use public data lawfully and in line with Google's terms. This actor is not affiliated with Google.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build wdMPBcMnl2mFScdCG. Documentation is regenerated from the default published build; private drafts are not included.