← Blog

How to Build a Local Business List in Google Sheets (142 Coffee Shops in Boise)

One search in Local Lead Finder turned the Boise area into a list of 142 coffee shops, with phone, address, rating, reviews and website for each. Here's the list, how it broke down by town, and what to clean up before you use it.

One way to use Local Lead Finder. Local Lead Finder is a $10 Google Sheets template I built that turns any Google Maps search into a lead list: every business, with phone, website, rating and reviews. This post is one use case for it: building a local business list (every coffee shop in Boise). I’m not someone selling to coffee shops; this is the playbook I’d follow if I were, run for real with the template. Other ways to use it are listed at the end, or see all 18 lead generation ideas.

If you sell anything to local businesses, whether it’s web design, coffee beans or cleaning, you need a local business list before you can do anything else. Search for one and page 1 is directories: state “shop local” pages, a chamber of commerce members list, a city tourism board’s listings, and an agency’s roundup of 134 directories to list your own business in. Those are made for people browsing, and they only show the businesses that joined or signed up. None of them hands you a spreadsheet you can sort and call down.

So here’s what I’d do instead. I ran it for real in Boise with Local Lead Finder, a $10 Google Sheet I built that pulls every business on Google Maps into a spreadsheet: name, phone, address, rating, reviews and website. One search gave me 142 coffee shops. Below is the list, how it breaks down by town, why one Google search stops at 20, and what to clean up before you use it.

TL;DR

  • One “coffee shop” search across 42 Boise areas gave me 142 coffee shops, each with phone, address, rating, reviews and website.
  • One Google search stops at 20 results, so the sheet searches every neighborhood; 30 of the 42 areas added new shops.
  • Clean it before you use it: the Basque Block area added 11 rows, and several aren’t coffee shops at all.

Who this is for

  • Web designer: you get every local business in a category in one sheet, with a website column that shows who has none.
  • Local SEO or marketing freelancer: the rating and review columns show which businesses might want help before you reach out.
  • Coffee roaster or wholesale supplier: if you sell to coffee shops, this is the list of every shop to pitch, sorted by town.
  • Someone opening a coffee shop: it’s your competition, with ratings and review counts for every shop in the area.
  • B2B sales rep with a local territory: you get one list per business type, with phone numbers, instead of building it by hand from Google Maps.

Before you start

Don’t have a Places API key yet? How to get one free. Haven’t set up the sheet? Setup takes 5 minutes.

From Google Maps to Google Sheets: the setup

Region: Boise, Idaho. Find Areas pulled 42 areas from OpenStreetMap: Boise, Meridian, Eagle, Garden City and Kuna, plus Boise neighborhoods like the North End, Depot Bench and the Basque Block.

Then Find Leads > Search in All AREAS, and the keyword:

The Search in all AREAS box with "coffee shop" typed in

Before it runs, the sheet tells you how many Google requests it’s about to make:

Start this search? "coffee shop" across 42 areas, up to 42 Google Places requests and about 840 businesses

42 areas, one request each. Up to 20 results per area, so up to 840 rows before duplicates come out.

The list of coffee shops

The coffee shop results: name, phone, address, rating, number of reviews and website

142 coffee shops. Every row has the name, phone, full address, Google rating, number of reviews, website, a Google Maps link and a WhatsApp link. (I hid the Place ID, Maps link and WhatsApp columns for the screenshot.)

That’s the list. If you sell to coffee shops, it’s your list of local business leads. If you’re opening one, it’s your competition.

How it breaks down

I added a tab with a few formulas to see what’s in it.

Summary: 142 places, 42 areas, 30 areas added a new place, 21 no phone, 15 no website, 4.59 average rating, 170 median reviews. By town: Boise 88, Meridian 19, Eagle 15, Garden City 13, Kuna 6, Riggins 1

  • 88 of the 142 are in Boise itself. Meridian has 19, Eagle 15, Garden City 13, Kuna 6.
  • The average rating is 4.59 and the median shop has 170 reviews. Boise likes its coffee shops.
  • 21 have no phone number on Google and 15 have no website. If you’re planning to call down the list, those 21 need a walk-in.

“They exist in every town, ready to be taken over and grown. Just ask the owner.” (Codie Sanchez, How Small Business Can Transform Your Wealth)

Every town in that table has coffee shops, and for 121 of the 142 the list already has a phone number to ask with.

The town column comes from the address:

=QUERY({ARRAYFORMULA(REGEXEXTRACT('coffee shop (AREAS)'!C2:C143,"([^,]+), [A-Z]{2} \d{5}"))},"select Col1, count(Col1) group by Col1 order by count(Col1) desc")

Chains barely show up

I counted a few names with COUNTIF and a wildcard, like =COUNTIF('coffee shop (AREAS)'!A2:A,"*Dutch Bros*"):

  • Dutch Bros: 5
  • Black Rock: 5
  • Form & Function: 4
  • Push & Pour: 3
  • Starbucks: 1

One Starbucks in the whole Boise area is obviously not true. Google’s “coffee shop in [area]” results lean toward independent shops here, and I don’t know why. If you need every location of a chain, search the chain’s name as its own keyword.

Which areas actually added shops

This is the part I didn’t expect. The sheet searches each area separately, then removes duplicates. So I counted how many shops each area added that no earlier area had already found:

New places added by each area: Boise 20, Meridian 19, Eagle 17, Garden City 13, Basque Block 11, then a long tail of 6s, 3s, 2s and 1s

=QUERY('coffee shop (AREAS)'!A1:J143,"select J, count(A) where A is not null group by J order by count(A) desc",1)

