There is a roofer near you who is above you in the search results, and as far as you can tell they are not better at roofing. This is the most common complaint in trade marketing, and the answer is almost never the one people expect.
In rough order of likelihood, here is what is actually going on.
1. They are closer to whoever is searching
Distance is one of the three things Google says it ranks local results on, and it is the one nobody can buy their way out of. If their yard is two miles from the person searching and yours is nine, they will usually win that search and you will usually win the ones nearer you.
Before assuming anything else, check properly: search from a phone in the area you care about rather than from your own desk. You may find you already rank well where your customers are and badly where they are not, which is a completely different problem.
2. They have more reviews, and more recent ones
Go and look at their listing. Count the reviews and check the date on the newest one. Then look at yours. Nine times out of ten the gap is right there, and it is the gap that took them two years of asking every customer.
This is the most fixable item on the list and the slowest. Nothing else you do will matter as much over twelve months, and the habit that closes it takes thirty seconds a job.
3. Their profile is finished and yours is not
Open both side by side. You are looking for four things:
- The primary category. Roofing contractor beats Construction company for every roofing search.
- Services listed out, in the words a homeowner would use.