Google Maps Scraper & Email Extractor: Phone Numbers, B2B Leads avatar

Google Maps Scraper & Email Extractor: Phone Numbers, B2B Leads

Pricing

from $0.30 / 1,000 places

Go to Apify Store
Google Maps Scraper & Email Extractor: Phone Numbers, B2B Leads

Google Maps Scraper & Email Extractor: Phone Numbers, B2B Leads

Google Maps scraper, email extractor & Google Places scraper for local business leads and B2B leads: emails, phone numbers, websites, Instagram/Facebook, ratings, hours. Any city, ZIP code, postcode, county or country, radius or GeoJSON. No 120-result limit. $0.50 per 1,000 places, all included.

Pricing

from $0.30 / 1,000 places

Rating

5.0

(1)

Developer

Melon Data

Melon Data

Maintained by Community

Actor stats

0

Bookmarked

41

Total users

22

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

What is this Google Maps Scraper?

Google Maps Scraper that turns any Google Maps search into a ready-to-use lead list. For every place you get the name, categories, full address (street, city, ZIP/postal code, county, region, country), GPS coordinates, phone numbers, website, emails, social profiles, rating, reviews count and opening hours. $0.50 per 1,000 places, all included: emails, social profiles, place details, proxies and platform usage. No add-ons, no start fee.

Google Maps shows at most about 120 results per search. This Google Maps extractor takes the real boundary of your area from OpenStreetMap and covers it with an adaptive grid, so you can scrape a whole city, ZIP code, county, region or country, up to 50,000 places per search term and location. It uses plain HTTP requests, with no browser and no Google API key: a 20-place search finishes in about 12 seconds, and 1,000 places with emails take about 80 seconds (measured, October 2026).

Use it for B2B lead generation and cold outreach, local SEO, market research or data enrichment. Run it from Apify Console, through the API, on a schedule, or from Make, n8n and Zapier. Apify's free plan ($5 of monthly credit) covers up to 10,000 places a month.

🇫🇷 Extracteur Google Maps : entreprises par ville, code postal, département ou région, avec e-mails, téléphones, sites web, notes et horaires. 0,50 $ les 1 000 lieux, tout compris. 🇩🇪 Google Maps Scraper: Firmen, Adressen, Telefonnummern und E-Mails nach Stadt, PLZ oder Region. 0,50 $ pro 1.000 Einträge, alles inklusive. 🇪🇸 Extractor de Google Maps: empresas por ciudad, código postal o región, con emails, teléfonos y redes sociales. 0,50 $ por 1.000 lugares.

  • 50+ fields per place. In our benchmark of 1,000 restaurants in Lyon (median of 3 runs): phone on 95% of places, website on 84%, rating and reviews count on 99%, full weekly opening hours on 96%. Also secondary hours (kitchen, takeout, delivery), main photo and photo count, attributes, booking links, business status, plus code, place ID and Google Maps link.
  • Emails and social profiles from each business website (the home page, then contact or legal pages when needed): Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest. Generic emails of website builders and booking platforms are filtered out, so you get the business's own contacts.
  • Any area, beyond the 120-result limit. A city, ZIP/postal code, county, region or whole country, several locations in one run, a custom GeoJSON polygon, or a radius around GPS coordinates. Duplicates are removed by place ID.
  • Free filters. Minimum rating, only places with or only places without a website, category words, skip closed places.
  • Direct input. Paste Google Maps place URLs, search URLs or place IDs to refresh places you already know.
  • Safe on big jobs. Runs resume automatically after a platform restart, with no double charge, and stop cleanly before the run's time limit. Error items are free, and the run stops cleanly at your maximum cost per run.
  • Familiar output. Common field names (title, categoryName, totalScore, reviewsCount, placeId, emails…), exported as JSON, CSV or Excel.

⭐ If this actor saves you time, please bookmark it and leave a review: it helps other users find it.

How to scrape Google Maps with emails (step by step)

  1. Enter one or more search terms (restaurant, plumber, dentist, real estate agency…).
  2. Enter a location in plain text: a city (Lyon), a ZIP/postal code (75011, 10001), a county or region (Haute-Savoie, Bavaria, Texas) or a whole country (Belgium). Add more locations in More locations, draw a custom area (GeoJSON), or use GPS coordinates + radius.
  3. Set max places per search term, keep Emails & social profiles on, and click Start.
  4. Download the results as CSV, Excel or JSON, or send them to Google Sheets, your CRM, Make, n8n or Zapier.

