← Blog

How to Get Snow Removal Contracts in Minneapolis: 255 Property Managers and 153 Plazas in One Sheet

If I were going after snow removal contracts in Minneapolis, I wouldn't knock on doors. I'd pull every property management company and shopping center in the metro into one sheet, and start with the people who decide about dozens of lots at once. Here's the list: 255 property managers and 153 plazas.

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: getting snow removal contracts. I’m not a snow removal company; 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.

You already know how to plow. The hard part is getting commercial accounts: the strip malls, HOAs and apartment complexes that pay all winter. Ask on any plowing forum and you’ll hear the same advice: knock on doors, join the BBB, make a Facebook page. Nobody tells you which doors. The other options cost money every month: bid sites that charge a subscription to see government contracts, or lead sellers who charge you for every single lead.

So here’s exactly what I’d do this week if I were starting a snow removal business in Minneapolis. I ran it for real with Local Lead Finder, a $10 Google Sheet I built that pulls every business on Google Maps into a spreadsheet. No lead lists to buy, no pay-per-lead, no scraper. By the end you’ll have 255 property managers and 153 shopping centers to call, the people who actually sign snow removal contracts, and the message I’d send them.

Commercial lots sign before the first real storm, so this is an October job.

TL;DR

  • 87 Minneapolis areas gave me 255 property management companies and 153 real plazas, malls and centers in one sheet.
  • 63 of those 153 plazas have no phone number on Google, so their property manager is who you call.
  • Wait for Find Areas to finish before you search. I started at 87 areas and it grew to 150.

Who this is for

  • Snow plow contractor: you get the people who sign commercial snow removal contracts, not just the lots they manage.
  • Commercial salting and de-icing contractor: plazas with big lots and foot traffic need sidewalks salted by 7am, and this finds who to ask.
  • Lawn care or landscaping company owner: the same property managers you’d pitch for summer work need someone every winter.
  • Property maintenance company owner: HOA management companies on this list run townhomes with driveways, sidewalks and private roads.
  • Someone starting a snow removal business: you get a list of 255 property managers to work through in October instead of knocking on doors.

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.

Start with a blank sheet

This is the AREAS tab before anything runs. Empty.

The empty AREAS tab: Name, Type, Use? and Region headers with no rows

In SETTINGS I typed the region, Minneapolis, Minnesota, then ran Find Leads > Find Areas.

The Find Areas box with Minneapolis, Minnesota as the default region

It filled the AREAS tab with the suburbs and neighborhoods around Minneapolis: Arden Hills, Brooklyn Center, Edina, Fridley, Golden Valley, St. Louis Park, and Minneapolis neighborhoods like Dinkytown, Bryn Mawr and Powderhorn.

The AREAS tab filled with Minneapolis suburbs, all ticked

One thing I got wrong: Find Areas writes the first batch of areas, then keeps working in the background. I started searching when 87 areas were in the tab. A few minutes later it finished and the tab had 150. Everything below is from the 87. If you’re doing this, wait for the “Find Areas, step 4 of 4” message to finish before you search.

Who signs snow removal contracts

Two searches, one after the other.

1. Property management companies. One property manager can run dozens of buildings, apartment complexes, HOAs and office lots. One yes can be a whole route.

The Search in all AREAS box with "property management company" typed in

The sheet tells you what it’s about to spend before it runs:

Start this search? "property management company" across 87 areas, up to 87 Google Places requests

2. Shopping centers. Strip malls and plazas have big lots, lots of foot traffic, and a lot of liability if the sidewalk isn’t salted by 7am.

What I found

I added a tab with a few formulas to count what came back.

Summary: 255 property management companies, 326 shopping center results, 25 are Minneapolis park buildings, 153 named like a plaza, mall or center, 63 of those with no phone, 43 property managers with no website, 87 areas searched

255 property management companies across the Minneapolis area. That’s the main list of property management companies, from the 87 areas I searched.

“You still need to make 500 cold calls to find that one self storage facility.” (Nick Huber, Sweaty Startup)

Snow is the same game. Plenty of managers will already have someone, so you want 255 names, not 20.

Sorted by number of reviews, the biggest ones are at the top:

The 20 most-reviewed property management companies, led by RENOSY by Renters Warehouse with 1,718 reviews

=QUERY('property management company (AREAS)'!A1:J256,"select A, D, E, B, J where A is not null order by E desc limit 20",1)

A few of these are HOA management companies, like Associa Minnesota and Gassen HOA Management. Townhome HOAs have driveways, sidewalks and private roads, and they hire someone every winter. Those are some of the best calls on the list.

43 of the 255 have no website listed on Google. They’re smaller, and you’ll probably get the owner on the phone.

The shopping center list needs cleaning

The “shopping center” search came back with 326 results, but not all of them are shopping centers.

  • 25 are Minneapolis park buildings. A lot of Minneapolis neighborhoods share a name with a park (Audubon Park, Powderhorn, Windom Park, Linden Hills). “Shopping center in Powderhorn” returned Powderhorn Park and the Powderhorn Recreation Center, and every one of them links to minneapolisparks.org. The city plows those. Skip them.
  • Some are single stores, like a T.J. Maxx or an Ace Hardware that happens to be inside a center.

To get the real ones, I kept results whose name sounds like a plaza, mall or center and dropped the park ones:

=SUMPRODUCT(REGEXMATCH('shopping center (AREAS)'!A2:A327,"(?i)center|centre|plaza|mall|square|shoppes|shops|commons|crossing|marketplace|galleria|promenade|court|village")*NOT(REGEXMATCH('shopping center (AREAS)'!I2:I327&'shopping center (AREAS)'!A2:A327,"(?i)minneapolisparks|stlouisparkmn|recreation")))

