How to Pick (or Improvise) the Right Markup for Your Local Business

Like my post? Please share!

This one’s going to take a little ramp-up.  Hang with me.

What’s Schema? is a type of markup for your site that Google, Bing, and Yahoo promote.

The idea is it helps you tell search engines exactly what a specific piece of content on your site is.  For example, you’d use different Schema if you want to announce, “Here’s my business’s name, address, and phone number,” or “Here’s a customer testimonial, or “Look – a video.”

Some SEOs say Schema in general makes a big difference for your rankings.  I’m not one of them; I suspect it can help a little.  So let’s assume it helps a little.

How do you use it?

What is Schema’s role on your site, if your main goal is to get visible in Google Places and beyond?

For me, its main use is to highlight your basic business info – your “NAP” (name, address, phone number), which should be on every page of your site.

In some cases I also use it to mark up testimonials.  (Here’s a good post on that.)

But for now let’s just talk about using Schema on your all-important NAP info.  It usually looks like this in your code:

<div itemscope itemtype=””>
<span itemprop=”name”>Local Visibility System, LLC</span>
<div itemprop=”address” itemscope itemtype=””>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
<span itemprop=”telephone”>(508) 308-4040</span>

And as you may know, you can use a free Schema generator to create a blob of Schema for your business – like or Raven Tools’ generator.  (In fact, I suggest you use a tool to do it.)

The problem: vague “itemtype”

Notice that first line.  In your blob of Schema, it probably reads:

<div itemscope itemtype=”“>

“Local Business” is vague.  All that tells Google & co. is that you’re not Amazon or Nike.

You should not settle for that lame “LocalBusiness” itemtype in your Schema name / address / phone blob: Either there’s an itemtype (AKA Schema) that’s specific to your business, or you can improvise one (more on this in a minute).

First, try to find a Schema that describes your business.  For example, or

That might be easy if you used to generate your NAP blob.  There, you may have seen some common types of businesses:


If one of those categories describes your business accurately, no need to read on.  If that’s the case, go to MicrodataGenerator, select the specific Schema that describes your business (pictured above), generate your NAP blob, put it on your site, and pour yourself a cold one.

Find the right itemtype / Schema here

You’re probably 90% of the way to the perfect Schema NAP blob.  Again, the only blemish is that first line – with “LocalBusiness” in it:

<div itemscope itemtype=”“>

All we’re trying to do is figure out what to put in that line instead of “LocalBusiness.”  We’re literally looking for one word.  Once we find it, you can make the swap and then stick that whole NAP block on every page of your site.

Finding the right itemtype was tricky – until now.

That’s why first I scraped Moz Local’s huge list of local-business categories.  (You’ll see these under “Category Research” if you’re logged into your free or paid Moz account.)

Then I cleaned up the list.  There was a lot of junk and repetition.  I cut it down to the realistic categories – the ones that might conceivably describe your business.

Then I asked structured-data markup expert David Deering for help.  He’s a Level 10 contributor at the Google Webmaster Forum, where he answers markup questions every day.  He knows Schema like I know Judas Priest songs.

David looked at The List and found the right Schema for each category.

The result?  You can open up this spreadsheet (on Google Drive) and scroll through it to find your type of business and the corresponding Schema / itemtype.

Now look in the right-hand column and grab the single word that comes after the part.  That’s what you’ll want to replace “LocalBusiness” with in your Schema blob.

Let’s say you were doing this for my business.  And let’s say I retired from the local-search biz and opened my very own beauty parlor.

Where I used to have “LocalBusiness” in that very first line, I’d put “HealthAndBeautyBusiness” instead.

<div itemscope itemtype=”“>
<span itemprop=”name”>Face By Phil</span>
<div itemprop=”address” itemscope itemtype=””>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
<span itemprop=”telephone”>(508) 308-4040</span>

Fix that one line of code, and then put that whole blob of code (like the above) on every page of your site.  You’re done here.

But what if you still don’t find an accurate Schema?

That’s what I asked David after he sent me The List.  What if the geeks at left your type of businesses out in the cold?

Can you still use Schema to “tell” Google & co. exactly what kind of business you’ve got?

Or what if you don’t think your type of Schema is specific enough (like if you’re a pediatric dentist and don’t want to settle for the broad “Dentist” Schema)?

You’re in luck.  And the workaround should take you less than 5 minutes, if you carefully read this bit of explanation from David

(I put the extra-important parts in italics.)

