Google Using schema.org for Local Business Information

by Aaron Bradley on December 5, 2015

in Search Engines, Semantic Web, SEO

Google Using schema.org for Local Business Information

Google is now piloting a program that allows local business owners to provide information about their business by using schema.org. By providing with a mix of required, recommended and optional properties with values for the schema.org LocalBusiness class, a business can now provide Google with information about things like the business's name, address, telephone number, physical location and hours of operation.

Google has supported the provision of local business information with schema.org since April 2014, but this is the first time they've published prescribed property specifications for LocalBusiness.

This is also the first time they've explicitly tied the use of such data to the generation of a dynamic feature in the search engine results, namely a local business Knowledge Panel that shows business information and, if applicable, links to a page or app where customers can place an order or make a reservation.

The Local Business Information page on Google Developers notes that the pilot is currently restricted to a set of initial data providers, but that they "hope to soon open up the feature so any provider who implements spec-compliant markup is eligible to participate."

The LocalBusiness properties Google supports are as follows, with required properties in bold, and recommended properties in italics.

Google recommends providing this information using JSON-LD

The specification also calls for the required declaration of a value for @id. @id is a "stable, globally-unique identifier of the specific business location."

@id is not a LocalBusiness property but a JSON-LD reserved key. And although (as Kenichi Suzuki and Grace Massa Langlois have noted) it's not used in the JSON-LD example on Local Business Information page, it is used on the child Place Actions page, where the value provided is a URI.

<script type="application/ld+json">
{
  "@context":"http://schema.org",
  "@type":"Restaurant",
  "@id":"http://davescafe.example.com/",
  "name":"Dave's Cafe",
...
}
</script>

The schema.org data feed

The Place Actions page was originally spotted by Menashe Avramov as a menu link that resulted in a page not found error. The parent Local Business Information page itself sports a tantalizing teaser 404. The specification states that there are two ways a business may provide Google with LocalBusiness data.

How you provide the items to Google varies depending on the number of business locations.

  • If you have a single business location: Embed schema.org markup on your official web site.
  • If you have multiple business locations: Provide a schema.org data feed.

The link to the "schema.org data feed" currently leads to a 404 page.

This is the first mention of a schema.org data feed. While schema.org information can be provided in JSON-LD without that information being visible on a web page, that this link exists to a separate specification page and that a JSON-LD is already recommended suggests that this will introduce a new data format for providing schema.org-declared information, rather than simply providing further JSON-LD specifications.

Local Business Place Actions

As noted above it was the Place Actions page that originally captured the interest of SEOs – even though the parent Local Business Information specification is more broadly applicable, as the use of LocalBusiness properties described there isn't limited to businesses that support reservations or orders.

Indeed, Place Actions requires the business provide the core data described on the Local Business Information page, information that the Place Actions Page refers to as data that "disambiguates the business."

Place Actions allows businesses to provide information that allows "users to directly engage with local businesses by enabling users to place orders, make appointments and complete reservations."

This is facilitated by the use of the potentialAction property applied to the same LocalBuisiness entity described by the properties used for disambiguation, with either an OrderAction or ReserveAction nested under it.

By providing these data, a business may be able to generate "a prominent 'Knowledge Panel' card with details about the searched-for business", with Place Actions appearing in the card as deep links to "provider web landing pages or apps" where the action can be completed."

Example of a Place Action-generated link and other information on on a Google local business Knowledge Panel

It's interesting to note that the data provided not only allows businesses to generate a Panel link that will allow the customer to place an order or make a reservation on a web page, but to perform those same options using an app if one is available.


{ 22 comments… read them below or add one }

1 Soumya Roy December 6, 2015 at 10:46 pm

Absolutely right. Schema structured data is one of the best SEO techniques, local business must implement for their NAP information on website. It helps Google to clearly identify the business’s name, address and phone number which helps in local ranking. We used it on many websites including our own and got very good results. Thanks for sharing this post.

Reply

