Back to Google Maps
ApifyΒ·Google Maps

Google Maps Scraper

/compass/crawler-google-placesasync$0.01 / result

Extract data from thousands of Google Maps locations and businesses, including reviews, reviewer details, images, contact info, including full name, email, and job title, opening hours, prices & more. Export data, run via API, schedule and monitor runs, or integrate with other tools. Runs as an Apify actor (20–120 s); results are dataset rows.

Charged per returned row plus the flat fee.

Input
  • searchStringsArrayarray

    Type what you'd normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient.⚠️ Searching for a specific plac

  • locationQuerystring

    Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. 🌍 You can just set the whole country or state as the location: Google Maps Scraper intelligently splits it into subregions internally, so there's no need to search city by city o

  • maxCrawledPlacesPerSearchinteger

    Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take. If you want to scrape all the places available, leave this field empty.

  • languagestring

    Results will be scraped in this language. (default "en")

    en, af, az, id, ms, bs, ca, cs, …

  • categoryFilterWordsarray

    You can limit the places that are scraped based on the Category filter; you can choose as many categories for one flat fee for the whole field. ⚠️ Using categories can sometimes lead to false negatives, as many places do not properly categorize themselves, and there are over 4,000 available categor

  • searchMatchingstring

    Restrict what places are scraped based on matching their name with provided πŸ” Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken. (default "all")

    all, only_includes, only_exact

  • placeMinimumStarsstring

    Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded. (default "")

    , two, twoAndHalf, three, threeAndHalf, four, fourAndHalf

  • websitestring

    Use this to exclude places without a website, or vice versa. This option is turned off by default. (default "allPlaces")

    allPlaces, withWebsite, withoutWebsite

  • skipClosedPlacesboolean

    Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places. (default false)

  • scrapePlaceDetailPageboolean

    Scrape detail pages of each place the Actor finds. This will slow down the Actor since it needs to open another page for each place individually. The fields available only when scrapePlaceDetailPage is enabled include: `reviewsDistribution`, `reviewsRemovedNotice`, `imageCategories`, popularTimes fi (default false)

  • scrapeTableReservationProviderboolean

    Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have a blue "RESERVE A TABLE" button. (default false)

  • scrapeOrderOnlineboolean

    Scrape the 'Order online' section of restaurants to get pickup and delivery providers (Uber Eats, DoorDash, etc.), along with fees and estimated times. (default false)

  • includeWebResultsboolean

    Extract the "Web results" section located at the bottom of every place listing. (default false)

  • scrapeDirectoriesboolean

    Some places (e.g. malls) can have multiple businesses located inside them. This option will scrape inside the "Directory" or "At this place" as per different categories (example here). Turn this toggle on to include those places in your results. ⚠️ Note that full place details need to be scraped in (default false)

  • maxQuestionsinteger

    Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field.⚠️ Note that some of the fields contain personal data. (default 0)

  • scrapeContactsboolean

    Enrich Google Maps places with contact details extracted from the business website, including business emails and social media profiles (Meta, LinkedIn, X, etc.).We exclude contacts of big chains: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell. (default false)

  • scrapeSocialMediaProfilesobject

    Enable enrichment for any social media profiles found. This add-on retrieves detailed public data for each profile, including profile names, follower/following counts, descriptions, post/video counts, and verification status.You are charged a flat rate for the total number of profiles enriched, rega (default {"facebooks":false,"instagrams":false,"youtubes":false,"tiktoks":false,"twitters":false})

  • maximumLeadsEnrichmentRecordsinteger

    Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per ea (default 0)

  • leadsEnrichmentDepartmentsarray

    You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes

  • verifyLeadsEnrichmentEmailsboolean

    When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment.Charged (decisive results): valid (ok), invalid, and disposable email addresses.Not charged: catch-all, (default false)

  • maxReviewsinteger

    Set the number of reviews you expect to get per place. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for reviews, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all reviews, (default 0)

  • reviewsStartDatestring

    Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezon

  • reviewsSortstring

    Define how reviews are sorted. (default "newest")

    newest, mostRelevant, highestRanking, lowestRanking

  • reviewsFilterStringstring

    If you enter keywords, only reviews containing those keywords will be scraped. Leave it blank to scrape all reviews. (default "")

  • reviewsOriginstring

    Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google. (default "all")

    all, google

  • scrapeReviewsPersonalDataboolean

    This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about the review (URL). Note: review ID (reviewId) is always included regardless of this setting. ⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around t (default true)

  • maxImagesinteger

    Set the number of images per place you expect to scrape. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for images, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all images (default 0)

  • scrapeImageAuthorsboolean

    Include the author name for each image. ⚠️ Enabling this toggle may slow down processing as it requires fetching information for each image individually. (default false)

  • enableCompetitorAnalysisboolean

    When enabled, runs an AI-powered competitor analysis on the top scraped places and stores a report in the competitorAnalysis named dataset. The report includes a ranked comparison, per-place strengths/weaknesses analysis with review-backed claims, social media insights, and a strategic market overvi (default false)

  • maxCompetitorsToAnalyzeinteger

    Total number of places to scrape and analyze, capped across all search terms combined. Capped at 100 - this directly bounds your total analysis cost, since every scraped place generates charges. Set to 0 to skip the analysis even if enableCompetitorAnalysis is on. (default 30)

  • countryCodestring

    Set the country, e.g., United States.

    , us, af, al, dz, as, ad, ao, …

  • citystring

    Enter the city, e.g., Pittsburgh.⚠️ Do not include State or Country names here.⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas).

  • statestring

    Set a state, e.g., Massachusetts (mainly for the US addresses).

  • countystring

    Set the county, e.g., New York County.⚠️ Note that county may represent different administrative areas in different countries: a county (e.g., US), regional district (e.g., Canada) or département (e.g., France).

  • postalCodestring

    Set the postal code, e.g., 10001. ⚠️ Combine Postal code only with πŸ—Ί Country, never with πŸŒ‡ City. You can only input one postal code at a time.

  • customGeolocationobject

    Use this field to define the exact search area if other search area parameters don't work for you. See readme or the Apify guide for details.

  • startUrlsarray

    Max 300 results per search URL. Valid format for URLs contains https://google.com/maps/. This feature also supports uncommon URL formats such as: https://google.com/maps?cid=***, https://goo.gl/maps/***, and custom place list URL.

  • placeIdsarray

    List of place IDs. Add them one by one or upload a list using the Bulk edit option. A place ID has the format ChIJreV9aqYWdkgROM_boL6YbwA - only 27-character IDs starting with ChIJ or GhIJ are supported.

  • allPlacesNoSearchActionstring

    Extract all places visible on the map. A good zoom is chosen automatically based on the area size. If you want to override it, set `zoom` (a number from 1 to 21) in JSON input. Higher zoom will scrape more places but will take longer to finish. You can test what place pins are visible with a specifi (default "")

    , all_places_no_search_ocr, all_places_no_search_mouse

Run it

curl -s https://sooma.dev/v1/run \ -H "Authorization: Bearer $SOOMA_API_KEY" \ -H "Content-Type: application/json" \ -d '{"provider":"apify","endpoint":"/compass/crawler-google-places","input":{}}'

Or ask your agent: it will call inspect for this schema and run it over MCP.