How to Scrape Google Maps & Get Unlimited Leads For FREE!

Helena Liu shows how to use Make.com to scrape Google Maps for local business leads for free. The workflow extracts business websites and emails using regex patterns, saves them to Google Sheets, and pushes them into GoHighLevel CRM to trigger automated outreach. The entire setup takes under 20 minutes and costs nothing.
Chapters
In this day and age, pretty much every single local business will have a presence on Google Maps. This is because Google Maps is the number one way that consumers use to find the product or services that they are looking for. This is why it's so important for these local businesses to establish themselves on Google and have great reviews. This also presents an opportunity for those of us who have a B2B offer. You want to scan Google Maps for your leads. And today I'm going to show you a free, quick, and simple method that you can use to scrape Google Maps and get unlimited leads. There's no reason why after you learn this method that you won't have as many clients as your heart desires. If you are new to my channel, hi, my name is Helena. And on this channel, you will learn about everything AI and automations. So please make sure you like and subscribe below. I post videos every single week. And also please sign up for my free AI automations course and the link is going to be below as well. Alright, so in order to scrape Google Maps for unlimited leads, the first thing that we need to do is to go to maps.google.com. Then we're going to go into our ideal location. And right now I am in New York. Then in the search bar, I'm going to search for the type of business that I want to target. This could be dentists, doctors, lawyers, plumbers, tattoo artists, hairdressers, whatever kind of local service that you're looking for, this method will work great for. So let's suppose that I am going to look for restaurants. And you can see this Google URL is actually changing depending on what I'm searching for. If I put in dentist here, you can see that this URL now has changed. Or if I put in hairdresser here, and you can see the URL here has changed as well. This is going to be important here in a second. Alright, so for today's demonstration, let's go ahead and use hairdressers. But just note that you can use the same web scraping process for any kind of local business that has presence on Google Maps. Once we get this URL, we're going to copy it. And then we're going to go to make. And create a new scenario. For those of you who are new here, make.com is an automation tool that allows you to automate a lot of these repetitive processes. Once we arrive to make.com and we create a new scenario, we'll be taken to a blank canvas that looks like this. And when we press the plus button right here in the center of the page, we can see all of the different things that we can use to trigger this automation. What we want to search for is the HTTP module. And we want to scroll down until we find Make a Request. So what this is going to do is that it's going to ping a website. And what it's going to return is all of the HTML code. The reason that we see this nice frontend is because once the HTML is rendered, this is what we look like. I'm going to paste in the Google Maps URL here. I'm going to keep the method as GET because I want to get all of this information from this URL. And I'm going to select Yes on Parse Responses and press OK. Next, I'm going to press Save. And I'm going to rename this automation to Google Maps Web Scraping. Great. And let's just give this a test. So to test this, just right-click and press on Run This Module Only. Great. Now that we have called this Google Maps URL successfully, and we have all of the data being returned from this Google Maps URL here, and we have a list of all all of the information that we want, and 95% of this is stuff that we don't want. So we just want all of the URLs that was collected from this web page. And to extract just the information that we want, we will need something called regex, or regular expression. And regular expression will match for patterns in a block of text and give you exactly what you want. Now you don't need to know how to code here. You can actually just use ChatGPT to help you write regular expression. You can just tell it, I want the regular expression pattern for a website, and ChatGPT will write this for you. I'm also going to give you this code as well. So the next thing we're going to do is we want to look for a text parser. Once we find the text parser, we're going to go into Match Patterns Advanced. And what this is going to do is we're going to put in the text that we want, then we're going to put in the regular expression pattern, and we're going to put in the pattern for a URL. And this text parser going to look through all of the HTML code and only return the URLs to us. Alright, let's go ahead and do that. I have pasted in here the regular expression for a website. And next in the text, I'm going to select the data from the previous module. Now before we move on, we need to select global match. And this is going to return to us all of the matches that is a URL instead of just the first one. And lastly, we need to select yes on multiline. Also, if you want this automation along with the regular expression code, just make sure you join my school community and you can get this whole automation with the code ready for download. Alright, once I have all of this filled out, I'm going to press OK. So let's go ahead and see if this has run. Okay, as you can see, this has worked perfectly. And it has returned a list of 524 URLs down for us. And when we start to look at these results, we can see that a lot of them are just Google URLs, like this URL that's being returned is support.google.com. And this is gstatic.com. So we actually don't want these results, right? We just want the URL of the website of the hairdressers. But this is working, it is returning an entire list of URLs that was present on that Google Maps page. Alright, so for the next step, though, we need to grab all 524 of these URLs into an array so that we can sort through them one by one to see which ones we need and which ones we do not need to put all of these results into an array. Array is basically a bundle of a lot of different individual components. And in this case, each single item in that array would be the URL website that was scraped from the Google Maps result. So we're going to search for the Array Aggregator. The Array Aggregator module is located under Flow Control. In the source module, I am going to select the Text Parser because is we want to put all of the outputs from the text parser into this array. Okay, and then the value that we want to put in this, this array is the fallback match. The reason that it is a fallback match is because when I expand on the result that we just got from the text parser, like if I just click on the one with the magnifying glass, we can see when we expand on it, and the way that the output is structured is underneath every bundle. If I expand on the fallback match, I can see that this is where the URL stored. Okay, so that's why when I'm trying to aggregate all of the results, I want to aggregate on the fallback match. A lot of times when you're trying to see how you're creating different components of your automation, you have to look at the result of the previous module to see how those APIs are structured. So just like that, I have finished all of my array aggregator. Now I have all of my results aggregated into a complete array. The next thing I want to do is create a loop that will go through every single one of these these URLs to see if it's just a bogus URL from, you know, google.com, or if it's a URL from a potential client or lead that I want to reach out to. I'm going to start a loop in make.com. You need to search for the repeater module, and the repeater module, again, it's under flow control. You can search for it in the bottom, or there's actually buttons here at the bottom for tools that makes it faster as well. So if I clicked on the green button, I can also go to the repeater module right from here too. So what I want to do here is make this repeater module the length of this array. So the number of times that this repeater module is going to repeat will be equal to the length of this array. I'm going to set the initial value as 1, and the length of this array is going to be the length of this array. I'm going to select this as the number of times and that I want this whole repeater module to run. Okay. All right. Now what I wanted to do is look at that website URL. If that website URL contains words like gstatic or Google— so those were the bogus URLs that was scraped from the text parser— I wanted to do nothing. And if it is a URL from a hairdresser, so a good lead, then I want the automation to actually go on to that website and look for their email address. When we look at all of these Google Maps listings, we can see Google Maps doesn't give their email address, and that's why we need to actually go onto their website and find their email address so that we can start this cold outreach campaign to them. Now that we have this URL, we can use the same method that we used earlier to ping that website and then look for an email address on that website. Alright, so the next module here is going to be another HTTP module, and we're going to scroll down until we find Make a request. And in this case, what we want to do is we want to ping the URL that just came through this flow. We're going to expand on the array, we're going to expand on the fallback choices. And we're going to select the one right here. And the array number is going to be the i and the fallback match is going to be the one. Alright, now let me explain how this works. So when we started this repeater module, we created a new variable called i. This i is going to equal 1 on the first loop, is going to equal 2 on the second loop, and so forth and so forth. And it's going to loop the number of times that is equal to the length of this array. So what we're saying here is go into this array, find the number i. So it's going to be the first URL in the first run, the second URL on the second run, the third URL on the third run, etc. So get those URLs, and then get the whole page from that URL. And we're going to follow the same step that we did earlier. We're going to now write a regular expression to extract the email address from that website this time, and then we can choose to send them an email directly, put it on a Google Sheet, or send it to our CRM. Before we do that though, we actually need to set a filter here. To set a filter, we just have to press on the gear icon in between these 2 modules. The reason that we want to do this is because when we looked at the results was returned from the text parser, like there was 500-something different URLs. And when we look at the results, a lot of these are not the hairdressers. For example, bundles30 is a hairdresser that could be a potential lead. But this one is just a Google URL, that was scraped. So we want to get rid of all of these Google URLs that we do not need. So we're going to set a filter here in the conditions here, I want to again expand on the array, expand on the fallback choices, and select the one that's in brackets. And I'm going to select i. So array at position i, it'll be the first URL in the first run, the second URL on the second run, etc. And in the text operator, I'm going to select does not contain the word Google in it. And I want to add another rule here. And I want to select the same variable that we just selected. And again, I'm going to select the array at position i. And this time, I want it to not contain the word gstatic. And just to make things even more clear, like when we expand on the text parser choices, the array at position 1 would be maps.google.com. This is what is stored in that first variable of that array, the second variable would be this, the third variable in the array would be this, and so forth and so forth. What we're saying is, if this URL contains Google, or if this URL contains gstatic, then don't go on to the next step, right? Only go on to the next step if the word Google or the word gstatic is not contained in the URL. This is what allows us to filter and just get the leads that we want. Now that we have set this filter, we're ready to scrape the email address off of the website that we have just collected. And again, we need a text parser for this. But I can click on the text parser, the pinkish button here at the bottom, look for Match Patterns Advanced again, and connect this to the website that we have just scraped. This time, I'm going to put in the regular expression pattern that will match an email address. And in the text here, I'm going to look for the data that was just scraped from the website. Before I save, I'm just going to select no on case sensitive for this text parser. And then I'm going to press OK. Once we have this basic web scraping done, that will scrape all of the email addresses that we want. The next step would depend on you and the goals that you want to achieve. For example, I could use a Google Sheets module here. Put in all of the URL and email addresses that was just scraped from that website into a Google Sheet. I could also choose to just send this business owner an email right away. And to do that, I would just select the Gmail module. And I can select send an email. And then I can send this business owner an email right away with the offer that I have. And then the third option that you could do here is to send this lead over to your CRM system. With a tag, and this will automatically enter them into an email sequence that you have. If you're using existing software that will scrape leads for you, it's usually much more costly and you have less customization. When you do it yourself, it's much cheaper and you get way more control of what you want to do in the process. For our example today, let's just put it into a Google Sheets. So I'm going to search for Google Sheets. Sheets. And let's select Add a Row. Now let's go ahead and create our Google Sheet. Okay, I have created my Google Sheets here. And you can see there's 2 columns, one for the URL and one for the email that's scraped. And by the way, you can use this method to scrape anything you want, from email addresses to phone numbers, whatever has a pattern to it, you can use regular expression to create that pattern. And don't worry, you don't need to learn how to write a regular expression You can just go on to ChatGPT and tell it what you want to write, and ChatGPT will write the regular expression for you. So let's fill in what we need to fill in for the Google Sheets module here. I'm going to select the spreadsheet that we have just created, which just looks like this with the URL and email. Now that we have our sheet created, we are going to select Sheet 1. And then for the URL, again, I went into the choices that I had here, I expanded on the array, I expanded on the fallback choices. And I selected on the URL that we are taking a look at at the moment. And in order to get the specific URL, I use the same method that we just saw, I put in the array number at i. And then for the email address, this would be what was just scraped from the text parser. So I selected the fallback match from the text parser that was just returned to us. Okay, because first we scraped all of Google Maps, then we got all of the URLs from all of these small businesses that we are interested in. And then we took a look at their website, and we scraped all of the email addresses off of those URLs, right? So we want to store that here. Before we can complete this whole automation, we just want to make sure everything is stable. And to do I'm just going to right-click on this HTTP module. And I'm going to add an error handler. Because what I find is that sometimes this module will not run depending on the URL that was just returned. So if the URL was returned in a bad format, then this will not run. And if that's the case, then we just want it to ignore that URL and go on to the next URL. Okay, and just like this, we have our whole automation completed in less than 20 minutes. So let's go ahead and give this a run and see what we get here. All right, it's been about 30 seconds. And this run has finished. And you can see that we got 12 different email addresses from this run, which is really great. If you were to do this manually, it'd probably take you an hour to do all of this work. And now you can just repeat the process here. Now I was looking for dentists in New York, I'm just going to search for dentists I can copy this URL, go back to make.com. Instead of this URL here, I can now put in the new URL, press OK. And now if I run it again, I'll see that I have more URLs and email addresses in just a second when this whole run finishes. Alright, just to show you how versatile this scraper that we have just made for Google Maps is. Now I'm going to show you how you can just put in all of your Google Maps URL, and then just let this automation run once a day. So I'm in Google Maps again, and I can get all the URLs that I want. Let's say that I want to target dentists. And so I'm going to copy the URL and then put it into a new Google Sheets. And I can just do it for all types of leads in all locations I want. Now once I get a spreadsheet, and I can just get a new row to run once a day, I'm going to go back back into my make.com account. Instead of having it run every 15 minutes, I can get it to run every single day at a specific time that I want it to run at. And instead of having the HTTP module here at the front, I can start a Google Maps module. I'm going to search for Google Sheets here, and for the specific trigger that I wanted to trigger, I need to move over the time that you see here. So when I move that over, this will allow me to choose a trigger module instead of an action module for Google Sheets. I'm going to look for Watch for New Rows, which is this trigger right here, and then I'm going to find the Google Sheet that I have just created here. I have selected my Google Maps URL spreadsheet sheet, and it's Sheet 1. I'm going to change the limit to 1. And then I'm going to link this Google Sheet to the HTTP module that we have just created. I'm going to click on the HTTP module. And instead of having this Google Maps URL be static every time, now we're going to change it to column 1. Essentially, we have put in a list of all the Google Maps URL that we want to scrape here. And we're telling make.com to run once every single day at this specific time, it's going to take a new row that's going to be scraped in this HTTP module. And the rest of the automation is exactly as we have configured. Now, another thing that we can add to this automation is to have the email sequence go out automatically. You can use any autoresponder to do this. And I'm going to show you how to set it up on GoHighLevel if you do use that. So to configure and link your HighLevel account to your make.com account, now I'm going to right-click and unlink the Google Sheets module, we're going to add a new module. And this time, we're going to search for HighLevel lead connector. And we want it to create a contact. We need to connect it to our GHL location. You can do so by pressing Add and choosing OAuth 2.0 or the old version. They both do the exact same thing. It's just 2 different ways of connecting. So once you're logged into your GHL account, you want to go down to Settings and scroll down until you find Tags, and you're going to create a new tag. A new tag just for this Google automation so that you know whenever a new lead comes through the make.com Google automation to start this specific email automation. So I am logged into my GoHighLevel account right here, and I'm going to go down to Settings and scroll down until I find Tags. This is where I can add a new tag to help me identify that these leads are coming in, came through the Google Maps scraping through make.com. So I can add a new tag here. You can call it whatever you want, just something to help you remember where these contacts came from. I'm going to call mine Google Maps scraping Make, and I'm going to go ahead and create this tag. Now I can go back to make.com, and I'm also going to select the tag that we have just created, which is a Google Maps scraping make. And I'm also going to fill in the email address here. If you want to scrape also for the first name, last name, phone number, you can use the exact same method. But those information may be hard to scrape because usually the business owners don't just put their first and last name on their website. So you may not be able to get a lot of results with those. After I have put in all of the information that have scraped about this lead to get into GoHighLevel. I'm just going to save this and turn it on. And then you want to go back to HighLevel and go to the main dashboard here again. Click on Automations and click on Create New Workflow and click on Start from Scratch. Now this is where we're going to build the series of emails that these leads are going to automatically get. For our trigger here, we're going to select tag. Whenever the contact gets this tag added, then this whole series of automation is going to trigger. For our filters here, I'm going to select tag added, and the specific tag is the Google Maps Scraping Make, the tag that we have just created. Now, after this tag has been added, we want to send an email, and this is where you can put your first email. So if you were selling an AI chatbot software, it could be something along the lines of, hey, business owner name, I created this free AI chatbot for you. Just let me know and I'd be happy to send it over. And by the way, you can get a free 14-day trial to ChatLemon by signing up below. All right, so this is a quick example of an email that I have just written. The subject line is I made you a free AI chatbot, and the message is I just built you a free AI chatbot, and I was wondering if I can send it over to you. This is a great strategy because when they reply, then you can quickly spend 5-10 minutes, build that chatbot for them, and then send it over to them, then get them to hop on the call, right? So this is a great way to get new clients for your AI agency. And by the way, this is just an example of what you could put in your email, but be as creative as you want. The important thing here is you learn the building blocks, and then you can run with it and make it your own. So after you send the first email, you can really decide what you want to happen next. For example, you could add in a wait module, and then you can add another module here and then add in your second email. So this could be, hey, I just want to follow up with you. Did you see my previous email? I made you a free AI chatbot. Can I send it over? And by the way, this doesn't just work for AI chatbots. It could be whatever service or product that you're selling to these businesses that you found on Google Maps. Once you're happy with a series of emails, then just save and turn on this whole automation. As you can see here, when you design your own web scraper, you can customize it to be whatever you want, and it's much, much cheaper. So I definitely hope that you give this method a try, and using this method, you'll have unlimited leads that you can scrape off of google.com. I hope you enjoyed today's tutorial. If you want to to learn more about AI and automations, please make sure you like and subscribe and join my free training, which is going to be linked below as well. You can get all of this automation, including the regular expression code, in my school community. So make sure you join that too. Thank you all so much for joining me here, and I'll see you next week.
More from Helena

How to Use Claude Code to Get UNLIMITED Leads in 6 Mins | Best Lead Scraping Tool

These AI Videos Has 21.5M Views — Here's the Exact System (Fable 5 + Higgsfield)

NotebookLM 2.0 Update: Analyze Your Entire Business in Minutes! (Full Tutorial)