2 Herc Magnus December 9, 2015 at 7:07 pm

Agree 100%. I’ve seen clients go from Page 2 & 3 to Top 3 just by implementing the Schema in JSON. Now if only they made it easy to do…oh wait! We do that 🙂

Reply

3 Ryan Rodden December 21, 2015 at 7:44 am

Hey guys, I had a quick question about what to use for a certain type of Local Business.

As a web designer or web development firm, what type of markup would you use to identify the business? There doesn’t seem to be a LocalBusiness type for this line of work specifically. I see “ProfessionalService” but that also seems a bit broad.

Any suggestions? Thanks.

Reply

4 Aaron Bradley December 21, 2015 at 9:05 am

Hi Ryan. I’m afraid that ProfessionalService is the closest you’re going to come for declaring a web development business. See also this discussion on Moz (which arrives at the same conclusion).

Reply

5 Ryan Rodden December 22, 2015 at 7:44 am

Many thanks Aaron, that’s what I suspected.

Reply

6 Simon December 27, 2015 at 7:39 pm

Hey Aaron,
Do you not think an ‘additionalType’ coupled with a productontology.org link would work in this case?

ex.

{
“@context”: “http://schema.org”,
“@type”: “MedicalOrganization”,
“name”:”Acme Rehab”,
“paymentAccepted” : “Medicaid/Medicare”,
“address”: {
“@type”: “PostalAddress”,
“addressLocality”: “Newport Beach”,
“addressRegion”: “CA”,
“postalCode”: “92663”,
“streetAddress”: “12 your street”,
“telephone”:”800 212-2112″
}
}

{
“@context”: “http://schema.org”,
“@type”: “Thing”,
“additionalType”: {
“@list”: [

“http://www.productontology.org/id/Mental_health”,
“http://www.productontology.org/id/Drug_rehabilitation”
]
},
“@type”: “PeopleAudience”,
“suggestedMinAge” : “10+”,
“requiredGender” : “Male”
}
}

Reply

7 Aaron Bradley January 4, 2016 at 9:47 am

Thanks for your comment Simon. I won’t comment on the syntax (while it looks okay to me, I’m note conversant enough with @list to know whether this is the best way of making this declaration in JSON-LD). However in general declaring an additionalType by referencing a productontology.org URI is definitely a good method of informing Google about types not covered by the schema.org vocabulary.

Reply

8 George Georgiou December 24, 2015 at 9:26 am

Hello and greetings to all.I already have a my business account in google.With all data inside,like address,opening hours,coordinates and map.Should i put the same data into the script?Is it wrong or not?And something else.When you type google,you see info from wiki.If i want the same for my company,i must make a wiki page and place it in to “sameAs”?Thanks in advance.

Reply

9 Aaron Bradley December 24, 2015 at 9:39 am

Thanks for your comment George.

There’s no problem duplicating (or duplicating and augmenting) information you’ve already provided to Google My Business, as Google will still end up with a better understanding of your business as it pertains to your website. And other data consumers – including search engines like Bing and Yandex – are capable, or will become increasingly capable, of consuming the data you provide.

There’s no particular reason why you need to have a Wikipedia or Wikidata entry for your business, although of course it won’t hurt to have such entries if they’re legitimate.

Reply

10 George Georgiou December 24, 2015 at 9:57 am

Thank you for your very very quickly answer Aaron.I have understand the duplicate issue.The other with google is that i like the text.So if i want some text for my company, i will write this text in the “description” data?Should i keep the character under 150 like the description in meta tag?Is there a limit or length character?

Reply

11 Aaron Bradley December 24, 2015 at 10:18 am

Right now Google provides no guidance on the use of the description property for the LocalBusiness schema (and the schema.org specifications are agnostic about things like character limits). For the sake of consistency I’d use the same textual content for the description property that you use for your meta description.

Reply

12 George Georgiou December 24, 2015 at 10:31 am

Merry christmas and a happy new year,to you Aaron and your family.And of course to all the people.Thanks a lot.

