September 28, 2026 · Local SEO

How schema markup helps a local contractor show up for “near me” searches

Schema is a short block of code that tells Google exactly what your business is, where it works, and when it is open. Here is what it does, what it does not do, and what a contractor actually needs.

A map pin in orange glass

Schema markup is a block of structured data on a web page that tells search engines, in a format they cannot misread, what the page is about. For a roofer in Greensburg it says: this is a roofing contractor, here is the exact name, phone and address, here are the towns it serves, here are its hours, and here is its Google profile. Google reads that block and stops guessing.

What it actually does for “near me”

Be clear about this, because plenty of people will oversell it. “Near me” results in the map box are driven mostly by your Google Business Profile, by how close you are to the person searching, and by your reviews. Schema does not put you in the map box on its own.

What it does is make your website agree with your profile in a way Google can verify, which increases the trust Google puts in both. It also makes you eligible for richer results below the map, where the FAQ you added shows up as expandable questions under your listing, and your reviews show as stars. For a contractor in a competitive category like HVAC or roofing, that second listing with stars and questions is often the one that gets the click.

The types a contractor should use

Google supports specific business types, and using the specific one matters. HVACBusiness, RoofingContractor, Electrician, Plumber, GeneralContractor and Locksmith all exist. Use the one that matches your primary Google category. A generic LocalBusiness is better than nothing but tells Google less.

Inside that block, the fields that earn their place are the business name, telephone, address (or, for a service area business, the area served), opening hours, the URL, a sameAs link to your Google Business Profile and any other real profile, and the geographic area you cover. That last one should list the actual municipalities: Hempfield Township, Murrysville, North Huntingdon, Latrobe, and so on. Not “Pittsburgh region.”

What it looks like

This goes in the head of the page as JSON-LD. Shortened, for a roofer:

{
  "@context": "https://schema.org",
  "@type": "RoofingContractor",
  "name": "Example Roofing",
  "telephone": "+1-724-555-0100",
  "url": "https://example.com",
  "areaServed": ["Greensburg PA", "Latrobe PA", "Hempfield Township PA"],
  "openingHours": "Mo-Fr 07:00-17:00",
  "sameAs": ["https://maps.app.goo.gl/your-profile"]
}

A real one has a few more fields, and an FAQ block for the questions page, and a separate block for each service if you have service pages. The details matter less than getting the type right and keeping every value identical to what is on your Google profile.

The part people get wrong

Schema is not a place to put keywords. Listing fifty towns you do not serve, or claiming 24 hour opening hours you do not keep, does not help and can get the rich results removed. The block is a statement of fact. Keep it honest and keep it matching the profile.

Also, it has to be maintained. Change the phone number, change the hours, add a service, and the schema has to change with it. On a site built with a page builder and a schema plugin, that usually means it silently drifts out of date. On the sites we build the schema is generated from the same fields the page uses, so it cannot say something different from what a visitor reads.

How to check yours

Paste your home page URL into Google’s Rich Results Test. It will tell you what it found and what is broken. If it finds nothing, you have none. If it finds a LocalBusiness with no address and no area, it is not doing much. Either way, it is a twenty minute job to fix on a site that can be edited, and it is one of the few technical things left that is both cheap and clearly worth doing.

All field notes

Start a project

Tell us about your business.

One sentence is usually enough for us to say whether we can help, roughly what it would cost, and whether you actually need us. We reply within one business day, from a person.

We do not sell, share or add you to a list.

Thanks. That is with us, and you will get a reply from a person within one business day.