HasData
Back to all posts

How to Use Zapier to Automate Your Lead Generation

Zapier is a great option for integrating various applications without the need for coding skills. However, if you would rather skip the wiring, we also offer a no-code Google Maps scraper and a Google Maps Search API.

Zapier is a no-code system that allows you to integrate various applications, and the same platform can also drive a scraper on a schedule. It combines two systems into one without any programming knowledge, which covers a lot of integration tasks:

  1. Sending emails to leads collected using scraping.
  2. Collecting scraped data into a single database, Google Sheets for example.
  3. Scraping a list of sites saved in Google Sheets every week and mailing the results out.

All of this is built on screen. In Zapier you drag the apps you want into place and configure them there, with no code anywhere in the pipeline.

Which Lead Sources Zapier Connects Natively

Zapier’s directory holds a little over 10,000 apps, and for lead generation it splits along a line that isn’t the obvious one. Ad platforms, form builders, CRMs, and enrichment tools connect directly. Directory and map apps exist too, and every one of them reaches only the listing you own. Nothing in the catalogue searches a map or a directory for businesses that are not yours, and that is the gap a scraping step fills.

Lead sourceZapier supportNote
Google FormsNative52,556 Zaps in use, the most-used form app in the table
TypeformNative31,123 Zaps in use
JotformNative19,131 Zaps in use
Google AdsNativelead form extensions
Facebook Lead AdsPremium apppaid plan or trial only, and the most-used ad source here at 53,085 Zaps
LinkedIn AdsPremium applead gen form responses, organic and sponsored
LinkedIn Sales NavigatorListed, not builtthe page is a placeholder with no triggers or actions
Instagram for BusinessNativethe app is Instagram for Business, not Instagram
Google Business ProfileNativeyour own listing only: reviews in, posts and replies out
Yelp LeadsNativeinbound leads on your own Yelp page, not a search over other businesses
Yelp ConversionsNativead conversion reporting
CrunchbaseNativeyour lists and saved searches
ApolloNativeFind Contact and Find or Create Contact
HunterNativeFind Email, Verify Email, by domain
ClearbitNativenow HubSpot Breeze Intelligence, and down to 89 Zaps in use
HubSpotNativenot a Premium app
PipedriveNativenot a Premium app
SalesforcePremium app
Zoho CRMPremium app
MailchimpNativelist destination
Zillow Tech ConnectNativeagent leads into your CRM, not property listings
IndeedListed, not builtIndeed has not built the integration, so Webhooks or Code are the only route
Google MapsNo appno name match anywhere in the directory
Yellow Pages, Tripadvisor, GlassdoorNo appno name match anywhere in the directory

Facebook Lead Ads and LinkedIn Ads are Premium apps, so they cost money before you write a single step, and a plan also caps how many Premium apps you get. The real constraint is in the bottom third of the table, where every row is owner-side or missing. An inbound-lead app tells you who contacted you, and a lead-gen pipeline usually needs the businesses that have not. For those, the directory carries scraping apps, and the walkthrough below uses ours.

The Zapier Steps This Build Uses

A Zap is a trigger plus one or more actions. The trigger is the event that starts the run, the actions are what happens next, and the walkthrough below configures both from scratch, so what follows is the three built-in steps between them.

Looping repeats the steps after it. Give it a start, an end, and an increment, and the steps after it run once per value, which is how one keyword becomes a page-by-page walk through Google Maps.

Delay pauses the run. It matters here because Looping executes its iterations in parallel, and the Delay After Queue variant forces them through one at a time instead.

Filter stops a run when a condition isn’t met. The Zap below uses it so the completion email fires once, on the last iteration, rather than on every page.

All three are free. Zapier bills a task for every successful action step, and its own accounting exempts triggers, Filter, Paths, Looping, Delay, Formatter, Storage, and Zapier Tables steps, so in the Zap below only the scraper call, the sheet write, and the email cost anything.

Automating Google Maps Data Collection Using Zapier and Google Sheets

Here is what the finished pipeline does:

  1. Adding a new row containing the keyword to the Google Sheet table.
  2. Checking the table for new rows.
  3. If there’s a new line, page through Google Maps for that keyword, 20 places per request.
  4. Enter the received data into a new table.
  5. When the last page is done, send an email that the scraping has been completed.

Start with a spreadsheet. Sheet1 holds the keywords and Sheet2 collects what the Zap scrapes.

