Restaurants Google Maps Scraper
Pricing
from $7.00 / 1,000 results
Restaurants Google Maps Scraper
Scrape restaurants from Google Maps with email, social media, cuisine, price range, dietary options, menu highlights, review sentiment, online ordering / reservation detection, metro area classification, and restaurant-type enrichment.
Pricing
from $7.00 / 1,000 results
Rating
0.0
(0)
Developer
Mukesh Kumar
Maintained by CommunityActor stats
0
Bookmarked
19
Total users
5
Monthly active users
15 days ago
Last modified
Categories
Share
Turn Google Maps into a restaurant lead list. This Google Maps scraper extracts restaurant emails, phone numbers, websites, and social media — plus cuisine, price range, dietary options, menu highlights, review sentiment, and online-ordering / reservation detection — and exports CRM-ready leads as JSON, CSV, or Excel.
Scrape restaurants from Google Maps and enrich each result with emails, social media links, cuisine, price range, dietary options, menu highlights, customer review sentiment, online ordering / reservation detection, metro area classification, and restaurant type.
Built for restaurant marketing agencies, food-delivery sales teams, hospitality recruiters, restaurant tech SaaS, and food critics that need structured, CRM-ready data from Google Maps.
What data do you get?
Each scraped restaurant includes up to 35+ fields across these categories:
| Category | Fields |
|---|---|
| Identity | name, category, cuisine |
| Location | address, city, state, postalCode, country, latitude, longitude |
| Contact | phone, website, email |
| Social Media | instagram, facebook, linkedin, twitter |
| Restaurant | priceRange, dietaryOptions, menuHighlights |
| Niche | hasOnlineOrdering, orderingPlatform, orderingUrl, hasReservation, reservationPlatform, reservationUrl, isMetroArea, metroName, metroTier, restaurantType, restaurantTypeLabel, restaurantConfidence |
| Reputation | rating, reviewCount, reviewSentiment (label, score, topThemes, snippets) |
| Operational | hours, isOpenNow |
| Metadata | placeId, mapsUrl, scrapedAt, searchTerm, searchLocation |
Sample output
{"name": "Carbone","category": "Italian restaurant","cuisine": "Italian, Pasta","address": "181 Thompson St","fullAddress": "181 Thompson St, New York, NY 10012, United States","city": "New York","state": "NY","country": "United States","postalCode": "10012","latitude": 40.7280123,"longitude": -74.0001234,"phone": "+12122541313","website": "https://carbonenewyork.com/","email": "reservations@carbonenewyork.com","instagram": "https://instagram.com/carbonenewyork","facebook": "https://facebook.com/carbonenewyork","linkedin": null,"twitter": null,"priceRange": "$$$$","dietaryOptions": ["vegetarian", "gluten-free"],"menuHighlights": ["Spicy Rigatoni Vodka", "Veal Parmesan", "Caesar Salad"],"hasOnlineOrdering": false,"orderingPlatform": null,"orderingUrl": null,"hasReservation": true,"reservationPlatform": "resy.com","reservationUrl": "https://resy.com/cities/ny/carbone","isMetroArea": true,"metroName": "New York Metro","metroTier": 1,"restaurantType": "fine_dining","restaurantTypeLabel": "Fine Dining","restaurantConfidence": "medium","rating": 4.6,"reviewCount": 3200,"reviewSentiment": {"label": "Positive","score": 86,"topThemes": ["foodQuality", "service", "ambience"],"reviewsAnalysed": 10,"avgRating": 4.6,"snippets": {"positive": ["Absolutely incredible Italian-American food. The spicy rigatoni is legendary...","Service was attentive and the atmosphere felt like a 1950s supper club..."],"negative": []}},"hours": {"Monday": "5:30–11 pm","Tuesday": "5:30–11 pm","Wednesday": "5:30–11 pm","Thursday": "5:30–11 pm","Friday": "5:30 pm–12 am","Saturday": "5:30 pm–12 am","Sunday": "5:30–11 pm"},"isOpenNow": true,"placeId": "0x89c2598ad12f1a8b:0x123abc456def7890","mapsUrl": "https://www.google.com/maps/place/Carbone/...","scrapedAt": "2026-05-23T10:56:47.935Z","searchTerm": "italian restaurant","searchLocation": "New York, USA"}
Why this over a generic Google Maps scraper?
Generic Google Maps scrapers give you the basics — name, address, phone, website, rating. This actor is purpose-built for restaurants, so every result already comes enriched with the fields a restaurant lead list actually needs: verified emails, cuisine, dietary options, ordering/reservation platforms, and review sentiment. No second tool, no post-processing.
| Field | This actor | Generic Maps scraper |
|---|---|---|
| Name, address, phone, website | ✅ | ✅ |
| Rating, review count, hours, coordinates | ✅ | ✅ |
| Verified email (role-mailbox scored) | ✅ | ❌ |
| Social media (Instagram / Facebook / LinkedIn / X) | ✅ | ❌ |
| Cuisine detection | ✅ | ❌ |
| Price range ($–$$$$) | ✅ | ⚠️ raw only |
| Dietary options (vegan, halal, kosher, gluten-free…) | ✅ | ❌ |
| Menu highlights (popular dishes) | ✅ | ❌ |
| Review sentiment (label, score, themes, snippets) | ✅ | ❌ |
| Online ordering + platform (DoorDash, UberEats, Toast…) | ✅ | ❌ |
| Reservation + platform (OpenTable, Resy, SevenRooms…) | ✅ | ❌ |
| Metro area classification + tier | ✅ | ❌ |
| Restaurant type (fine dining, casual, fast food…) | ✅ | ❌ |
| CRM-ready structured output | ✅ | ⚠️ raw fields |
If you only need a list of pins on a map, a generic scraper is fine. If you're building a restaurant lead list, prospecting for a food-tech / delivery / reservation product, or researching a market, the enrichment here replaces hours of manual cleanup.
How to use
- Search terms — Enter restaurant categories like
italian restaurant,sushi bar,pizza,vegan restaurant,steakhouse. - Locations — Enter cities or regions like
New York, USA,London, UK,Mumbai, India. - Max results — Set how many places to return (up to 500).
- Toggle enrichment — Enable or disable email extraction, social media, restaurant fields, and niche classification independently.
Input example
{"searchTerms": ["italian restaurant", "sushi bar"],"locations": ["New York, USA", "Los Angeles, USA"],"maxResults": 100,"minRating": 4.0,"enrichEmails": true,"enrichSocials": true,"enrichRestaurant": true,"enrichRestaurantNiche": true}
Enrichment pipeline
The scraper runs a 4-stage enrichment pipeline for each restaurant:
1. Google Maps scraping
Extracts name, category, address, phone, website, rating, reviews, hours, coordinates, and place ID directly from Google Maps search results.
2. Restaurant enrichment
- Cuisine — Extracted from Maps category tags and "About" section attributes.
- Price range — Read from the Maps header ($, $$, $$$, $$$$). Maps "Inexpensive / Moderate / Expensive / Very Expensive" labels are mapped to the matching dollar count.
- Dietary options — Scanned from Maps service-options attributes, then falls back to the restaurant website (
/menu,/dietary,/allergenspages). Captures vegan, vegetarian, halal, kosher, gluten-free, dairy-free, keto, paleo, and more. - Menu highlights — Pulls Google Maps "Popular dishes" tiles, with a fallback that scans
/menupages on the restaurant website for headline dish names. - Review sentiment — Clicks the Reviews tab on Maps, extracts up to 10 reviews, and runs keyword-based sentiment analysis. Returns a sentiment label (Positive/Mixed/Negative), a 0-100 score, top themes (foodQuality, service, ambience, value, waitTime, cleanliness), and representative snippets.
3. Restaurant niche classification
- Online ordering — Checks for ordering buttons on Maps and scans the website for delivery platforms (DoorDash, UberEats, Grubhub, Toast, ChowNow, Square Ordering, Deliveroo, Just Eat, Swiggy, Zomato).
- Reservation — Checks for reservation buttons on Maps and scans the website for booking platforms (OpenTable, Resy, SevenRooms, Tock, TheFork, Yelp Reservations).
- Metro area — Classifies the restaurant location against a curated database of metro areas across USA, UK, India, UAE, Australia, and Canada with tier rankings (1-3).
- Restaurant type — Classifies as
fine_dining,casual,fast_food,cafe,food_truck,bar, orunknownbased on name keywords, category, cuisine, and price range.
4. Contact enrichment
- Email — Visits the restaurant website and extracts the best email address using domain matching and scoring. Prefers role mailboxes like
reservations@,chef@,owner@,manager@,catering@,events@. Tries/contact,/contact-us,/about,/about-uspages as fallback. Filters out generic addresses (noreply, support, etc.). - Social media — Extracts Instagram, Facebook, LinkedIn, and Twitter/X profile links from the restaurant website.
Use cases
- Restaurant marketing agencies — Build targeted lead lists of restaurants by cuisine, price range, and online presence.
- Food-delivery sales teams — Find restaurants without online ordering for DoorDash / UberEats / Toast onboarding.
- Reservation platform sales — Find restaurants without OpenTable / Resy for outbound pitches.
- Hospitality recruiters — Filter by restaurant type (fine dining vs casual) for chef / FOH placement.
- Market research — Analyze restaurant density, cuisine mix, sentiment, and competitive landscape by metro area.
Integrations & export
Every run stores results in an Apify dataset that you can export as JSON, CSV, Excel, HTML, or XML, or pull live from the Apify API. Push leads straight into your stack:
- Google Sheets — one-click export or scheduled sync.
- Make (Integromat) & Zapier — trigger on run finished and route each restaurant into your CRM, Airtable, or HubSpot.
- Webhooks & API — POST results to your own endpoint the moment a run completes.
- Scheduler — run the scraper daily/weekly to keep lead lists fresh automatically.
Proxy
This actor requires residential proxies to avoid Google Maps blocks. Apify residential proxy is configured by default. For best results, use the RESIDENTIAL proxy group.
Is this legal?
Yes — the scraper only collects publicly available business information that Google Maps shows to any visitor (names, addresses, phone numbers, public websites, ratings, and public social links). It does not access private data, bypass logins, or collect personal data about individuals. You are responsible for using the exported data in compliance with applicable laws (e.g. GDPR/CAN-SPAM) and each platform's terms — for cold outreach, follow the relevant anti-spam rules.
FAQ
How many restaurants can I scrape?
As many as Google Maps returns for your search terms and locations. Set maxResults per run; scale coverage by adding more search term × location combinations. On the default 300-second run timeout, expect ~20 results — raise the run timeout to scrape more in a single run.
Do I get email addresses?
Yes, when enrichEmails is on and the restaurant has a website. Emails are scored and filtered (role mailboxes like reservations@ preferred, generic noreply@ discarded). Not every restaurant publishes an email, so coverage varies by area.
Which countries are supported? Any country Google Maps covers. Metro-area classification is richest for the USA, UK, India, UAE, Australia, and Canada; all other fields work worldwide.
How much does it cost? See Pricing below — you pay per result and platform usage is included. You can lower cost by disabling enrichment toggles you don't need.
Will I get blocked by Google? No — the actor runs through Apify residential proxies with anti-detection handling built in.
Can I schedule automatic runs? Yes. Use the Apify Scheduler to run daily or weekly and keep your lead lists current.
Pricing
You pay per result, not per compute time — costs are predictable up front, and Apify platform usage (compute + proxies) is included at no extra charge. Turn off any enrichment you don't need to lower your cost.
| Charge | Price | Applies |
|---|---|---|
| Base result | $7.00 / 1,000 ($0.007 each) | Every restaurant scraped |
| Email enrichment | $5.00 / 1,000 | When enrichEmails is on and the restaurant has a website |
| Social media enrichment | $2.00 / 1,000 | When enrichSocials is on and the restaurant has a website |
| Restaurant data enrichment | $10.00 / 1,000 | When enrichRestaurant is on |
| Niche classification | $4.00 / 1,000 | When enrichRestaurantNiche is on |
| Platform usage (compute + proxies) | Included — free | Always |
Example costs (per 1,000 restaurants):
- Contacts only (base + email + social): $14.00
- Full enrichment (all toggles on): $28.00
- Base scrape only (no enrichment): $7.00
So 100 fully-enriched restaurants cost about $2.80, and 100 base results cost $0.70.
Limitations
- Google Maps may return different results based on proxy location.
- Review sentiment analysis uses keyword matching (no LLM) — works best with 5+ reviews.
- Dietary detection relies on keyword matching and may miss restaurants that only show dietary tags on menu PDFs or images.
- Metro area classification covers major metros in USA, UK, India, UAE, Australia, and Canada.