30 of the 42 areas added at least one new shop. The other 12 only found shops that were already on the list.

The “Boise” search on its own added 20, which is exactly one page of Google results. That’s the ceiling for one search. Meridian (19) and Eagle (17) came close to it too. This is why the sheet searches every neighborhood instead of just “coffee shop in Boise”: one search stops at 20, and the neighborhoods are where the other 122 came from.

“To choose quality you need quantity. You still need to cast a wide net.” (Nick Huber, The golden rule of real estate and small business)

42 areas is the wide net. The rating and review columns are how you pick from it.

Clean your local business list before you use it

Searching by neighborhood name has one side effect: some neighborhood names are also the names of places.

  • Basque Block added 11 rows. Some are coffee shops downtown (Neckar Coffee, Form & Function, Caffé D’arte). Others are the Basque Market, a chorizo shop, the Basque Center, Bar Gernika, and the Basque Block itself.
  • Veterans Park found Veterans Memorial Park.
  • Two Rivers / Banbury found Two Rivers Coffee Roasters, which is in Riggins. That’s the one Riggins row in the town table, and it’s nowhere near Boise.

None of that is hard to spot. Sort by the Area column, look at the few areas with odd names, and delete what doesn’t belong.

A few notes if you try this

  • 42 areas is 42 Places API requests on your own key. Google gives you a free monthly amount; the API key post covers it.
  • If a big area hits 20 results (like Boise did), set “Results pages per area” to 2 or 3 in SETTINGS. You get deeper coverage, and you pay for more requests.
  • Untick areas in the AREAS tab you know you don’t need before you search. Fewer areas, fewer requests.
  • Every search makes its own tab, so you can run “cafe” or “espresso” next and compare.

Step by step

  1. Get a free Google Places API key (how) and paste it into SETTINGS (setup).
  2. Run Find Leads > Find Areas with your region. Boise gave me 42 areas in the AREAS tab.
  3. Untick any areas you don’t need.
  4. Run Find Leads > Search in All AREAS and type your keyword, like “coffee shop”.
  5. Check the request count in the “Start this search?” box, then start it. The first run asks you to authorize the script.
  6. Open the new tab and sort by the Area column.
  7. Delete rows from odd area names that aren’t what you searched for.
  8. If a big area hit 20 results, raise “Results pages per area” in SETTINGS and search again.

Common pitfalls

  • Searching only your city’s name: “coffee shop in Boise” stopped at 20, one page of Google results. The neighborhoods are where the other 122 came from.
  • Trusting neighborhood names: some are also place names. Basque Block added 11 rows, including the Basque Market, a chorizo shop and Bar Gernika, so sort by Area and check the odd ones.
  • Keeping a result that isn’t in your area: Two Rivers / Banbury found Two Rivers Coffee Roasters in Riggins, about 150 miles from Boise. Check the town column.
  • Expecting chains to show up: the list had one Starbucks for the whole Boise area. If you need every location of a chain, search the chain’s name as its own keyword.
  • Planning to call everyone: 21 of the 142 have no phone number on Google. Those need a walk-in.
  • Leaving a big area at 20 results: if an area hits 20, raise “Results pages per area” in SETTINGS to 2 or 3. You get deeper coverage and pay for more requests.
  • Forgetting to mark Outreached: mark a row with Find Leads > 3. Outreached so it stays green in every future search and you don’t call the same shop twice.

Learn the Google Sheets formulas in this post

Better Sheets has hundreds more tutorials like these. If you want to get better at Google Sheets, join Better Sheets.

Other ways to use Local Lead Finder

All 18, grouped by who they’re for: Lead generation ideas: 18 local businesses to sell to.

FAQ

How do I get a list of coffee shops in my city?

Put your city in Find Areas, then search “coffee shop” in all areas. For Boise that was 42 areas and 142 shops. Searching each neighborhood matters, because a single “coffee shop in Boise” search stops at 20.

Can I get Google Maps results into Google Sheets?

Yes. Local Lead Finder writes each result as a row: name, phone, address, rating, number of reviews, Place ID, Google Maps link, WhatsApp link, website, and the area searched. Every search gets its own tab.

Is this a good way to find local business leads?

If your customers are a type of local business, yes. Mark a row as contacted with Find Leads > 3. Outreached: it turns green, copies to the OUTREACH tab, and stays green in every future search, so you don’t call the same shop twice.

Is Local Lead Finder a scraper?

No. It uses Google’s official Places API with your own key.

What does it cost?

The sheet is $10, and free for Better Sheets lifetime members. Searches run on your own Places API key, and Google gives up to 1,000 searches a month free. Each area is one request per results page, so this search was 42 requests, and the sheet shows the most a search could cost before it runs.

Why does one search stop at 20 results?

One Google Places request returns one page of up to 20 results. The “Boise” search on its own added exactly 20, so the sheet searches every area separately and removes duplicates, which is how it got to 142.

How is this different from a local business directory?

A directory shows the businesses that joined it. This pulls the businesses Google Maps has for your keyword, area by area, into rows you can sort, count and call down.

Get the sheet

Local Lead Finder is $10, and free for Better Sheets lifetime members. Pick a region, type a keyword, and you get the list.

Get Local Lead Finder

Ads keep the free stuff free. Members browse ad-free — log in or see pricing.
Big Year 2027 calendar: the whole year on one Google Sheet

Free 2027 calendar.Plan all of 2027 on one Google Sheet, free.

Copy it to your Google Drive.

Get it free