Sheet1 gets a single Keyword column. Sheet2 gets eight of them, named Title of Place, Address, Phone Number, Position, Rating, Reviews, Type and Website. So, your spreadsheet should be like this one:

Two empty Google Sheets tabs side by side, Sheet1 with a single Keyword column and Sheet2 with headers Title of Place, Address, Phone Number, Position, Rating, Reviews, Type and Website

Sheet1 and Sheet2 before the first run

Or you can copy our table (File, then Make a Copy).

After that, install a trigger that will initiate the launch of Zap. As a trigger, we set the addition of a new row in the table with keywords.

STEP 1. Trigger, Google Sheets, New or Updated Spreadsheet Row

As a condition for triggering Zap, we set a new or updated spreadsheet row in Google Sheets.

Trigger step 1 with Google Sheets chosen and the event dropdown open on New or Updated Spreadsheet Row

Google Sheets trigger events

After that, connect your account and allow access to files on Google Drive. And then set up a spreadsheet that will be tracked, a sheet, and a column.

Trigger setup with Spreadsheet set to Maps for Zapier, Worksheet set to Sheet1 and Trigger Column set to Keyword

Spreadsheet, worksheet and trigger column

Test the trigger before you go further. Once it fires cleanly, build the actions that run whenever a row changes or appears in the Maps for Zapier spreadsheet, the Sheet1 worksheet and the Keyword column.

To check, add the keyword for scraping in Sheet1 in the spreadsheet:

Sheet1 with Keyword in cell A1 and cafe new york in cell A2

Add row with keyword

STEP 2. Action, Looping by Zapier, Create Loop From Numbers

Specify the starting position (0) so that the elements are collected from the beginning. Then set how far to page. The example below runs to 1000, and whatever you choose here is the number the filter in STEP 6 compares against. The increment is 20, because that is how many results one request returns.

Looping by Zapier with counter start 0, counter end 1000, counter increment 20 and max iterations 5000

Looping by Zapier

Looping steps consume no tasks, so the page count here costs nothing by itself. What it multiplies is the scraper call below.

STEP 3. Action, Delay by Zapier, Delay After Queue

Zapier supports 3 delay options:

  1. Delay for. Adds a delay of a specified length. The Loop runs its iterations in several flows at the same time, so this delay only separates the actions inside one iteration, never one iteration from the next.
  2. Delay after Queue. Starts the next delay only after the previous one finishes. The whole Zap then runs as one flow, so the scraper gets one request at a time instead of several at once, and the run takes longer.
  3. Delay until. Use it when nothing further should run before a given time.

Step 3 of the Zap with Delay by Zapier chosen and the event set to Delay After Queue

Pick the Delay by Zapier event

Only Delay after Queue fits what this Zap does, so we select it.

Delay After Queue setup with Queue Title set to 1 min, Time Delayed For value 1 and the unit field showing minutes

Queue title and delay length

Delay steps are free as well, so serializing the loop this way costs nothing but the minutes it adds to a run.

STEP 4. Action, HasData, Google Maps - Scrape Business Data

After that, connect your HasData account by API key from the dashboard and pick the action event. The app carries one event per target, from Amazon and Zillow listings to Indeed and Yelp, and three of them cover most of what a lead pipeline needs:

  1. Web Scraper - Extract Content From URL for any website.
  2. Google Maps - Scrape Business Data for Google Maps.
  3. Google - Search Results Page (SERP) Scraper for Google search results.

This example uses the Google Maps one, so type Google Maps into the event search and pick it.

Zapier Setup tab with HasData as the app, the event search filtered to Google Maps, and Google Maps - Scrape Business Data highlighted above Extract Contributor Reviews and Extract Place Photos

Filter the event list down to Google Maps

In the Search Query field put Keyword. Fields country and domain can be left by default. They indicate in which country you want to view the results.

Google Maps Scraper fields with Search Query mapped to the Keyword column, Country USA, Domain google.com and Start mapped to the loop iteration

Map the keyword and the loop iteration

The start element should be the same as the loop iteration.

STEP 5. Action, Google Sheets, Create Spreadsheet Row(s)

Now let’s set a place to save the received data. Let it be Google Spreadsheet too:

Step 5 of the Zap with Google Sheets chosen and the event set to Create Spreadsheet Rows

Add spreadsheet rows

Here, in addition to specifying the table in which the data will be saved, you must also specify the fields from the HasData step that will be saved to the cells.

Column mapping that sends Title of Place, Organization's Address, Phone Number, Position Number, Place Rating, Number of Reviews and Type of Place into the sheet columns