That leaves 153 plazas, malls and centers.

The plaza list: Arden Plaza, Shannon Square Shoppes, The Quarry Shopping Center, Northtown Mall and more, many with no phone number

63 of those 153 have no phone number on Google. That’s not a dead end; it’s the point. A strip mall doesn’t answer the phone. Its property manager does. Which is why you run both searches.

One company, several lots

Last thing I checked: which websites show up on more than one shopping center.

Websites on 2+ shopping centers: minneapolisparks.org 25, brixmor.com 3, krausanderson.com 2, wellingtonmgt.com 2, and some stores and tourism sites

=QUERY(QUERY({ARRAYFORMULA(IFERROR(REGEXEXTRACT('shopping center (AREAS)'!I2:I327,"https?://(?:www\.)?([^/]+)"),""))},"select Col1, count(Col1) where Col1 <> '' group by Col1"),"select * where Col2 > 1 order by Col2 desc",1)

Most of that table is noise (the park board, Facebook, a couple of chain stores). But brixmor.com shows up on 3 centers, and krausanderson.com and wellingtonmgt.com on 2 each. Those are the companies behind the plazas. One conversation with them could cover several lots.

The message

In SETTINGS there’s a WhatsApp message that gets attached to every row’s link. This is what I’d send:

The WhatsApp message setting: Hi! I plow and salt commercial lots around Minneapolis. Do you have snow removal lined up for this winter? Happy to quote your lot this week.

Hi! I plow and salt commercial lots around Minneapolis. Do you have snow removal lined up for this winter? Happy to quote your lot this week.

Short, says what you do, asks one question. For property managers I’d change “your lot” to “your properties”.

Then work down the list. Every time you message someone, mark them Outreached. They turn green and stay green in every future search, so when you run “church” or “medical office” next week you won’t message the same company twice.

“Rejection is treasure.” (Noah Kagan, The Dollar Challenge)

Some of these will say they already have a guy. Mark them green and move to the next row.

Step by step

If I were doing this for real, here’s the order:

  1. Type your region in SETTINGS, run Find Leads > Find Areas, and wait for “Find Areas, step 4 of 4” to finish. Untick any areas you don’t want.
  2. Run Search in All AREAS for “property management company”, then again for “shopping center”.
  3. Clean the shopping center tab: drop park buildings and single stores, keep names that sound like a plaza, mall or center.
  4. Call or message the HOA managers and the property managers first. Each one is many lots.
  5. For the plazas with a phone number, call them directly. For the 63 without, find the manager on the plaza’s website or the sign out front. Check which websites show up on several centers; that’s the company behind them.
  6. Mark everyone you contact Outreached so you never message them twice.
  7. Add a third search for churches and medical offices. Both have lots that have to be clear on Sunday morning or before the first appointment.
  8. Do it in October. By December everyone already has a guy.

Common pitfalls

  • Searching before Find Areas finishes: it keeps working in the background. Mine grew from 87 areas to 150 after I’d already started, so wait for “Find Areas, step 4 of 4”.
  • Trusting the shopping center results as they come: neighborhoods named after parks pull in park buildings for almost any search in Minneapolis. 25 of mine linked to minneapolisparks.org; filter by website or name.
  • Calling single stores: a T.J. Maxx or an Ace Hardware inside a center doesn’t sign the lot’s snow contract. Keep names that sound like a plaza, mall or center.
  • Treating no phone number as a dead end: 63 of the 153 plazas had none. Find the property manager on the plaza’s website or the sign out front.
  • Pitching every plaza one by one: check which websites show up on several centers first. brixmor.com was on 3, so one conversation could cover several lots.
  • Forgetting to mark Outreached: if you don’t, next week’s “church” or “medical office” search won’t show you who you already messaged.
  • Not watching API spend: each search is one Places API request per area, so 87 areas is 87 requests. Find Areas also used a few Google requests to find towns (27 here).
  • Starting in December: commercial lots sign before the first real storm. By December everyone already has a guy.

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 you get snow removal contracts?

Go to the people who sign them, before the first storm. For commercial lots that’s usually a property manager, an HOA management company or the owner of the shopping center, not someone standing in the lot. Build a list of them, send a short message that says what you do and asks one question, and start in October.

Should I pitch commercial snow removal contracts to the plaza or the property manager?

Both, but the property manager first. In this run 63 of the 153 plazas had no phone number on Google, and a few management companies (brixmor.com, krausanderson.com, wellingtonmgt.com) showed up on more than one center. One yes from a manager can be several lots.

Where can I get a list of property management companies in Minneapolis?

Run “property management company” in Local Lead Finder across the Minneapolis areas. I got 255 from 87 areas, each with name, phone, address, rating, number of reviews, Google Maps link, WhatsApp link and website. Sort by reviews to see the biggest ones first.

Why did my shopping center search return parks?

A lot of Minneapolis neighborhoods share a name with a park, so “shopping center in Powderhorn” returned Powderhorn Park and the Powderhorn Recreation Center. 25 of my 326 results were park buildings, all linking to minneapolisparks.org. Filter them out by website or name before you call anyone.

When should I start pitching snow removal contracts?

October. Commercial lots sign before the first real storm, and by December everyone already has a guy.

How much does a search cost?

Each area is one Google Places request per results page, so 87 areas was 87 requests per search, plus a few for Find Areas (27 here). You use your own Places API (New) key, and Google gives up to 1,000 searches a month free. The sheet shows the most a search could cost before it runs. How to get the key.

Is this a scraper?

No. It uses Google’s official Places API with your own key. The first run asks you to authorize the script in Google, and setup takes about 5 minutes.

Get the sheet

Local Lead Finder is $10, and free for Better Sheets lifetime members.

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