You can also paste Google Maps place URLs, search URLs or place IDs to get specific places.

What data can you extract from Google Maps?

DataFieldsFilled in our benchmark*
Name, categories, Google Maps link, place IDtitle, categoryName, categories, url, placeId, cid, kgmid100%
Full addressaddress, street, neighborhood, city, postalCode, county, state, country, countryCode, plusCode99.9%
GPS coordinateslocation.lat, location.lng100%
Phone numbersphone (local), phoneUnformatted (international)95%
Websitewebsite, domain (e.g. example.co.uk, a handy key to match your CRM)84%
Emailsemail (best email, one text column), emails (up to 10, own-domain first), emailStatus and emailChecks (does the email's domain accept mail?)42% to 61% of websites
Social profilesfacebooks, instagrams, linkedIns, twitters, youtubes, tiktoks, pinterestsInstagram 46%, Facebook 41%
Rating & reviewstotalScore, reviewsCount, reviewsUrl99%
Opening hoursopeningHours (7 days), additionalOpeningHours (kitchen, delivery…)96%
Photo & attributesimageUrl, imagesCount, additionalInfo (accessibility, payments, services…)photo 99.7%
Booking & online orderingbookingLinks, reserveTableUrl, googleReserveUrl, orderOnline, googleFoodUrl (Google "Order online" page with the delivery and pickup providers), orderBy (each provider with its link, delivery and pickup; with scrapeOrderProviders)restaurants: booking 49%, order online 38%
Descriptiondescription (Google summary), businessDescription (written by the business, "From the business"; with scrapeBusinessDescription)owner text 77%
Review topicsreviewsTags (topics Google extracts from reviews with the number of reviews mentioning each, e.g. { "title": "terrace", "count": 42 }; with scrapeReviewsTags)98%
StatusbusinessStatus, permanentlyClosed, temporarilyClosed—

* Median of 3 runs on 1,000 restaurants in Lyon, France (October 2026). The email rate is the share of websites where at least one email of the business was found, after removing generic platform emails; it depends on the trade: 42% for restaurants in Lyon, 61% for dentists in Manchester and plumbers in Austin.

Why this Google Maps Scraper?

This actor
Price for 1,000 places with emails and social profiles$0.50, all included (no start fee, no add-ons)
Emails + social profiles from the business website✅ Included
More than 120 results per search✅ Adaptive grid over the real area boundary
Search by ZIP/postal code, county, region or whole country✅ OpenStreetMap boundaries, several locations per run, GeoJSON polygons, radius
Speed~80 s for 1,000 places with emails, ~12 s for 20 places (measured)
Lead filters (rating, with/without website, category, closed)✅ Included
ReliabilityAutomatic resume without double charge, clean stop before the time limit

Google Maps scraper input

FieldTypeDescription
searchStringsArrayarraySearch terms, e.g. ["restaurant", "bakery"]
locationQuerystringCity, ZIP/postal code, county, region or country, e.g. "Lyon", "75011", "Haute-Savoie", "Belgium"
locationsarrayMore locations, e.g. ["Grenoble", "Annecy"]. Each term runs in each location
customGeolocationobjectGeoJSON Polygon / MultiPolygon, or Point with radiusKm
maxPlacesintegerRequired. Max places per search term and location (default 100)
scrapeContactsbooleanEmails + social profiles from each place's website (default on, included in the price)
checkEmailsbooleanChecks that each email's domain can receive mail with a DNS lookup; no message is sent (default on, included in the price)
languagestringResults language: en, fr, de, es… (default en)
countryCodestringOptional country bias (fr, us…). Auto-detected from the location
lat, lng, radiusKmnumberSearch around coordinates instead of a text location
startUrlsarrayGoogle Maps place or search URLs
placeIdsarrayGoogle place IDs (ChIJ…)
minRatingnumberOnly places rated at least this value (e.g. 4.5)
websitestringallPlaces, withWebsite, or withoutWebsite (find businesses that need a website)
categoryFilterWordsarrayKeep only places whose category contains one of these words, e.g. ["pizza"]
searchMatchingstringall (default), only_includes (place name contains the search term, e.g. a chain) or only_exact
areaFilterarrayKeep only places in these cities, postal codes (prefix like "69" works), counties, regions or neighborhoods, e.g. ["Villeurbanne", "69003"]. Applied inside the searched location. If nothing matches, the search stops early and explains why; if very few places match, the run status warns you
skipClosedPlacesbooleanSkip temporarily / permanently closed places
completeDetailsbooleanComplete missing reviews count / weekly hours from the place page (default on, included in the price)
scrapeBusinessDescriptionbooleanAdd businessDescription, the text the business wrote on its Google profile. Opens each place page, so runs take about twice as long (default off, included in the price)
scrapeReviewsTagsbooleanAdd reviewsTags, the review topics Google shows with the number of reviews mentioning each. Opens each place page (shared with scrapeBusinessDescription), so runs take about twice as long (default off, included in the price)
scrapeOrderProvidersbooleanAdd orderBy, the providers of the place's Google "Order online" page (Uber Eats, Deliveroo, DoorDash, own website...), each with its link and whether it offers delivery or pickup. One more page for each place that takes orders online: Lyon, 1,000 restaurants, about 100 s instead of 65 s (default off, included in the price)

Example inputs

All restaurants of a county, with emails:

{
"searchStringsArray": ["restaurant"],
"locationQuery": "Haute-Savoie, France",
"maxPlaces": 5000,
"language": "fr"
}

Plumbers in three cities in one run:

{
"searchStringsArray": ["plumber"],
"locationQuery": "Lyon",
"locations": ["Grenoble", "Annecy"],
"maxPlaces": 200
}

Cafés within 2 km of a point:

{
"searchStringsArray": ["café"],
"customGeolocation": { "type": "Point", "coordinates": [2.3522, 48.8566], "radiusKm": 2 },
"maxPlaces": 100
}

Businesses without a website, rated 4.5+ (prospects for a web agency):

{
"searchStringsArray": ["restaurant"],
"locationQuery": "Bordeaux, France",
"website": "withoutWebsite",
"minRating": 4.5,
"maxPlaces": 300
}

Every Starbucks in Paris (the place name must contain the search term):

{
"searchStringsArray": ["Starbucks"],
"locationQuery": "Paris",
"searchMatching": "only_includes",
"maxPlaces": 500
}

Bakeries of Greater Lyon, but only in Villeurbanne and the 69003 postcode:

{
"searchStringsArray": ["boulangerie"],
"locationQuery": "Métropole de Lyon",
"areaFilter": ["Villeurbanne", "69003"],
"maxPlaces": 200,
"language": "fr"
}

Google Maps data output example

Each place is one dataset item with "status": "found". If an input cannot be processed (invalid place ID, unknown location…), you get an item with "status": "error" and an error message. The run keeps going and you are not charged for it. Three table views are available in the Output tab: Overview, Contacts and Location.

{
"status": "found",
"title": "Example Dental Studio",
"categoryName": "Dentist",
"categories": ["Dentist", "Cosmetic dentist"],
"address": "1 Example Street, Manchester M1 1AA, United Kingdom",
"street": "1 Example Street",
"city": "Manchester",
"postalCode": "M1 1AA",
"state": "England",
"county": "Greater Manchester",
"country": "United Kingdom",
"countryCode": "GB",
"neighborhood": "Northern Quarter",
"location": { "lat": 53.4794, "lng": -2.2453 },
"plusCode": "9C5VFQH3+Q4",
"phone": "0161 000 0000",
"phoneUnformatted": "+44 161 000 0000",
"website": "https://www.example-dental.co.uk/",
"domain": "example-dental.co.uk",
"email": "hello@example-dental.co.uk",
"emails": ["hello@example-dental.co.uk"],
"emailStatus": "mx_ok",
"emailChecks": [{ "email": "hello@example-dental.co.uk", "status": "mx_ok" }],
"facebooks": ["https://www.facebook.com/exampledental"],
"instagrams": ["https://www.instagram.com/exampledental"],
"linkedIns": [],
"totalScore": 4.9,
"reviewsCount": 312,
"openingHours": [
{ "day": "Monday", "hours": "8:30 AM–5:30 PM" },
{ "day": "Tuesday", "hours": "8:30 AM–5:30 PM" }
],
"businessStatus": "OPERATIONAL",
"imageUrl": "https://lh3.googleusercontent.com/…=w800-h600-k-no",
"imagesCount": 87,
"additionalInfo": {
"Accessibility": [{ "Wheelchair accessible entrance": true }],
"Payments": [{ "Credit cards": true }]
},
"bookingLinks": [{ "name": "example-booking.com", "url": "https://www.example-booking.com/example-dental" }],
"reserveTableUrl": "https://www.example-booking.com/example-dental",
"googleReserveUrl": null,
"orderOnline": false,
"googleFoodUrl": null,
"orderBy": [],
"placeId": "ChIJ…",
"url": "https://www.google.com/maps/search/?api=1&query=…&query_place_id=ChIJ…",
"reviewsUrl": "https://search.google.com/local/reviews?placeid=ChIJ…",
"searchString": "dentist",
"searchLocation": "Manchester",
"rank": 1,
"scrapedAt": "2026-10-21T07:00:00.000Z"
}

(Illustrative example: values are anonymized and some fields are omitted.)

How much does it cost to scrape Google Maps?

$0.50 per 1,000 places ($0.0005 per place returned), everything included: emails, social profiles, phone numbers, place details, proxies and Apify platform usage. No start fee, no add-ons. Paid Apify plans pay less: $0.45 per 1,000 places on Starter, $0.40 on Scale and $0.30 on Business.

PlacesFree planStarterScaleBusiness
100$0.05$0.045$0.04$0.03
1,000$0.50$0.45$0.40$0.30
10,000$5$4.50$4$3
100,000$50$45$40$30

Error and "not found" items are free. Set a maximum cost per run in Apify and the actor stops cleanly when it is reached. Apify's free plan ($5 of monthly credit) covers up to 10,000 places a month.

Use it via API, Make, n8n or AI agents

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("fit_melon/google-maps-scraper-cheap").call(run_input={
"searchStringsArray": ["dentist"],
"locationQuery": "Manchester, UK",
"maxPlaces": 200,
})
for place in client.dataset(run["defaultDatasetId"]).iterate_items():
print(place["title"], place.get("phone"), place.get("email"))
  • Make / n8n / Zapier: use the Apify app or node, action "Run an Actor" with fit_melon/google-maps-scraper-cheap, then "Get dataset items" and map the fields to Google Sheets or your CRM. Plain text columns are ready to map with no array handling: title, phone, website, domain, email, address, city, postalCode, totalScore, reviewsCount, url.
  • Schedules & webhooks: run it every week on your area and get notified when new leads arrive.
  • AI agents: available through the Apify MCP server.

Google Maps Scraper FAQ

How much does it cost to scrape Google Maps?

$0.50 per 1,000 places ($0.0005 per place), all included: emails, social profiles, phone numbers, place details, proxies and platform usage. 1,000 places cost $0.50, 10,000 cost $5 and 100,000 cost $50. Paid Apify plans pay less: $0.45 per 1,000 places on Starter, $0.40 on Scale and $0.30 on Business. There is no start fee and there are no add-ons. Error and "not found" items are free. Apify's free plan ($5 of monthly credit) covers up to 10,000 places a month.

Does this Google Maps scraper extract emails?

Yes, at no extra cost. For each place with a website, it opens the home page. If there is no email there, it opens up to two contact or legal pages (Contact, Impressum, Mentions légales…). It returns the emails published on those pages, plus Facebook, Instagram, LinkedIn, X, YouTube, TikTok and Pinterest profiles. Emails are never guessed, and the generic emails of website builders, booking and delivery platforms are filtered out. In our benchmarks, real business emails were found on 42% (restaurants in Lyon) to 61% (dentists in Manchester, plumbers in Austin) of websites. Turn scrapeContacts off if you only need the Google Maps data.

Are the emails verified?

Each email's domain is checked with a DNS lookup, included in the price (checkEmails, on by default). emailStatus gives the result for email, and emailChecks lists { email, status } for every email found: mx_ok (the domain publishes mail servers), a_only (no mail server, but the domain has an address mail can fall back to) or unknown (DNS did not answer). Emails with the status undeliverable (the domain does not exist or refuses mail) are removed from email and emails and stay listed in emailChecks. No message is ever sent and the mailbox itself is not tested, so mx_ok means the domain accepts mail, not that this exact address exists.

How do I get more than 120 results from Google Maps?

Google Maps lists about 120 places per search. Enter a location (for example Lyon or Texas) and set maxPlaces above 120. The scraper takes the area's real boundary and covers it with a grid. It splits only the dense cells into 4 smaller ones and searches them again, skips cells outside the boundary, and removes duplicates by place ID. You can ask for up to 50,000 places per search term and per location. The run stops when that number is reached or when the whole area has been covered.

How do I scrape all businesses in a city, county, region or country?

Type the area in Location: a city (Paris), a county (Haute-Savoie), a region or state (Bavaria, Texas) or a country (Belgium). To cover several areas, add them under More locations: each search term runs in each location. For a custom zone, paste a GeoJSON Polygon or MultiPolygon in customGeolocation, or a point with radiusKm. When OpenStreetMap has no boundary for a location, a radius around it is used instead, and a warning appears in the log. The run statistics (RUN_STATS in the key-value store) show which area was used for each location: osm-boundary with its km², or google-circle with its radius. Big jobs: the default run timeout is 1 hour; for tens of thousands of places, raise it in the run options or split the job by location (the run also stops cleanly before its time limit and can be resurrected to continue, with no double charge).

Can I search Google Maps by ZIP code or postal code?

Yes. Type the code with its country in Location, for example 75011, France or 90210, USA. The postal-code boundary from OpenStreetMap is used when it exists, otherwise a radius around the code. Add more codes under More locations to cover several ZIP codes in one run.

How do I find local businesses without a website?

Set website to withoutWebsite (and optionally minRating). Only places with no website on their Google Maps listing are returned: ideal prospects for web agencies and local marketing services.

How fast is this Google Maps scraper?

Measured in October 2026 (median of 3 runs at the default 2 GB memory): 1,000 restaurants in Lyon with emails in about 80 seconds, 300 restaurants across a whole county (Haute-Savoie) in about 26 seconds, and a 20-place search in about 12 seconds. Results are streamed into the dataset while the run is going. Speed mostly depends on how many business websites have to be visited for emails.

The scraper collects public business listing data and the contact details businesses publish on their own websites. It does not collect reviewer names, review texts or reviewer photos. Rules differ by country. If your list contains personal data (for example a sole trader's name or a named person's email address), GDPR and similar laws require a lawful basis such as legitimate interest. You must also tell people where you got their data, let them opt out, and follow local direct-marketing rules. You are responsible for how you use the data and for following Google's terms. This is not legal advice.

Can I export Google Maps data to Excel, CSV or Google Sheets?

Yes. You can download each run's results as CSV, Excel, JSON, XML or HTML from the run page or through the API. The Overview table shows the photo, name, category, address, city, postal code, phone, website, domain, email, emails, email status, Instagram, Facebook, rating, reviews count, business status and Google Maps link. To fill a Google Sheet automatically, connect the actor to Make, n8n or Zapier, or import the CSV file.

Do I need a Google Maps API key or proxies?

No. The scraper sends plain HTTP requests to Google Maps. It uses no browser and no Google Places API, so you need no API key and no Google Cloud billing. Apify datacenter proxies are used, with a limited residential fallback if Google blocks a request. Their cost is included in the $0.50 per 1,000 places, so there is nothing to configure: selecting residential proxies in the input does not make the run more reliable.

Which memory should I use?

Keep the default 2 GB. A run of 5,000 places uses less than 0.6 GB, and more memory barely speeds it up: 1,000 restaurants in Lyon took about 75 seconds with 2 GB and 44 seconds with 32 GB. Runs are limited to 4 GB.

Does it scrape Google reviews and photos?

It returns the rating, the reviews count, a direct link to the reviews (reviewsUrl), the main photo (imageUrl) and the number of photos (imagesCount). It does not download review texts, reviewer data or the full photo gallery.

Can I switch from another Google Maps scraper without changing my workflow?

Usually, yes. The output uses the field names most Google Maps scrapers use (title, categoryName, address, phone, website, totalScore, reviewsCount, placeId, url, emails, instagrams, facebooks…). On input, maxCrawledPlacesPerSearch is accepted in place of maxPlaces, placeMinimumStars in place of minRating, searchMatching works with the same values (all, only_includes, only_exact), and city, county, state, country and postalCode are combined into one location. In Make, n8n or Zapier you usually only need to change the actor ID (set the memory to 2048 MB if your scenario sets one).

Use cases

  • Lead generation & cold outreach: lists of local businesses (B2B leads) with emails, phone numbers, websites and social profiles, by city, ZIP code, county, region or country.
  • Local SEO & competitor analysis: ratings, reviews count and categories by area.
  • Market research: count and map businesses of a given type in a city or region.
  • Web agencies: "website": "withoutWebsite" lists local businesses that still have no website.
  • Data enrichment: refresh opening hours and business status from place IDs.

Limitations & fair use

  • Data comes from public Google Maps listings, and availability varies by place (not every business has a website or phone number).
  • Area boundaries come from OpenStreetMap (© OpenStreetMap contributors, ODbL). If a location has no boundary, a radius around it is used.
  • priceLevel is only filled when Google shows it in the listing.
  • Emails are collected only from the business's own public website (home page and contact or legal pages).
  • Personal data is excluded: no review authors, no reviewer photos.
  • You are responsible for using the data in line with applicable laws (GDPR, etc.) and Google's terms.

Changelog

See the Changelog tab. Latest: 1.26: more complete places: when Google returns an incomplete search entry (name and coordinates only, no address or rating), the place page is fetched once more to fill in the missing fields. No extra request on normal runs, same price. 1.25: better contact pages on WordPress sites: files whose path merely contains "contact" (such as the contact-form-7 stylesheet) no longer take the place of the real contact page, so the real /contact page is read. Same price, cost and speed. 1.24: more websites read: pages whose server closes its HTTP/2 connection (about 5% of website pages) are retried in HTTP/1.1, which recovered 29 of 31 such pages on 1,000 restaurants in Lyon. Same price, cost and speed. 1.23: new orderBy field, the delivery and pickup providers of each place with their links, e.g. { "name": "Uber Eats", "url": "https://www.ubereats.com/...", "delivery": true, "pickup": true }, found for all 381 Lyon restaurants that take orders online in our test (98% to 100% across runs). Turn on scrapeOrderProviders (same price). Also fixed: Google Maps links with a cid in startUrls now return the place. 1.22: email domain check, included and on by default (checkEmails). New emailStatus and emailChecks fields; emails whose domain cannot receive mail are removed from email and emails (2% to 4% of the emails found on restaurant and dentist websites in our tests). DNS lookup only: no message is sent and the mailbox is not tested. 1.21: new reviewsTags field, the topics Google extracts from reviews with the number of reviews mentioning each, found for 98% of restaurants in Lyon. Turn on scrapeReviewsTags to get it for every place (one place page per place, same price); for placeIds and startUrls it is filled without the option. 1.20: new businessDescription field, the description written by the business itself on Google Maps ("From the business"), found for 77% of restaurants in Lyon. Turn on scrapeBusinessDescription to get it for every place (one place page per place, same price); for placeIds and startUrls it is filled whenever the business wrote one, without the option. 1.19: the Overview and Contacts tables, and their API links (?view=overview, ?view=contacts) used by Make, n8n and Zapier, now include the plain email and domain columns next to the website. 1.18: two plain text columns for spreadsheets, CRMs, Make, n8n and Zapier: email (the best email found, so no array to unpack) and domain (the website's domain, e.g. example.co.uk, to match or deduplicate companies). Same price, no extra request. 1.17: small runs no longer wait for stalled Google connections (a slow request gets a second copy through another IP after 4 s, the first answer wins), same cost on large runs. 1.16: searches end as soon as they have all their places (pages still loading are cancelled), so selective filters such as minRating 4.9 run about 25% faster. 1.15: security update to Node.js 24. 1.14: when your filters keep fewer than 2% of the places checked (for example minRating 4.9 with only places without a website), the run tells you in its status and log, so you know why it is slow and which filters to loosen. 1.13: restaurants and shops now show whether they take orders online (orderOnline) with the Google "Order online" page listing their delivery and pickup providers (googleFoodUrl), and the "Reserve with Google" link (googleReserveUrl), which also fills reserveTableUrl when there is no partner booking link. Same price, no extra request. 1.12: proxies stay included and managed (datacenter first, limited residential fallback, even if residential is selected in the input), and runs are limited to 4 GB of memory, which is more than the scraper needs. 1.11: when your filters match no place at all (for example an areaFilter town outside the searched location), the search stops early and tells you why, instead of sweeping the whole area. 1.10: new filters at no extra cost. searchMatching keeps only places whose name contains (or equals) the search term, for chains and brands. areaFilter keeps only places in the cities, postcodes, counties or neighborhoods you list. 1.9: the same location now always gives the same area. Cities such as Manchester or Leeds always get their real city boundary instead of sometimes a much wider radius, and boundary lookups are retried. The area used is logged in the run statistics. 1.8: about 40% faster on large runs, cleaner emails, half the Google requests on small searches, clean stop before the run time limit.

Coming next, at the same price: more photos, menu links, even faster small runs.

More actors by this developer

See all actors: apify.com/fit_melon