Map the scraper output to columns

To do this, in the table where the results should be saved, set the names of the columns, which will then be pulled up in Zapier.

STEP 6. Action, Filter by Zapier

To make automation more convenient, send an email when the results for all keywords are processed.

Filter step set to continue only when Loop Iteration exactly matches the last counter value

Filter condition

To do this, use the Zapier filter and set the condition so that the run continues only when the current iteration number matches the last one.

Zapier may warn you that the current iteration will finish. That happens because the first iteration number is below the end number from STEP 2.

STEP 7. Action, Gmail, Send email

Add the Gmail service and set up sending from yourself to your mail.

Step 7 of the Zap with Gmail chosen and the event set to Send Email

Gmail as the last step

To, Subject and Body are required, and the rest can be left blank. In the Body, you can specify something like Data is ready.

Resulting Table

Let’s run it and look at the result:

Sheet2 filled with twenty New York cafes, each row carrying address, phone, position, rating, review count, type and website

Table with results

Excellent! No-code automation for data collection from Google Maps is ready. The final Zap looks like this:

The finished Zap with seven steps, from the Google Sheets trigger through Looping by Zapier, Delay After Queue, the HasData Google Maps Scraper, Create Spreadsheet Rows and the filter to Send Email in Gmail

The resulting Zap

Or you can get it by link.

Sending the Leads to a CRM Without Duplicates

The Zap above ends with a spreadsheet and a notification email. Everything below still fits inside the same Zap.

Store the leads in one sheet

Keep the append step pointed at a single sheet and add two columns to it, the run timestamp and the search query that produced the row. Without the query column you can’t tell later which search brought in which contact, which is the first thing anyone asks when one query outperforms the rest.

Zapier Tables does the same job without a spreadsheet, and later steps of the Zap can read its rows. It has a billing advantage too, because Zapier Tables steps consume no tasks while Google Sheets actions cost one each.

Get an email address first

The sheet this Zap builds holds the title, address, phone, position, rating, reviews, type, and website of each place, and no email at all. That’s the gap between a list of businesses and something a sales team can write to. Feeding the website column into our email scraper closes it, and the address comes back as a field you can map onward.

Stop duplicates before the CRM

Overlapping searches return the same business twice, and every rerun returns it again. Zapier’s trigger dedup only covers repeated trigger items, so scraped rows need their own check, and two separate layers do two separate jobs.

The sheet-side layer keeps the sheet clean. Google Sheets has a Find or Create Row action that does it in one step, keyed on the columns this Zap actually writes, the place title plus the address. Build it from parts instead and the order matters. A search action that finds nothing halts the Zap by default, so the lookup has to be set to proceed when nothing is found, or the Zap stops on exactly the new leads you want through, and the filter after it continues only when the search came back empty.

The CRM-side layer keeps the CRM clean, and it’s a separate step. HubSpot has Create or Update Contact and Pipedrive has Find or Create Person, and the two behave differently on a match. One updates the record it finds, the other leaves it alone. Neither app is Premium, while Salesforce and Zoho CRM are.

The duplicate check changes the task arithmetic before you scale the loop. A lookup set to proceed when nothing is found adds one more billed task per place, and the same lookup set to halt instead costs nothing.

Publishing and Using a Zap

Publish the Zap once it is set up and it appears in the Zaps list, where the toggle starts it running.

The Zaps list with Scraping Google Maps for Lead Generation owned by HasData, no warnings and the Running toggle set to On

Switch on/off your Zap

From that list you can share the Zap so other people can copy it, open it for viewing or editing, or delete it and start a new one.

Conclusion and Takeaways

Zapier covers the back half of a lead pipeline directly, from forms and ad platforms through to the CRM, with a paid plan required for a few of those apps. The discovery half is where it stops. Its directory and map apps only reach the listing you own, so finding businesses that are not yours takes a scraping step like STEP 4 above.

The Zap you just built stops at a sheet and an email. Turning it into a pipeline takes the three additions covered above, and the task table decides how much that costs, since the loop and the filters run free while every scraper call, sheet write, and lookup does not.

Valentina Skakun
Valentina Skakun
Valentina is a software engineer who builds data extraction tools before writing about them. With a strong background in Python, she also leverages her experience in JavaScript, PHP, R, and Ruby to reverse-engineer complex web architectures.If data renders in a browser, she will find a way to script its extraction.
Articles

Might Be Interesting