A homeowner has a dead oak in the backyard. Branch came down in last week's storm. They grab their phone and type: tree service near me.
What happens next determines who gets a $1,200 job and who doesn't know it existed.
The three zones of a local search result
Google shows three distinct sections for a "near me" query like this. Each one works differently, rewards different things, and most tree service owners are only competing in one of them — if any.
Zone 1: Ads (top of page). Three paid spots at the top. These are Google Local Services ads or standard search ads. You pay per click or per lead. If you're running ads, you're here. If you're not, you're not. Simple. Expensive. We'll come back to the math later.
Zone 2: The Map Pack (the three businesses with the map). This is where most people look first. Three businesses with their name, reviews, hours, and a phone number right there. Google pulls this from your Google Business Profile. If your GBP is incomplete, miscategorized, or has stale reviews, you're not in these three spots. End of story.
Zone 3: Organic results (the regular links below the map). These are websites that Google thinks are the best answer to the query. If you have a website with a page that specifically targets "tree service in [city]" — title, content, schema, the works — you can rank here without paying a dime. Most tree services don't have these pages, so the positions go to Yelp, Angi, Thumbtack, and the one competitor who actually built a website with real content.
Where most tree services lose
I've audited dozens of local service businesses through our pipeline. Here's what I see consistently for tree services:
GBP category is wrong. Your primary category should be "Tree Service." Not "Landscaper." Not "Arborist." Not "Lawn Care Service." Google uses your primary category to decide which searches you're relevant for. If you're listed as a landscaper, Google shows you for "landscaping near me" and ignores you for "tree service near me." Fixing this is a 30-second change in your GBP dashboard that can shift whether you appear in the Map Pack for your core revenue queries.
One website page trying to rank for everything. You have a homepage that says "We offer tree removal, stump grinding, tree trimming, emergency storm cleanup, and lot clearing." That's nice. Google doesn't care. Google wants a dedicated page for each service. When someone searches "stump grinding [city]," Google is looking for a page whose title is "Stump Grinding in [City]" with 400 words explaining your stump grinding service, your pricing approach, and your service area. If that page doesn't exist, the result goes to Yelp's generic "stump grinding" category page instead.
No city pages. You serve 8 cities but your website mentions them in a footer. Google wants a page per city: "Tree Service in Lakewood," "Tree Service in Strongsville," "Tree Service in Bay Village." Each page should describe the specific services you offer in that city, reference local landmarks or neighborhoods, and include your GBP service area data as schema markup. Without these pages, you're invisible for every "[service] in [city]" query outside your hometown.
Reviews are stale. Google's Map Pack algorithm favors businesses with recent reviews. A tree service with 150 reviews but none in the last 3 months ranks lower than a competitor with 30 reviews and one from last week. The signal Google reads: "this business is still active and customers are still happy." If your review stream has dried up, you're slowly falling out of the Map Pack and you won't notice until the phone stops ringing.
The math on ads vs. organic
Tree service Google Ads clicks cost $15–$40 depending on market and season. Let's say $25 average.
To get one phone call from ads, you need about 8–10 clicks (typical 10–12% call rate from a landing page). That's $200–$250 per lead. If you close 30% of your leads, you're paying $600–$800 per customer acquisition from ads alone.
For a $1,200 tree removal job, that's 50–65% of the revenue going to Google before you've paid your crew.
Now compare: a well-built service page for "tree removal in [your city]" with good schema, real content, and a clear phone number ranks organically for that query. The clicks are free. The page costs maybe $200 to build once and then generates leads for years.
Most tree services we audit are spending $2,000–$4,000/month on ads while leaving dozens of free organic positions unoccupied because they never built the pages for them. That's not a marketing strategy — that's paying Google rent on a building you could own.
What a complete local web presence actually looks like
For a tree service covering 10 cities with 5 core services:
- Homepage optimized for your brand name + primary city
- 5 service pages (tree removal, stump grinding, tree trimming, emergency storm, lot clearing) — each targeting "[service] + [primary city]"
- 10 city pages — each targeting "tree service in [city]" with local content
- 50 cross-pages (optional but powerful) — "stump grinding in Lakewood," "emergency tree removal in Bay Village," etc.
- Google Business Profile with correct primary category, all 10 cities in service area, services listed, recent photos, and a steady review stream
- Schema markup on every page telling Google exactly what service + what city + what business
- 4 blog posts per month answering questions your customers actually ask: "how much does tree removal cost," "do I need a permit to remove a tree in [city]," "signs a tree is dying"
That's not theory. That's what the tree services ranking in all three zones of the search results page are actually doing.
The audit tells you exactly where you stand
Every claim I just made is testable against your specific business right now.
Our free brand audit checks your GBP data, runs your site through PageSpeed, identifies the keywords you should be ranking for, lists the pages you're missing, and scores your AI visibility — all in about two minutes.
You'll see exactly which of the three zones you're competitive in and which ones are sending your leads to someone else.
No signup. No sales call. Just the data.