Use an additional ontology called Productontology (  This is great to use to specify products and even services, but it can also be used to help extend other schemas to get more specific.

In simple terms, the process involves finding the matching entity in Wikipedia and then creating a URI with Productontology.  So let’s take for example a deli.  There is no exact schema type for a deli.  So we have to use  But since that’s not very specific, we should pull in the use of Productontology.

So first, we go to Wikipedia and find the page for Deli:

Now we have to turn it into a Productontology URI.  A Productontology URI begins with “”.  We take the last part of the Wiki URL,, and add it to the Productontology URI.

So the full Productontology URI for a deli becomes

Next, we have to add it to the markup.  In order to do that, we have to use the “additionalType” property.  So, the markup for a deli would look something like this:

<div itemscope itemtype=“”>
<link itemprop=”additionalType” href=“”
<span itemprop=”name”>Name of Deli</span>

<div itemprop=”address” itemscope itemtype=“”>
<span itemprop=”streetAddress”>100 Main St.</span>
<span itemprop=”addressLocality”>New York</span>,
<span itemprop=”addressRegion”>NY</span>
<span itemprop=”postalCode”>12345</span>
<span itemprop=”telephone”>(555) 123-4567</span>

Of course, more properties could be added to the above markup, but it’s just a rough example of how the “additionalType” property along with a Productontology URI can be used to help extend schemas and specify schema business types much better.


So…remember a minute ago how if you found your type of business in the big spreadsheet, you just had to tweak that 1st line of code?  Well, if you didn’t find your type of business in the spreadsheet, what you’ll have to do is tweak that one line plus add an additional line to your Schema NAP blob.

Example time.  Let’s revisit my “Face By Phil” example.  (Don’t worry – it’s still fictional.)  Let’s say I didn’t run just any old beauty parlor, but specialized in laser hair removal.  I’d want Google to know that, so I’d want my Schema to make that point clear.  Here’s what my NAP code would look like:

<div itemscope itemtype=”“>
<link itemprop=”additionalType” href=”” />
<span itemprop=”name”>Face By Phil</span>
<div itemprop=”address” itemscope itemtype=””>
<span itemprop=”streetAddress”>86 Richards Ave</span>
<span itemprop=”addressLocality”>North Attleboro</span>,
<span itemprop=”addressRegion”>MA</span>
<span itemprop=”postalCode”>02760</span>
<span itemprop=”telephone”>(508) 308-4040</span>

As you can see, you’re only customizing the parts in green – although it would be smart to change both URLs completely, so you don’t make any typos.

Examples of Schema + Productontology

Here are some examples of the info you’d use to customize those two lines:


Use in 1st line:

Use in 2nd line:

Fertility clinic:

Use in 1st line:

Use in 2nd line:

Funeral home:

Use in 1st line:

Use in 2nd line:

Graphic designer:

Use in 1st line:

Use in 2nd line:

Home inspector:

Use in 1st line:

Use in 2nd line:


Use in 1st line:

Use in 2nd line:

Landscape architect:

Use in 1st line:

Use in 2nd line:

Laser hair removal service:

Use in 1st line:

Use in 2nd line:


Use in 1st line:

Use in 2nd line:

Music school:

Use in 1st line:

Use in 2nd line:

Pediatric dentist:

Use in 1st line:

Use in 2nd line:

Personal Trainer:

Use in 1st line:

Use in 2nd line:


Use in 1st line:

Use in 2nd line:


Use in 1st line:

Use in 2nd line:

Wedding photographer:

Use in 1st line:

Use in 2nd line:

Got the perfect Schema NAP for your site yet?  If you’re still stumped, feel free to leave a comment.

Or if you’d rather let someone else mess with it, contact David.  He offers all kinds of markup services, and has worked with small / local sites as well as with national brands.  This post wouldn’t have been possible without his know-how.  Oh, and follow him on Google+.

(By the way, here’s the spreadsheet again.)

This is the rare post where it takes longer to explain the step than to do the step.  But getting the right Schema should be a quick one-time deal for your business, and it may give you that extra little edge in the local results.


  1. Thanks for the new post! I understand have to “generate your NAP blob,” but I don’t know where exactly “put it on my site.” Is there some sort of universal folder in WP, I can paste this into?

    • I have mine in my footer so that it shows up on every page. If there is a better place to put it I would love to know. Didn’t know I could improve on the LocalBusiness thing so this post is super awesome thanks Phil.

  2. Very helpful details on the Schema NAP! Were is it applied on each page?

  3. Great detailed post on local Schema markup! Really love how how you explain how to get very, specific local business information in there.

  4. Hey Phil,

    I wasn’t aware of I was able to add a bit more granularity to an existing Schema markup in a highly competitive arena. It may provide that tiny edge we need 😉

    Thanks for the heads-up and another informative post!


  5. Ok, I found a description for my business on Moz that I like, now how would I enter the data. I’m using WordPress site. Doesn’t it appear (publicly) on the page where you add it?

  6. Great post Phil. You Sir are a local search artist and a gentleman. =^)

    I knew there was a way to do this – it basically hints all around it on the pages but the lack of instruction on “how” there is (typically) completely lacking.

    This is awesome – Thank you!

  7. Great post Phil.

    Do you have any suggestions for a particular WP plugin? Everytime plugin I have used has put the schema in a box on the page. I want it hidden in the source code. Would that be an addition the htaccess file or editor or something and going in through FTP?

    A plugin would be better.

    Thanks and really great article!

  8. Have I mentioned before that I love you Mr Rozek x This is brilliant!

  9. I tried doing this, but got an error message from the Google Rich Snippet Tool:

    name: Ozols Law Firm
    streetaddress: 8880 Rio San Diego Dr #22
    addresslocality: San Diego
    addressregion: CA
    postalcode: 92108
    telephone: (619) 288 – 8357
    Error: Page contains property “streetaddress” which is not part of the schema.
    Error: Page contains property “addresslocality” which is not part of the schema.
    Error: Page contains property “addressregion” which is not part of the schema.
    Error: Page contains property “postalcode” which is not part of the schema.

    • avatar Gene Maryushenko says

      It looks to be working correctly on their website?

    • Hi Mariano. Without the benefit of seeing your markup, it looks like the problem is that you have not declared the PostalAddress itemtype. You see, you can’t simply use the address properties for a local business or organization; you must first declare a new PostalAddress itemtype. So it would look something like this:

      Ozols Law Firm

      8880 Rio San Diego Dr. #22
      San Diego,

      (619) 288-8357

      And, of course, you could add other properties and types to this as well. You just need to be sure that all of the properties are properly nested within the appropriate schema types.


  10. avatar Gene Maryushenko says

    Very cool post Phil! Does it matter if its or ? I noticed you used /doc/ in your “Face by Phil” example.

  11. Hot uusable info for sure Phil. I’m assuming we paste code between header and footer after finding correct Schema?

  12. Thanks Phil 🙂
    How to best handle a professional service where the professional focusses on more then one area?
    Focus on just the ‘main’ aspect of the profession? Or different markup for each professional subset ‘section’ of a site?
    Main aspect: Lawyer
    Subsets within the main aspect:
    —> DUI law
    —> Criminal law
    —> Family law
    Landing pages/sections on site about these professional subsets.
    I’ve had varied responses to this query?
    Thanks 🙂

  13. Great post Phil!

    Do you know what inspired the use of Productontology vs using the built in sameAs attribute to link to the wikipedia page of the service?

    • Excellent question, Dan. I’m stumped. I would think SameAs would do the trick. But once again, I’m sure David has a better answer.

    • Hi Dan. Well, the “sameAs” property is very similar to but not quite the same as the “additionalType” property. The definition of the sameAs property is: “URL of a reference Web page that unambiguously indicates the item’s identity. E.g. the URL of the item’s Wikipedia page, Freebase page, or official website.” So, for example, you can use the sameAs property to say that “this business is the same business that’s on this Google+ page, or this Facebook page, or this Freebase page”. But for the sake of getting more specific with a schema type, the “additionalType” property is the most appropriate property to use.

      • Thanks David! That was really helpful and allowed me to make a great recommendation to a client. Seems like when taken in that context the combination of sameAs and Productontology allows a more robust use of schema for businesses that don’t keep all the traditional data on their page.

        • Sounds great, Dan. Just keep in mind that when using the additionalType property, you would typically use an external vocabulary, like Productontology. But when using the sameAs property, you would use a regular URL of a reference page.

  14. avatar Ken Mabry says

    Thanks Phil… fantastic post! I’ve been following you blog for quite some time now.
    This post is much appreciated. It’s tough to find plain-english advice on how to use this stuff.
    After reading through the post, I was curious to know if you have any recommendations on how to use markup to define business service areas?

    • Great question, Ken. I’d probably refer to this:

    • As Phil mentioned, using would be a good way to go, Ken. But it gets a little tricky, since you can’t just jump directly from LocalBusiness to AdministrativeArea. In a nutshell, you would have to declare things in this format: LocalBusiness >> makesOffer >> Offer >> itemOffered >> Service >> serviceArea >> AdministrativeArea… and then you’d have to use either the “name” or “geo” property to specify the exact area that the service is being offered in. There’s actually more to it than that, but that’s the basic structure of how it would be done.

      I hope that helps.


  15. This is awesome. Thanks for sharing Phil!

  16. I like the intro of your post stating the reality of the importance of schema. Most posts seem to start with the significance of their posts to solve the problem of local SEO. Having said this, great post. I would start with templates and edit the categories. Now this adds another level of focus. I also have a feeling that this will become more and more important. Thanks Phil.

  17. Hi, great post. I didn’t know
    I use very ofter schema markup on my web pages. To apply address information to Organization or LocalBusiness data i use this html/schema markup

    Via XI maggio 43,91025 – Marsala (Sicilia)

    It’s semantically correct this solution? Note that i use address tag and you in yor post use div


  18. Putting a single NAP “blog” on every page not necessarily a good idea if there’s one website for multiple business locations. This has created some problems for us in the past as Google seemed to give priority to the structured data over the other specific meta tags on a specific location page.

    For businesses with multiple locations we only put the A & P of the NAP on the specific location pages (e.g.

    • When you say “Google seemed to give priority to the structured data over the other specific meta tags,” are you referring to what Google displayed in the SERPs?

  19. Great post! Thank you so much for writing this up. We have more than 3 podiatrists working in our practice with 1 location. Should we use MedicalClinic schema or still use Physician schema like listed in the spreadsheet? Thanks SO MUCH in advance.

    • Good question, Alinka. I’d go with MedicalClinic, if you’re marketing the practice as a whole rather than marketing the 3 podiatrists separately.

      • Thank you, Phil. One more question. This really helps!!! I’m trying to mark up as much content as I can, instead of just NAP. I don’t see any documentation anywhere about samples or examples on how to mark up things like MedicalSpecialty and availableService. If you can help or show example, would truly appreciate it. Newbie here. Thanks so much

        • Another good question, Alinka. I could probably stumble my way to an answer, but I think your best bet would be to hire David 🙂

  20. avatar Gabriel Reynaga says

    Great info thanks for sharing. We have been using the Local Business tags for our clients but that will stop today.

  21. avatar Bryan Bledsoe says

    Is it okay to customize some pages with with schema names for the type of services a business offers. For example specialties like graphics/vehicle wraps, window tinting (auto, home and business) and leather interior upgrades or should each page have the same schema name? Thank you

    • Hi Bryan. Well, in a situation like that, you would still use the same schema type on all of the pages for the particular type of business that you are, but you would define your specialties through the use of the Offer schema type. So in other words, your business type wouldn’t change, but the “offer” on your various pages would.


  22. Hi Dave,
    I forgot to ask, do I need to regenerate the code for my existing code or can I just change where it says Local Business to ProfessionalService?

    Here is the existing code that I have in my footer

    PC Medics On Call

    449 Purdue Drive

    Phone: (910) 200-0150

  23. Would it do anything to put this schema in a Youtube video if promoting a local business?
    Or just put the NAP?

  24. This is a really awesome post. I had never heard of the trick before. Do you recommend using Garage_door as the end of the url for a garage door repair business?

    • I probably wouldn’t. You work on garage doors, but your business isn’t a garage door. I’d look for another one.

    • Mark, I agree 100% with Phil–if you can’t find an EXACT match for your business on Wikipedia, then don’t use a Productontology URI. Doing so might do more harm than good. Instead, simply find the schema type that best matches your type of business and go with that.

  25. Hey Phil,

    Nice articles as always. I also enjoyed reading your “Tough Questions for David Deering” post. I noticed your markup does not include either a link to the site or Google maps url.

    I also read your post “10 Guidelines for Putting NAP Info on Your Site for Local SEO,” where #6 says not to put links to your site unless it helps usability, but then I have seen some markups include either or. Even the generators you link to have a space for url to website or map url.

    Is there a reason you do not like to include? If you were to include, which one would be better to use?



    • Thanks, David.

      I usually strip out (or simply don’t add) links in the NAP because they just don’t add anything – for users or for search engines, I suspect. But I can picture them falling into the “over-optimization” pile, given how sensitive Google is to all kinds of links (external and internal).

  26. Great article Phil! I am interested to know what anyone would recommend for a Real Estate Property Management business. I am more interested in getting traffic from people looking to rent an apartment or house, rather than people interested in signing up for our property management service. So, I can’t decide whether to use or And would it be weird to put Rental or Apartment in the second line? ie: . Or should I stick with . ? Thanks!

  27. avatar Marie Ysais says

    Finally!! I found just what I was looking for and I could actually understand what you were talking about! There are a ton of confusing sites out there that don’t break t down like you do! Thanks Phil!

  28. The specialization of the industry in the schema is brilliant. I have always used the generic local business. This has probable been the simplest and easy to understand example of schema I have read thus far. No more schema generators. Thank you so much

  29. I just gotta tell you – THIS ROCKS!

    THANKS for all the geeky info, research and sharing of how to go about this.

    Best, Tim

  30. Great article Phil. I’m going to be interested in seeing how Schem is going to integrate new and emerging businesses that aren’t exactly “Google friendly” (as of 2014) such as cannabis clinics. For now alt. medicine seems to be the reigning category. Hopefully we find out more in 2015. Thanks for the post!

    • Thanks, Zachary. For “emerging” businesses I’d definitely go the Productontology route, if possible.

      • So far so good Phil, I gave the Productontology method a shot with a social media marketing firm I’m helping out, and the Schema seems to be holding up. Will post more if I find out any different. Thanks again for informative the post!

  31. Hey guys,

    Perhaps I did something wrong here, but when I run this additional markup through the structured data testing tool, it’s giving me flack:

    Did I screw something up, or is the structured data testing tool not going to recognize this additional information properly?

    • I don’t think the testing tool recognized it properly. It’s no different from David’s example of a home inspector (who also uses the “ProfessionalService” itemtype) using Productontology. I think you’re OK.

    • Hi Scott. Actually, it’s a simple fix. You need to use /id/ and not /doc/. And I think your particular quotation marks were throwing the tool off, too (certain fonts will do that). But the tag should look something like this:

      I hope that helps.


  32. Just a note about the double quotes. If you copy the example schema from above, and paste into your wordpress website, you may have unrecognized double quotes.

    For Example this line:
    100 Main St.
    Must be changed to this:
    100 Main St.

    You have to look close at the double quotes to see the difference.

    Make sure to test in google webmaster tools to make sure google recognizes what you are telling it.

    Otherwise the schema does you no good.

    Good luck!

  33. Hi Phil
    Great article. Just one question, regarding “itemtype” and “additionalType” properties to declare business type in foreign languages (a local site in portuguese, actually).
    Do I have to declare the business types in english (meaning one from your spreadsheet + the ones picked up from Productontology) or do I use portuguese expressions that define my business?
    By logic, I would bet on the second one, portuguese business category names, as I’m trying to signal a portuguese site ranking in portuguese searchs, but hey, it’s Google…
    What would you do in this case?
    Thank you

    • Great question, Jose. I have the itemtype (and additionaltype, if applicable) in English. That markup isn’t visible unless you check the source code, so it wouldn’t look odd to Portuguese speakers. Only Google will see it. Also, doesn’t support non-English languages yet:

      But in the rest of your site / SEO work, yes, you’ll want to use the Portuguese words.

      • Thank you, Phil.
        Yes, you are absolutely right, “itemtype” only works in english, I get error if I try to use portuguese expressions there. Also, your Productontology ninja trick doesn’t work either. It requires an article in the english Wikipedia (mandatory). I tried a work around, creating a translate page on Wk explaining the portuguese expression I want to use, but it was deleted in a few hours and Productontology gives now an empty result. So my friend, I’ll have to live with the good old “LocalBusiness” here… and pray hopefully for give support to foreign languages on their markup.
        Nevertheless, I manage to build a proper and complete markup, under LocalBusiness, and included the social links with “sameAs” property, as explained by David (thank you, David!) on that article in Whitespark. All working well running smoothly.
        Again, thank you very much, you article was a mind opener. Hats off, sir! 😉

        • Sure thing, Jose.

          FYI, you don’t have to use “LocalBusiness”: you can pick a more-specific “itemtype.” Just has to be in English, for the moment.

          • Thank you, Phil.
            Now I’m working a small country inn, sort of a rural hotel – also in portuguese.
            Do you think I can use itemtype “LodgingBusiness” (broader) and then “additionalType” Hotel? Like this:

            ( The Google Testing Tool returns no errors on that )
            Or do I get better results going for “Hotel” straight away in the itemtype tag?

          • Go for “Hotel” in the itemtype.

  34. Thank you, Phil.
    Can you please give an example, how can it be implemented by the JSON-LD markup?

    • Yeah, I’m stuck on JSON-LD implementation too. If I add
      “additionalType” : “”,
      it throws an error.

  35. avatar Corey Barnett says

    I’m getting this error
    The property ”additionalType” is not recognized by Google for an object of type ProfessionalService.

    I also tried information_technology_consulting and couldn’t get it to work either.

  36. On the spreadsheet some of the items say “See alternate instructions”. I am wondering where the alternate instructions are located. I am trying to create markup for a professional cleaning service company. Any ideas would be greatly appreciated.

  37. So for a patent attorney, would it be appropriate to use…


    And if so, could that also go on an intellectual property practice group page for a firm?

    Great, great, great post!

    • Hey Rich,

      Yes, that’s exactly right. I’d only add that it’s fine to put that Schema markup on every page of the site. Unless, of course, it’s a big firm that’s got only one patent attorney, and you’re just talking about how best to mark up his page.

      • Thanks, Phil! Yes, it’s a big firm. 90+ attorneys, over 30 practice groups and 5 locations. It will be interesting to see how much schema markup can help. They definitely have some ranking issues and cleaning up the basics hasn’t moved the needle much.

        • Gotcha. FWIW, I don’t think cleaning up the basics + adding Schema will do much. Your clients’ success will probably come down to links, reviews, and a “sticky” site.

          • They have a good and deep site, with lots of links. They don’t want to do reviews, so I’m fighting that battle with them. I am also going to do a link analysis to see if they have any toxic links.

            I figure schema is worth trying on a few different levels (home page, location pages, and a few practice groups and individual attorneys) to see if it does impact anything.

  38. avatar Lynda S. says

    Can you add multiple Additional Types if it applies to the Business?

  39. Hi,
    Can we use a category page for productontology ?
    For example
    It’s the best fit I could find 🙁

    • Johann, is Skiing Equipment its own Wikipedia page? And are you using it for the business itself or for your products?

      • Hi David,
        Yes the category page exists on wikipedia ( but there is no page… That’s why I asked.

        It would be used for the business itself (on the adress page), not for products.

        • I see. Well, it would be ok to use that for perhaps the products that the business sells, but you shouldn’t use it for the business. The business might SELL skiing equipment, but the business is not A skiing equipment. When using Productontology for a business type, the URI must be an exact match for what type of business it is, not what it does or sells.

          I hope that makes sense and that I was clear enough in explaining it.


  40. How many additional lines can you use when doing this. Would it be bad to put multiple additional types if there is multiples services?

    • See this:

      Still, I wouldn’t use ProductOntology to mark up all your services. Try to find an itemtype that describes your business, and if you can’t then consider specifying one ProductOntology line.

      • Hi Phil,
        Thanks for this great post. I read every comment hoping to find the answer to what should be a common question.
        A plumber who has 2 additional types-heating and AC. Both are covered by which eliminates the need for multiple additional types. Since there is a schema category for HVAC should I list the additional type as
        link itemprop=”additionalType”schema URL or should I use the productontology URL?
        1.5 years and still going.
        Obviously a timeless piece. Thanks again Phil!

        • Hi Chris. Well, since has an HVACBusiness type, there’s no need for you to use the additionalType property. The schema type has you nicely covered already. (You would only use the additionalType property IF did not have an appropriate type for your business.)

          • Hi David,
            Thanks for your reply. To be clear the item type is plumber. Since not all plumbers do HVAC I’d like to make it clear that HVAC is an additional type. So I did add that 1 line using
            Google finds no structured data in the test. I think my problem goes beyond the scope of this post. It’s a WordPress site I inherited that probably has no CSS support for schema. If that’s the case would I be better off trying JSON-LD.
            After reading a whole bunch more articles on this topic I finally posted the question at webmaster central.
            Thanks again David

          • I see. Well if the primary entity/item type is a plumber, then do NOT use additionalType or productontology with any HVAC URIs. What you’re describing is a plumber who also offers HVAC services. That would be clarified on the HVAC service pages as a plumber (main entity) who offers a certain HVAC service. So unfortunately, it’s not as simple as using the additionalType property along with The business is a Plumber. What services they offer is a different story.

            So think of it in this way: When you boil it all down, what type of business is it? And what services do they offer? The two are very different things but they can both be marked up with schema. You just can’t handle describing everything with one simple markup. Attempting to do so would confuse search engines rather than help them better understand.

            I hope that helps to clarify things.


          • Thanks David,
            So a company that does plumbing, heating, and AC has to decide which of the three to markup sitewide. Is that the same as moving and storage? Real estate and insurance?
            I get that you’re doing your best to provide answers that are supported by the current system. I appreciate that. I’d like to get this right so if markup for itemtype plumber is placed via the footer on every page can I place an additional markup with itemtype HVAC on pages related to heating or AC? In those cases I guess I’d place the itemtype HVAC on the page itself while the plumber one is in the footer. Or as I think about it, would it be better to create different sidebars for different pages?
            Much obliged.

          • In a nutshell, a plumber that offers AC and heating services is still a plumber. Same for a real estate agent that offers insurance–the main entity is still a real estate agent. Never should you use additionalType along with in an attempt to describe a plumber that offers AC and heating services. As I mentioned earlier, plumber is the type of business, heating and AC are services that they offer.

            Unfortunately, there are no shortcuts to use in your case. Each page should have unique markups. And as a general rule, never should a website use the same markups on every page. Every webpage is different, so every markup should be different to reflect the page’s content.

          • Thanks for making that crystal clear David. I really appreciate the time you’ve taken here to address my Issue.
            Once I solve the WordPress issues I’m going to take your advice and markup each page as applicable.


  41. A company I am working on currently has its own Wikipedia page. Would it benefit the site to add that company’s wikipedia page to the schema markup using Productontology?

    • Hi Lynda. Well, adding the company’s Wikipedia link to the markup would be a good idea. But you would not add it with the additionalType property and a Productontology link. You would use the “sameAs” property instead.

      • Thank you for the reply! I realized the sameAs property would be better after I posted this and was looking through the docs.

        Thank You again!

  42. Hi, I have i simple question and i hope you can answer me:
    If i have a listing of place like a page with 20 hotels of Milan (like OTA listing), I can/have to implement schema for place, or Schema will be implement only into hotel’s single page ?

    I hope you understand my poor english

  43. This is a great post and very useful information!

    I wanted to clarify a question that I don’t believe has been asked. Does the Schema Markup via JSON-LD placed in the footer supersede or over ride schema for individual pages. For example, I need to markup the map on our location and contact us pages however, do not desire to place “has map” schema in the footer to adhere to the rules – I have not placed a map in the footer. Also, when schema is placed in both the footer and on an individual page I’m receiving this error message “there was an error parsing your JSON-LD.” Perhaps, schema cannot be utilized in both the footer and in an individual page simultaneously?


  44. Hey guys. Excellent post. I’ve read through all of the comments, and I don’t think this has been addressed. Can you use this method for products offered instead of business type? For instance, my company sells and installs stairlifts for people with mobility issues. Could I add a new JSON-LD block for “@type”: “Product” and specify as an additionalType? Thanks!

    • Yep, you sure can, Ben. As long as there exists a Wikipedia page for Stairlift, which I see does, you can use Productontology to specify the type of product that you’re offering. Just be sure to nest everything together into one JSON-LD script.

      • Thank you for the reply. Just a point of clarification – when you say “Just be sure to nest everything together into one JSON-LD script” – do you mean everything product related, or everything including business type and NAP? Right now, I have a JSON-LD block with all of the NAP stuff, and then a second block with @type = Product which specifies the Productontology stairlift. Is this correct, or no?

        • Well, you really should try to keep things within one block. So if you’re marking up a product page, the product type would be the top-level entity, and then you would include your company’s markup as the seller, such as:

          offers > Offer
          seller > Your Company

          I hope that makes sense and helps clarify things for you, Ben.

  45. Great post! I was wondering since the general ProfessionalService type for local businesses has been deprecated, do you still recommend using it?

  46. Hi there,
    I have implemented the structured using JSON-LD on my simple HTML website. I have a quick question though, do you think I should update all of my website pages to contain the markup or would just the homepage be enough?
    As my site is in HTML, I’ll have to go through each page and add the JSON markup. But I only want to do it if you think there is an advantage of doing that.
    Thanks & Regards.

    • Good question, Sharan. I’m a firm believer that every page of a website should have structured data markup on it, but the markup should be unique for every page. So if possible, I’d recommend adding markup to every page of your site, but again, making sure that the markup accurately reflects the unique content that’s on the page.

  47. This is the single best post on schema markup for local SEO ever. Thank you so much!

  48. hello,
    I have two categories coming up under my testing tool for ‘organization’ which is WordPress plugin’s Yoats’s default, AND the new schema I’ve learned, professionalService from this page (thank you). Is it ok that I have two ‘itemtypes’, or should I only have one?

    • Hi Stephen. Well, you really should use the most appropriate schema type for your business and you should have only one block of markup on each page. I work a lot on sites running Yoast’s plugin (it’s the absolute worst when it comes to adding schema markups) and most of the time I have to edit the plugin files themselves to change the itemtype and also get rid of the unwanted extraneous markups that it creates. But unfortunately that’s necessary in order for the markups on the site to be correct. So if you’re able to do that, that’s what I would recommend.

      • Thank you so much David for replying! I do have two more EASY questions.
        1) Yoast automatically includes the ‘website’ type for search engine purposes. Will this effect my photographer type?
        2) Can I have more than ‘photographer’ as my additional type, can I also add ex. wedding photographer and enagagement photographer? or does photographer cover my SEO base? thanks again!

        BTW FOR OTHERS: The solution for those that will find this in the future is here.

        … l/wp-content/plugins/wordpress-seo/frontend/class-json-ld.php
        Find this line
        * Class constructor
        public function __construct() {
        $this->options = WPSEO_Options::get_all();

        add_action( ‘wpseo_head’, array( $this, ‘json_ld’ ), 90 );
        add_action( ‘wpseo_json_ld’, array( $this, ‘website’ ), 10 );
        add_action( ‘wpseo_json_ld’, array( $this, ‘organization_or_person’ ), 20 );

        then delete ….. add_action( ‘wpseo_json_ld’, array( $this, ‘organization_or_person’ ), 20 );

        Just be sure and include your new schema learned on this page in your footer as this will remove what you put into Yoast and also add all the ‘sameAs’ social profiles you added into Yoast-SEO as this won’t show either anymore.

        • Hi Stephen. To answer your questions…

          1. The WebSite schema type should really only be used on your homepage. All other pages should use WebPage (or an extension of that type) or a more specific schema type based on the main entity of the page.

          2. I would recommend sticking with Photographer, then getting more specific on your other pages about what type of photography you do.

          I hope that helps to answer your questions.

  49. This is a GREAT reference article – thanks a ton for pulling it together. I have a question that I do not think is referenced here already.

    I am updating a site for a medical clinic that has a few services (physical therapy, imaging, etc.). I plan to add a pervasive markup to the footer (where I have the office address), and I think I am clear about how to indicate the practice as a medical clinic with ONE overall “medicalSpeciality”, but in addition to that, I want to add details about “availableService”, and have 2 questions:

    1) Is it best practice to list the Service as a “name” or as a “URL” (in other words:


    2) Can I add multiple lines with a bunch of different “availableService” entries (e.g. for 8 of the key services the clinic provides)?

    Thanks a ton for your help. Again, this is an amazing reference.

  50. Why do the examples of the additionalType at the top of the page say doc and the ones below (the doctor examples) say id? I having good luck with your advice but want to add another line. Is it because one of them is available in your spreadsheet (where did those come from anyway?)

    I want to say both LocalBusiness and a subset. In the following example, should I use doc or id?

    • I figured this out. I wanted to put an additional type under LocalBusiness. I wrote the string using the additional type guidance above then validated it. Google doesn’t recognize an additional type under LocalBusiness. You can only add an additional type to one of the categories.

      • Hi Robert. Can you please paste the code that you’re using so that we can take a look?

        • My question is in regard to a schema for a self storage business that is local. I know how to add SelfStorage as my itemtype but asked myself if I could make the itemtype LocalBusiness then add an AdditionalType of SelfStorage. My original question was how to add the AdditionalType and if it needed to say doc or id. The question was moot as when I followed the instructions above and added the wikipedia result to the string with id, it worked.

          My schema:

          Generic Self Storage Company

          123 Easy Street

          (410) 993-0551

          When I validated it, it said:
          The property ”additionalType” is not recognized by Google for an object of type LocalBusiness.

          The validator I used is:

  51. Guys great reference article for schema. Doing a bit of research it looks like the “ProfessionalService” itemtype has been deprecated (source: So I guess we default back to “LocalBusiness” when there is not an appropriate itemtype? You may want to clean up the Google Doc to reduce any confusion on using “ProfessionalService”.

  52. Hi
    I use your Review PDF and its really helped!
    Can you tell me what schema I should be using please?
    Catering seems a bit vague, we mainly target wedding catering but wikki doesn’t seem to have a page for that.

    My site is

    Thanks for your help with this!

    • Hey Ben, check out the spreadsheet.

      • Hi

        Yes I did but for “caterers” it says “See alternate instructions”

        Leaves me wondering what to list myself as.

        Thanks for getting back to me so quickly!

        • You’ll want to follow the instructions for Productontology (the 2nd half of the post) and use and

          • That’s great, thank you so much! I get this error for my telephone number though,

            The property ”telephone” is not recognized by Google for an object of type ProfessionalService.
            Have I done something wrong?

          • I got it the ” was in the wrong font
            verry tricky this coding to a novice!

          • avatar Tyron Jenkins says

            I don’t think professional services is the correct schema property to use. Professional Services implies the business practices a regulated service i.g. Attorneys, Dentist, Locksmith, etc. and eludes to this in their documentation.

            Catering, photography and other service area type businesses should probably use property type “Service” and follow the examples there.

            The ‘service’ property allows you to indicate the type of service, e.g. ‘Catering’ as well as the providers mobility (static or dynamic). And an expected type of ‘Service’ is ‘Provider’ which has an expect type of ‘LocalBusiness’. example below.

            “@context”: “”,
            “@type”: “Service”,
            “serviceType”: “Weekly home cleaning”,
            “provider”: {
            “@type”: “LocalBusiness”,
            “name”: “ACME Home Cleaning”

          • avatar Tyron Jenkins says

            I meant, ‘Provider’ is a property of ‘Service’ and ‘LocalBusiness’ is an expected type of ‘Provider’.

  53. I read through the provided Google Sheet and the comments here and didn’t find an immediate answer to my question. So here it is:
    My company offers online HR software/technology (to get generic, we’re a technology company and we display our NAP on our site). Technically we are a local business, but our reach is international. Looking through the schema Google Sheet, I could not find a Schema that best fits our offering.
    Based on that, I’ve defaulted to this:

    Would you suggest something other than LocalBusiness here? Did I miss a better one?

  54. Hello,
    Since “ProfessionalService” Schema has been depracated, does this mean all photographers need to revert to “LocalBusiness” schema?

  55. Spreadsheet’s missing ‘Architect’ probably a bit of an oversight seeing as you’ve got landscape architect in there alright! All professional services, I’m guessing.

  56. avatar David M. O'Neill says

    Nice article with some great references.

    JSON-LD is becoming the standard format for data, are you planning on a revised article covering those structures?

    Also, and more importantly, many businesses perform their services at a client’s location and that information is vital for being “found” via geo-locations in SERPs. How do you handle a contractor building a house in a city different from his home office?

    • Hi David. Yes, you’re right, JSON-LD is quickly becoming the markup standard, although search engines can still easily extract microdata as well. But you can simply use the same markup structures as above and convert them to the JSON-LD syntax.

      Regarding your question about businesses that provide services outside of the city that their office is located in, the “areaServed” property would be a nice way to mark up those details.

      • David, can you give me an example of where the “areaServed” property would be placed in context and how it would look? For example, I’m trying to markup the contact page for a swimming pool contractor (couldn’t find a productontology this) who builds in-ground pools across Southwest Florida. Cities include Fort Myers, Cape Coral, & Naples. How would I add that into the markup?

        • You could do something such as this, listing each city they target under the areaServed property::

          “@type”: “HomeAndConstructionBusiness”,
          “name”: “Name of Pool Contractor”,
          “areaServed”: [
          “@type”: “City”,
          “name”: “Fort Myers”,
          “sameAs”: “”
          “@type”: “City”,
          “name”: “Cape Coral”,
          “sameAs”: “”

  57. I am a web designer building a site for a Hot Tub store that sells and services hot tubs. II cannot find a Hot Tub business in the google sheet, so I am using as my first line, and as my second line. Is this correct? The business also sells and services Awnings, so could I use a third line >> ?

    • Hi Larry. Unfortunately, it looks like the codes you added to your comment were stripped out, but I think I understand the question. Since a store that sells hot tubs is pretty niche and there is no existing schema type that is an exact match to the business, I’d suggest using simply There is no Wikipedia or Wikidata page for a hot tub store, so you can’t really use the additionalType property in your case for the business’ markup. (By the way, there is a Wikipedia article for Hot Tub. But the store SELLS hot tubs; it isn’t A hot tub–seemingly small but important error many people make.)

      Then on the various hot tub pages, you could mark up the hot tubs as products that the store sells.

      So I hope that helps.


  58. Very insightful article. I am having trouble picking between LocalBusiness and Service. Can the 2 be combined?
    Its essentially a local business that provides a service. The service is “Lice Removal”…. Also an in home service.
    Would you recommend using one or the other?
    Anyway to see what competition is using?
    Any insight is appreciated.

    • Hi Gene. Good question but no, you can’t combine the two. So just try and select the best LocalBusiness subtype in and if an exact match does not exist, then simply use LocalBusiness. Whatever services your business provides would be considered as various types of offers, each marked up separately.

      I hope that helps answer your question.

  59. Grrrr… Hubspot keeps stripping the productontology link out of my schema – I have added it to the footer. Hubspot Support tell me that Moz say schema links need to go in the header. Any clarification, Phil or David?

    • Hi Jo. Well, the markup can be placed in the head, body or footer of the page. The location does not make too much of a difference, really. But I’m not sure why Hubspot would be stripping out only the productontology link. Can you share the URL so that I can take a look?

      • Hey David! It’s on my own site right down at the bottom. I have to add the code into a rich text editor – obviously I need to use the source code option to be able to include the schema code. When I click done, it just strips out the productontology link – I think because it doesn’t have the the spans around it??? It just says link itemprop rather than span itemprop…?

        • It’s possible that it’s stripping out any links that are not visible or hyperlinked. I’m not sure. But just out of curiosity, what’s the productontology link that you’re using?

    • avatar David M. O'Neill says

      Are you using JSON-LD?

      • Not intentionally… I’m not sure what that is :O Is that a question I should ask Hubspot?

        • avatar David M. O'Neill says

          JSON-LD is a XML like format for schema that fits inside tags ergo you should be able to insert it almost anywhere. HubSpot may still strip it out – tough to tell.

        • Yes, JSON-LD is simply another syntax that can be used to add structured data markup to a website as David mentioned. But it would involve basically redoing your entire markup. I think the best option is to figure out why Hubspot is stripping out your link.

          But it’s also very possible that you may not need to use productontology or that you might be using it incorrectly. So that’s why I asked what link you’re using so that we can be sure it’s correct.

          • Ah sorry, David D, I completely misunderstood – that will teach me to try to get my brain to work on a Bank Holiday!

            I would be happy with either of these:

            Thanks also for the explanation David M O’Neill.

          • lol No problem, Jo. Regarding the productontology tag, you really shouldn’t be using either of them for your business’ markup. Those are the services that your business provides. In other words, you *offer* inbound marketing but *your company* is not inbound marketing. See the difference? So I would suggest not using them for your business’ markup but you can use those tags when marking up your inbound marketing and digital marketing *services*.

            I hope I explained things clearly enough.


          • Ha, I remember those rules! So I could use this markup for my business then…?

            And then use the other markups on the actual service pages? Should/Can these be used independently of the regular LocalAddress markup? Is there a template for this?

            Thanks for your patience and clarity in explaining all this, David

          • Hey Jo. Well, a digital marketing engineer is technically a person, not a business or organization. It might seem like a small detail but personally, I wouldn’t use it. But you could use the other productontology tags on the pages that describe your digital marketing and inbound marketing services. So in the markups, your business would be the provider of those services.

  60. hi,
    wanted to ask how you add two or more type of business.
    I mean the business can be in 2 categories like Drug Addiction Treatment Center and Addiction Treatment Center. so how i add both categories?
    next question is what are the tags for this categories of google+
    Drug Addiction Treatment Center
    Addiction Treatment Center
    Alcoholism Treatment Program

  61. This was so awesomely helpful and insightful. Thank you! Really surprised there is no schema for employment recruiter.

  62. Hello,
    We are an insurance broker, what should we use when on our “request a quote” page, is it a product? Service? What should we use exactly to describe the page?

    • Hi Justin. Well it really depends on what type of content is on the page, but if it’s strictly a Request a Quote page, I’d go with actions such as potentialAction > AskAction. But the content on the page itself will ultimately determine what to do in this case.

  63. I’ve been trying to incorporate productontology into my client’s websites. However, I noticed that from the time I first discovered this awesome article about 2-3 weeks ago until now, none of the links that you’ve posted above work anymore. They all produce the following error:
    “404 Error: Class not found in Wikipedia”

    I also notice that almost all of the links that have /id/ in them all re-direct to a /doc/ link. For example:

    /id/Fertility_clinic now redirects to /doc/Fertility_clinic and produces a 404 error message. Can you help me with this? I’m looking for a productontology for a landscape designer. Thank you.

  64. avatar Adam Ford says

    Hi Dave,

    As a few people have remarked, “professionalservice” is DEPRECATED, but a hefty percentage of your spreadsheet is flagged with that. Do you recommend using “service” instead or “localbusiness”, presumably either with Productontology??

    • Hi Adam. Yes, thanks for pointing that out and we’ll see about updating things. In the meantime, you can leave ProfessionalService if you are currently using it as it won’t harm anything. However, please keep in mind that is to be used to mark up the *service* that a business provides, which is not the same thing as the type of business it is. So in other words…

      Schema Business Type = What You ARE
      Schema Service = What You DO

      I hope that helps explain things a little more.

      • avatar Adam Ford says

        Yes, cheers.

        I did have a look at the schema for service and the difference were fairly obvious. actually make the reference between the two in the header of the Professionalsrvice schema in a slightly misleading way.

        I’ve only just discovered this blog recently, but you are my new favourite thing on the entire internet, GREAT content. please keep it up. Although some weirdness when sharing this site on SOME social platforms, which aren’t picking up a preview image?? No idea why that would be, but maybe useful feedback.

        One other question – do you recommend using WordPress plugins for schema markup?
        Any chance you or anyone else might have done a post on pros and cons of that? And any preferences among plugins?

  65. I like to use JSON- LD but the concept is the same. Vey good explanations of markup extensions.

  66. Wow! I’m so excited about this thread. All of the comments and responses are so very clear that I feel like I’ve just taken a schema markups course. Thank you so much for this.

    So, my question is about aggregateRating. I know a static number can be inserted into this field, but my client is a Review company and wants these numbers to be generated dynamically on their clients’ websites. I’m not a programmer which puts me at a major disadvantage, and I’ve done a fair amount of research, but I just can’t find a yea or nay to this issue. Your assistance is very much appreciate!

    I’ll be following you regularly from now on. Thanks!

    • Hi Susan. To answer your question, yes, you can definitely insert dynamically-created content into your schema markup. If you’re not too experienced with coding, using microdata might be easier for you. But you can definitely mark up the dynamic aggregate rating.

      I hope that helps.


  67. I’m not sure if my web developer has added any schema to my site. How would I go about finding out?

    Thank you!

  68. hello again,
    Is the sameAs proprty only used in connection to social media? Or would it also be beneficial to list directory listings and pages within tyour niche? for instance, since I am aphotographer, would it be useful to list my association link and directory listing page? thanks!

  69. Hello, I’m having trouble with
    I’m a marketing agency. So my primary Type is “Professional Service” and I want to add “Marketing” through The Wikipedia page exists, but at
    I get “ERROR (404): No respective entry available cannot provide a class definition fo the requested URI.

    Reason: There is no Wikipedia article for ‘Marketing’.

    If you want to use this word (to be precise: this “lemma”) as a class, you must first create a respective article in the English Wikipedia by clicking on the link given above.

    Here is the direct link to create such a page in Wikipedia:”
    Actually I’m getting the 404 even on URLs that the site Homepage is using as examples.
    Same 404 error message.
    ANY IDEAS why this isn’t working?

  70. Hi.

    I wanted to thank you for a great article. I’m pretty new to markup and your article helped a lot. I have a couple of questions though. I’m trying to add markup for a fairly niche business. it’s a store in NYC that does balloon decorating for events/parties as well as being a florist and a party equipment rental service. Complicated and I couldn’t find anything remotely close in Wikipedia. Should I stick with “Store”? Right now I am using “Store” with “Florist” as an additional type.

    The business does events/delivery in the NYC area but they also ship wholesale products worldwide. Would it be wrong to include “NYC” as the areaServed with a same as link to wikidata? Is there some way to differentiate between their wholesale services and their local retail/delivery?

    Oh, one other quick question about the Google Structured Data Testing Tool. When I try to markup a telephone link directly, it doesn’t seem to be able to see it. (Gives me a warning that the telephone field is recommended.) If I wrap it in a span, it seems to see it fine. Is this some quirk of their validator or a real problem with my markup?

    This doesn’t get seen: (###) ###-####
    While this seems fine: (###) ###-####

    Thanks again for the article and any help.

    • The html and markup that I posted seems to have gotten stripped and added to the post. Hope this helps.

      This doesn’t get seen: “(718) 438-7222”
      This seems ok: “(718) 438-7222″ (Basically the difference is the first one is a regular anchor with a tel link while the second one has the anchor wrapped in a span and the span has the itemprop=”telephone”)

    • Hi James. Good questions. Well, regarding which schema type to use, keep in mind that there is a fundamental difference between what the business IS and what it DOES or OFFERS. So if the business is essentially a store that offers balloon decorating and party rentals, it is still a that “makesOffer” > “Offer” > “Service” > “Balloon Decorating”. I would also suggest removing the additionalType property and just simply going with Again, the flowers are products that the store offers/sells. But if the business is categorized as a florist, then go with

      The delivery service would be a that you could specify as being offered only within a certain area. You wouldn’t necessarily have to specify an area where your products are offered, as it’s assumed they are offered to anyone anywhere unless you define an area.

      And for the phone number, to simplify things you can just do something like this: [meta itemprop=”telephone” content=”+1-###-###-####” /]

      Hope that helps.


      • Thanks David! That does help a lot. I did decide to stick with “Store”. And I see your point about how both the balloons and flowers are products that the store offers as well as services that they offer under event/party decorating.

        It does seem strange that Google (or at least their testing tool) can’t read “tel” links. I tested in out with “mailto” links and it couldn’t read those either. (With both it complained about an unspecified type.) Moving the markup to a meta tag is a good workaround though.

        Thanks again.

  71. Hi guys i have a page that offers septic vault repair and i serve USA only, what i want to do is have an organized schema that tells Search engines esp. google that this page is about a service that i offer and i want the search engine to know that it is my organization that offers it. I chose org since we have multiple branches instead of localbusiness, do you think my code below would work?

    “@context”: “”,
    “@type”: “Service”,
    “serviceType”: “Septic Vault Repair”,
    “provider”: {
    “@type”: “Organization”,
    “url”: “”,
    “name”: “Don Quixote Septic Services”,
    “telephone”: “+1-650-221-3312”
    “areaServed”: {
    “@type”: “Country”,
    “name”: “USA”

    i tested it on google structured data and it seems ok but i wonder if i’m missing something or perhaps im doing it wrong even google doesnt show any errors

    thanks a lot guys

    • You’re on the right track. If you are a local business,, I would recommend using the LocalBusiness schema type or perhaps the HomeAndConstructionBusiness schema type. I would also recommend including all of your location and address info and using the sameAs property with links to your Google+ page and other important social media and citation sources. And on a page such as that, be sure to make the “service” the top-level entity within your markup.

      Hope that helps.

      • @david … Thank you so much for your reply, i applied what you advised. What if I have multiple branches and multiple services offered but all branches offers the same service? I have another question that applies what you told me and see if i can make it right this time but let me explain it first.

        I have this branch page that offers all of our services, this page covers the whole new york city as i have other pages for other cities and it has physical office and a contact number it also has google business verified so obviously it has a map

        We accept cash and cheque payments that is payable to my name, our business is open 24 hours 7 days a week

        and so heres my schema in json format which i already test on google strucured data testing tool and shows no error but i have concerns, please take a look


        “@context”: “”,
        “@type”: “Service”,
        “serviceType”: “Septic Vault And Plumbing Services”,
        “provider”: {
        “@type”: “LocalBusiness”,
        “url”: “”,
        “telephone”: “+1-650-221-3312”,
        “image”: “”,
        “priceRange”: “$100”,
        “paymentAccepted”: “Cash and Cheque payable to Don Quix”,
        “geo”: {
        “@type”: “GeoCoordinates”,
        “latitude”: “40.75”,
        “longitude”: “73.98”
        “hasMap”: “”,
        “openingHours”: “Mo, Tu, We, Th, Fr, Sa, Su 01:00-01:00”,
        “address”: {
        “@type”: “PostalAddress”,
        “addressLocality”: “Mexico Beach”,
        “addressRegion”: “NY”,
        “streetAddress”: “3102 Highway 98”
        “description”: “We provide professional septic vault and plumbing services in new york.”,
        “name”: “Don Quix Plumbing New York Branch”,
        “telephone”: “850-648-4200”
        “areaServed”: {
        “@type”: “City”,
        “name”: “New York”
        “hasOfferCatalog”: {
        “@type”: “OfferCatalog”,
        “name”: “Septic Vault and Plumbing Services”,
        “itemListElement”: [
        “@type”: “Offer”,
        “itemOffered”: {
        “@type”: “Service”,
        “name”: “Septic Vault Repair”,
        “url”: “”
        “@type”: “Offer”,
        “itemOffered”: {
        “@type”: “Service”,
        “name”: “Septic Vault Cleaning”,
        “url”: “”
        “@type”: “Offer”,
        “itemOffered”: {
        “@type”: “Service”,
        “name”: “Plumbing Services”,
        “url”: “”


        but i have some concerns if you dont mind

        1) Its a branch so instead of using organization i used localbusiness, do you think its a good idea?
        2) Under LocalBusiness i entered the page exact url as the LocalBusiness URL, is it acceptable?
        3) Under LocalBusiness i entered the page title with branch as the LocalBusiness name, is it acceptable?
        4) Under LocalBusiness i entered the page description as the LocalBusiness description, is it acceptable?
        5) Under LocalBusiness i entered the branch page contract number as the LocalBusiness telephone, is it acceptable?
        6) Since i dont have specific price and instead of empty i just put the minimum fee that we charge on our customers, is it fine?
        7) I am confused on servicetype vs offercatalog name but i still put the same value as i assume its the same, is it?
        8) Then at hasoffercatalog I entered all the services that we offer as all branches offers the same but i also entered the url, do you think its ok?

        I wonder if its really acceptable to be this far when it comes to schema as we all know that some schema are not supported on googles rich snippets but still i want to be organized.

        Thank you so much for taking time to read this very long question.

        • @Belen: I suggest booking a formal consultation with David. He’s generous in answering comments on this post, but we may be beyond the scope of that. He’s the best there is at Schema implementation, and is worth the investment.

  72. The Product Types Ontology: Class Definition for “Magician” (DEPRECATED, DO NOT USE)
    Placed at but am worried that it is not right.

  73. Hi
    I’m new to schema and hoped someone could shed some light on what category to use for a hotel listing website. I think hotel may be incorrect. My website is comprised of pages for specific towns/cities and details the hotels/other accommodation options available there such as campsites/guest houses etc. Each property details things such as cost/amenities and where available has an affiliate link to websites such as to provide the user with the opportunity to book (that is I do not make bookings for users, I am simply a directory).
    Any help would be appreciated. Thanks

    • Hi Caroline. Sounds like might be the best bet for your pages, and you could use the specific schema types such as Hotel, Campground, etc. for each listing or you could just use the more generic LodgingBusiness for all listings, up to you.

  74. Great article! What about an Appliance Repair business? Did a search on Wikipedia and there is no listing for “Appliance Repai” but there is one for Home Repair. But for an appliance repair business, would this be too general as well?

    • Hi Jennifer. Well, keep in mind that there’s a big difference between the *type* of business it is and what services they *offer*. So appliance repair would be a service that the business offers, or in other words, LocalBusiness (or a more appropriate subtype) > makesOffer > itemOffered > Service > name > Appliance Repair.

      But I’d definitely not recommend using Home Repair as an additionalType since appliance repair and home repair are two very different things.

      Hope that helps.


  75. Great info, we are in the process of creating several us and international locations for our business. This is very useful info. I didn’t see web design ore webdesigner in the list… only “graphic designer” so most likely we will be sticking with “@type”: “LocalBusiness”

  76. Hi ya’ll!
    I’ve been scouring the internet on the proper way to add a suite number using schema and have found 0 authroity on the subject. Is it a whole new address line or is it used on the same line in the schema? In my experience it seems as if all sources and citation should be matching exactly in regards to the format of the address presentation. PLEASE HELP 🙁

  77. Hi, thanks for the great info! Is compatible with JSON-LD? I don’t see examples of it on their site. What is Google’s view point on using productontology? Thanks!

    • Hi Ken. Yes it is. JSON-LD, like microdata, is just another syntax that can be used to implement the vocabulary. So whatever properties are used with microdata can also be used in JSON-LD.

      • Thanks David! Is there other syntax exclusive to productontology that I need to consider? The only one, in my situation that comes to mind is adding this (along with the json-ld markup).

        “additionalType”: “”

        Thanks again!

  78. Is it best to include local business schema on all pages or only Contact page and home page. I don’t want to overuse the wrong schema on every page.

  79. what would the schema be for a towing company? I’ve tried searching the internet and cant find anything.

    Thanks for any help you can give.

  80. I’ve been using a tool to generate schema but was stumped on the productontology as it didnt have that option to do automatically. Thank you..the only slight confusion I have left is where you are using as the url structure on every example except for the one inthat grew block of text with the green text to replace where the url structure is DOC instead of ID?

  81. Hello, Phil and David,
    do you know a way to map Google My Business categories into schemas (type, itemtypes)? Or to extend the schema type with the Productontology-ID.
    I’m working on a directory service and need to automate this process.

    Many thanks for this great article and the work done.


  1. Picking the Right Local Markup for Your Business – Phil Rosek

    Schema is a hot topic ’round these parts and you know how much I love Phil’s posts! So wanted to share this one with the troops.

  2. […] a Jarno van Driel scopro una guida davvero ben fatta dal titolo “How to Pick (or Improvise) the Right Markup for Your Local Business” dove si parla anche di proprietà come “additionalType” e dell’uso di […]

  3. […] How to Pick (or Improvise) the Right Markup for Your Local Business, […]

  4. […] How to Pick (or Improvise) the Right Markup for Your Local Business […]

  5. […] my last post – which was a little technical – I thought it was time for something lower-tech.  […]

  6. […] you might recall, he’s the guy who brought the insights to my recent post on Schema.  In fact, it was his answers in the comments on that post that reminded me how many questions I […]

  7. […] 5. How to Pick (or Improvise) the Right Markup for Your Business […]

  8. […] the “itemtype” line in your markup The itemty-…huh?  I explain that one in another long post.  It’s a little technical, and it won’t explain low rankings, but it might give you a slight […]

Leave a Reply to Ben Horle Cancel reply


This site uses Akismet to reduce spam. Learn how your comment data is processed.