13 George December 25, 2015 at 10:18 pm

Hello Aaron.One last question please.I want to place in the index HTML page a Json ld script with the type:local business.Is it ok if I place and a second one in the same page with the type:website for the site link search box.For better indexing.I have read that google may not appear the search box but it is good practice.Is it better from local business?Is it better both scripts in the same page?Can I use and a third one,different,with the type person for the about page?Thank you very much.Thats all..

Reply

14 Aaron Bradley January 4, 2016 at 9:49 am

Yes, you can use multiple scripts if you need to make declarations that don’t pertain to the same item type.

Reply

15 claude January 11, 2016 at 12:57 am

Hi Aaron,

do you know how to fix the schema for local business information… Any plugin or what.

Reply

16 Aaron Bradley January 12, 2016 at 9:43 am

There’s a number of schema.org plugins for WordPress you can check out that can do the trick. For manually creating a block of LocalBusiness information in JSON-LD try Schema Creator from Raven. For industrial-strength schema.org in JSON-LD try the Schema App Creator from Hunch Manifest, which also features a WordPress plugin.

Reply

17 Herc Magnus March 7, 2016 at 12:17 am

Hey Aaron, I’ve just finished development and testing of a Schema plugin that has a TON of crazy good results. I’d love to give a copy to you for review if you wish. Let me know

Reply

18 Charles June 16, 2016 at 1:21 pm

I do have a question about Schema Markup and I haven’t found an answer yet.

We have a city directory page of our stores. On our city page, we listed down three stores. How can we make a schema markup for this page? Or is it even possible since there are basically three different NAPs. Or is it better to just make a schema markup for the specific store page?

I look forward to hearing back from you.

Reply

19 Aaron Bradley June 16, 2016 at 3:25 pm

Hi Charles – thanks for visiting and for your question.

Certainly what you want to do is possible, but there’s different approaches you can take.

Google advises that you should “define each local business location as a LocalBusiness type.” Accordingly, if all information (including the NAP for each) is on that one page, you could add a record for each item (i.e. each individual store). In JSON-LD, this would mean three <script> blocks. But…

Or is it better to just make a schema markup for the specific store page?

If you can swing it this is absolutely preferred (and in which case you would not mark up the LocalBusiness information on your city listings page), chiefly because in that case each of these locations has a unique identifying URL.

A disclosure that I know this is not the only way of approaching this (very common) problem, and that other very valid expert opinions may vary. Check out similar discussions on the Google Webmaster Central Help forum for structured data, and pay particular attention to answers provided by David Deering or Grace Massa Langlois.

Reply

20 Charles June 17, 2016 at 6:55 am

Thanks for your insightful reply, Aaron.

One last question, is schema markup limited to the NAP info we present on the landing page?

For example:

Our goal is to target Greater Atlanta Area but our store location is in Duluth, a suburban city. Can we put Greater Atlanta Area in itemprop=”addressLocality”? Or we need to stick to Duluth?

I’m reading some posts on the Google forum now. Thanks for the tip!

Reply

21 Sarah August 17, 2016 at 7:56 am

Hello, Thankyou for your helpful article, I need to correct my structured data infomation as my previous developer put in our business as a “taxi service”, (we are not a taxi!) instead of “local business”. But I dont know where to the structured data is placed.
Is it in the head of my website, or is it a seperate document. Can you please tell me where it is stored so I can correct it. The error has caused errors in my webmaster tools as it is not recognised as a taxi service. 🙂

Reply

22 Aaron Bradley September 20, 2016 at 3:19 pm

Hi Sarah. Where your structured data is placed depends on which syntax you’re using. If microdata or RDFa it is placed inline with the HTML code; if JSON-LD it is a script that can be placed anywhere in the document, although it is typically put in the <head>. One way or another this information is not placed in a separate document.

I suggest you look at the examples for schema.org/LocalBusiness to give you a better idea about the markup, and your options.

Reply

Leave a Comment

Previous post:

Next post: