π Get 120 Leads in 10 Minutes! π€
Welcome to the Google Maps Scraper, a powerful scraper designed to scrape upto 1200 Google Map Leads in just 1.6 Hours .
If you're looking to grow your business by connecting with potential leads discovered using Google Maps, but want to avoid the hassle of manually gathering leads from each Google Maps by copying and pasting, you've come at the Right Place.
This Google Maps Scraper is well maintained and and saves data in both CSV and JSON formats for easy use.
Below is a sample showing the data that will be generated as CSV and JSON:
If you are not a techy person or don't know how to use git. You can follow this video to make bot run.
Let's get started by generating Google Maps Leads by following these simple steps
1οΈβ£ Clone the Magic π§ββοΈ:
git clone https://github.com/omkarcloud/google-maps-scraper
cd google-maps-scraper
2οΈβ£ Install Dependencies π¦:
python -m pip install -r requirements.txt
3οΈβ£ Let the Rain of Google Map Leads Begin π:
python main.py
Once the scraping process is complete, you can find your leads in the output
directory.
Watch this video to see the bot in action!
A: Open the file src/config.py
and comment out the line that sets the max_results
parameter.
By doing so, you can scrape all the search results from Google Maps. For example, to scrape all restaurants in Delhi, modify the code as follows:
queries = [
{
"keyword": "restaurants in delhi",
# "max_results" : 5,
},
]
β I want to scrape search results for a specific business in a particular location. How can I achieve that?
A: Open the file src/config.py
and update the keyword
with your desired search query.
For example, if you want to scrape data about stupas in Kathmandu π³π΅, modify the code as follows:
queries = [
{
"keyword": "stupas in kathmandu",
},
]
A: You have the option to apply filters to your Google Maps search results using the following parameters:
- min_rating
- min_reviews
- max_reviews
- has_phone
- has_website
To specify filters, open src/config.py
and specify your filters.
The Following example will scrape only those listings with a minimum of 5 reviews, a maximum of 100 reviews, and a phone number.
queries = [
{
"keyword": "restaurants in delhi",
"min_reviews": 5 ,
"max_reviews": 100,
"has_phone": True,
},
]
A: Absolutely! Open src/config.py
and add as many queries as you like.
For example, if you want to scrape restaurants in both Delhi π and Bangalore π¨βπ», use the following code:
queries = [
{
"keyword": "restaurants in delhi",
},
{
"keyword": "restaurants in bangalore",
}
]
We offer a Pro Version of our Google Maps Scraper that enables you to scrape more data points like working hours, booking appointment links, and price range for the scraped locations. Getting information like Working Hours, Booking Appointment Link and Prices Range greatly assists in Prospecting.
Below is an example of the sample lead scraped by Pro Version:
[
[
{
"name": "Colonie",
"full_address": "127 Atlantic Ave, Brooklyn, NY 11201",
"borough": "Brooklyn Heights",
"street": "127 Atlantic Ave",
"city": "Brooklyn",
"postal_code": "11201",
"country_code": "US",
"country": "United States of America",
"us_state": "New York",
"state": "New York",
"plus_code": null,
"latitude": 40.6908464,
"longitude": -73.9958422,
"time_zone": "America/New_York",
"popular_times": null,
"site": "http://www.colonienyc.com/",
"phone": "+1 718-855-7500",
"type": "American restaurant",
"category": "restaurants",
"subtypes": "American restaurant, Cocktail bar, Italian restaurant, Organic restaurant, Restaurant, Wine bar",
"posts": null,
"rating": 4.6,
"reviews": 666,
"reviews_data": null,
"photos_count": 486,
"google_id": "0x89c25a4590b8c863:0xc4a4271f166de1e2",
"place_id": "ChIJY8i4kEVawokR4uFtFh8npMQ",
"reviews_link": "https://search.google.com/local/reviews?placeid=ChIJY8i4kEVawokR4uFtFh8npMQ&q=restaurants+brooklyn+usa&authuser=0&hl=en&gl=US",
"reviews_id": "-4277250731621359134",
"photo": "https://lh5.googleusercontent.com/p/AF1QipN_Ani32z-7b9XD182oeXKgQ-DIhLcgL09gyMZf=w800-h500-k-no",
"street_view": "https://lh5.googleusercontent.com/p/AF1QipN_Ani32z-7b9XD182oeXKgQ-DIhLcgL09gyMZf=w1600-h1000-k-no",
"working_hours_old_format": "Monday: 5\\u20139:30PM | Tuesday: Closed | Wednesday: Closed | Thursday: 5\\u20139:30PM | Friday: 5\\u20139:30PM | Saturday: 11AM\\u20133PM,5\\u20139:30PM | Sunday: 11AM\\u20133PM,5\\u20139:30PM",
"working_hours": {
"Monday": "5\\u20139:30PM",
"Tuesday": "Closed",
"Wednesday": "Closed",
"Thursday": "5\\u20139:30PM",
"Friday": "5\\u20139:30PM",
"Saturday": "11AM\\u20133PM,5\\u20139:30PM",
"Sunday": "11AM\\u20133PM,5\\u20139:30PM"
},
"business_status": "OPERATIONAL",
"about": {
"Service options": {
"Dine-in": true,
"Delivery": false,
"Takeout": false
},
"Health & safety": {
"Mask required": true,
"Staff required to disinfect surfaces between visits": true
},
"Highlights": {
"Fast service": true,
"Great cocktails": true,
"Great coffee": true
},
"Popular for": {
"Lunch": true,
"Dinner": true,
"Solo dining": true
},
"Accessibility": {
"Wheelchair accessible entrance": true,
"Wheelchair accessible restroom": true,
"Wheelchair accessible seating": true
},
"Offerings": {
"Coffee": true,
"Comfort food": true,
"Healthy options": true,
"Organic dishes": true,
"Small plates": true,
"Vegetarian options": true,
"Wine": true
},
"Dining options": {
"Dessert": true
},
"Amenities": {
"High chairs": true
},
"Atmosphere": {
"Casual": true,
"Cozy": true,
"Romantic": true,
"Upscale": true
},
"Crowd": {
"Groups": true
},
"Planning": {
"Dinner reservations recommended": true,
"Accepts reservations": true,
"Usually a wait": true
},
"Payments": {
"Credit cards": true
}
},
"range": "$$$",
"reviews_per_score": {
"1": 9,
"2": 10,
"3": 47,
"4": 129,
"5": 471
},
"reserving_table_link": "https://resy.com/cities/ny/colonie",
"booking_appointment_link": "https://resy.com/cities/ny/colonie",
"owner_id": "114275131377272904229",
"verified": true,
"owner_title": "Colonie",
"owner_link": "https://www.google.com/maps/contrib/114275131377272904229",
"location_link": "https://www.google.com/maps/place/Colonie/@40.6908464,-73.9958422,14z/data=!4m8!1m2!2m1!1sColonie!3m4!1s0x89c25a4590b8c863:0xc4a4271f166de1e2!8m2!3d40.6908464!4d-73.9958422"
},
...
]
]
Moreover, the Pro Version is 6 times faster than the Free Version.
For example, while the Free Version requires 1 hr to scrape 600 leads, the Pro Version can accomplish the same task in just 10 minutes saving you significant time.
To obtain the Pro Version of our bot and enjoy the benefits of enriched data and time savings, you will need to sponsor the project with an amount ranging from $4 to $40. Follow these simple steps to gain access to Pro Version:
- Visit the Sponsership Page here
- Select the $4 option, or you may choose a custom amount of your choice.
- In the project's discussion section, leave a comment stating "Sponsored!"
- We will identify your email address from your GitHub Profile and send you an email containing the Pro Version of the bot as a Zip File.
Get access to the Pro Version by sponsoring the project here, and enjoy enriched data and 6x time savings.
On average, each Google Maps search gives 120 listings. It takes approximately 10 minutes to scrape these 120 listings.
To calculate the number of hours it takes to scrape "n" searches, you can google search this formula substituting n
with number of searches you want to conduct:
n * 10 minutes in hour
For example, if you want to scrape 10 google map queries or 1200 listings, it will take around 1.6 hours.
A: Most people scrape Google Maps Listings to sell things!
For example, you can search for restaurants in Amritsar and pitch your web development services to them.
You can also find real estate listings in Delhi and promote your exceptional real estate software.
Google Maps is seriously a great platform to find B2B customers to sell things to!
β The code looks well-structured and organized. Most Selenium codebases are messy. How did you do it?
A: I use the Bose Framework, a Bot Development Framework that greatly simplifies the process of creating bots.
The Google Maps Scraper uses Bose to:
- Enable running the bot multiple times
- Maintain code structure
- Save the data as JSON and CSV
- Incorporate anti-bot detection features
- Utilize the enhanced Selenium Driver to reduce code.
You can see scrape_google_maps_links_task.py
to understand the simplicity Bose Brings.
Without Bose Framework, it would be 2x more harder to make this Google Maps Scraper.
Explore the Bose Framework here.
Star β the repository.
Your star will send me a Telegram Notification, and it will bring a smile to my face :)