Local business listings with Schema.org and JSON-LD

One of the things you can do to present your local business better in search results is Schema.org data for rich snippets. By adding structured data to your site, you can help search engines understand what your business is about and how it performs. For this reason, you have to add your NAP details, a map to your store/location, reviews, and images. Find out how Schema.org can help your local SEO.

Update: Since the 11.0 release, Yoast SEO builds a full structured data graph for every post or page on your site! A graph is a complete piece of structured data with well-defined connections to all the different parts. Search engines now not only know what all the parts mean but also how they fit together. Want to know what it does for your website? Read all about structured data in Yoast SEO!

Modern day customers use search engines not just to find your specific business, but also businesses around their current location. Customers using their phones looking for ‘italian restaurants’, will get a rich search result of local businesses. The results will include distance, reviews, opening hours and maybe a possibility to make a reservation.

Local SEO for WordPress

Before we dive into the world of Schema.org, we’d like to remind you that our Local SEO for WordPress plugin can take care of a big part of your local business listings in search engines. If you don’t want to mess with the technical side of things or if you think it’s too difficult, then this is the plugin for you. It’s easy to install, easy to work with and keeps you from having to add code yourself. It is actively developed and will get many more features in the near future.

Improve local rankings

Getting a good ranking for your local business means offering search engines as much data about your business as possible. Besides that, you need a good mobile-friendly website, quality content, links, and reviews.

To improve your rankings, you should focus on being the most relevant result for a specific query. In addition to that, your business has to be the best result. One way of getting this kind of recognition is by asking your customers for reviews. Reviews help search engines figure out which business is legit and which isn’t.

Why Schema.org

The main thing to remember is that Schema.org tells search engines what your data means, not just what it reads. Search engines can find out a lot about your site by crawling it. However, if you add structured data, you can give everything meaning. This way, search engines instantly grasp what the data means and how they should present it. In addition to that, Schema.org is a shared initiative by the big search engines, so using it will lead to consistent results in the respective search engines.

Rich search results for businesses

So, when we mean rich search results, we are talking about the information about a business you can directly see in search results, without clicking a link. There are a couple of different results here: a regular organic search result for a business can feature breadcrumbs, highlighted pages or even a search box. In Google, there’s also the Knowledge Panel on the right-hand side. Here you’ll find lots of metadata about a business, from opening hours to photos. Last but not least, the results you see when you search for a specific term, rather than a business. See the screenshots below for the different results you can get for a specific or generic search.

local listings 1
Searching for a specific business
Searching for a specific business, including location
Looking for a local business using a specific term

Increase chances of Google showing rich snippets of your site in the search results: learn how to add structured data with our training on structured data and SEO

Why you should use JSON-LD

To get rich results, you need to use structured data in the form of Schema.org. In the past, it was fairly difficult to add Schema.org data to your post, because it had to be embedded in your HTML code. Now, with the advent of JSON-LD, you just have to add a block of JavaScript code anywhere on your page. Plus, the code is readable and easy to change.

With JSON-LD you don’t have code wrapping around your HTML elements anymore, with less possibility of messing things up. In addition to that, Google advises you to use it. Now, let’s see how it’s done.

How to add Schema.org to your local business listing

The most important thing to keep in mind when you are working on your listing is to pick the correct business type. Make sure to pick a specific one, not a broad one. So if you own a barber shop, you can use the Local Business Type Hair Salon. There are over 400 types of businesses, so you’ll probably find one that matches closely. If not, try using the product types ontology. This site uses Wikipedia pages for describing products or services with GoodRelations and Schema.org. Here, you can get more specific information if your listing is too broad.

While it’s possible to write Schema.org JSON-LD code by hand, it’s not recommended. Use a generator like this JSON-LD Schema Generator or Google’s Structured Data Helper. Always validate your Schema.org data in the Structured Data Test Tool. Using Synup’s Schema Scanner, you can check your site to see if the Schema.org data is implemented correctly. Don’t forget to add your site to Search Console, so you can check how Google presents your site. If you want to learn more about Google Search Console, read our beginners guide to Google Search Console.

Required properties for local businesses

There’s one main Schema.org at play here: Schema.org/LocalBusiness. In this Schema.org, you’ll find everything you need to inform search engines about your local business. To get started, you need at least the following properties:

  • @id (globally unique id of the specific business in the form of a URL)
  • name of business
  • image (as of now, you have to supply a logo)
  • address
    • address.streetAddress
    • address.addressLocality
    • address.addressRegion
    • address.postalCode
    • address.addressCountry

Recommended properties

The properties mentioned in the previous paragraph don’t get you very far, though. To make the most of structured data for your site, you need to go further. Be sure to add the following properties as well, if applicable. This is just the beginning, on Schema.org/LocalBusiness you’ll find loads more.

  • url (unlike the @id, should be a working link)
  •  geo
    • geo.latitude
    • geo.longitude
  • telephone
  • potentialAction
    • ReserveAction
    • OrderAction
  • openingHoursSpecification
    • openingHoursSpecification,opens
    • openingHoursSpecification.closes
    • openingHoursSpecification.dayOfWeek
    • openingHoursSpecification.validFrom
    • openingHoursSpecification.validThrough
  • menu
  • acceptsReservations (true/false)
  • priceRange (how many $?)

Example code for local business Schema.org

To clarify how all of this works, we will use a real local business: Unique Vintage in Burbank, CA. This makes it a bit easier to validate the data we enter. In the code below, you’ll find all the NAP details, URL’s, geolocation data, maps, opening hours and reviews you might need.

<script type='application/ld+json'> 
   "@context": "http://www.schema.org",
   "@type": "ClothingStore",
   "@id": "http://unique-vintage.example.com",
   "name": "Unique Vintage",
   "url": "http://www.unique-vintage.com",
   "logo": "http://www.unique-vintage.com/example_logo.jpg",
   "image": "http://www.unique-vintage.com/example_image.jpg",
   "description": "Clothing store featuring vintage-inspired women's separates & dresses plus men's shirts & hats.",
   "telephone": " +1 818-848-1540",
   "address": {
    "@type": "PostalAddress",
    "streetAddress": "2011 W Magnolia Blvd",
    "addressLocality": "Burbank",
    "addressRegion": "CA",
    "postalCode": "91506",
    "addressCountry": "USA"
 "geo": {
   "@type": "GeoCoordinates",
    "latitude": "34.1736486",
    "longitude": "-118.332408"
   "hasMap": "https://www.google.nl/maps/place/Unique+Vintage/@34.1736486,-118.332408,17z/data=!3m1!4b1!4m5!3m4!1s0x0:0x47a3a037cf1e183b!8m2!3d34.173649!4d-118.3302131",
   "openingHours": "Mo, Tu, We, Th, Fr 11:00-19:00 Sa 10:00-18:00 Su 12:00-17:00",
   "priceRange": "$",
   "aggregateRating": {
   "@type": "AggregateRating",
     "ratingValue": "4",
     "reviewCount": "250"


Reviews are a major driver for new clientele. Scoring well in Google means your business provides quality, and this can eventually lead to better local rankings. Think about how you pick the next business to visit. Will it be the one with three two star reviews or the one with eighty-five star reviews?

In the example above, we’ve added a review section. If you want to use reviews in your Schema.org data, you have to keep in mind that these reviews have to live on your site. You cannot use sites like Yelp or TripAdvisor to generate reviews to show in the search engines. Simply ask your customers to leave a review. Make a review page, collect the reviews and present them to the world.


Another element to add to complete your online profile, are links to your social media accounts. To do this, you must specify an organization or a person. The URL has to lead to your main site, while the sameAs links lead to your social media profiles.

<script type="application/ld+json">
 "@context": "http://schema.org",
 "@type": "Organization",
 "name": "Example shop",
 "url": "http://www.exampleshop.com",
 "sameAs": [

Place Action

Google is currently working on an interesting new feature for local businesses, especially for local searches: direct actions from the search results. If you have a restaurant or a hair salon, you can use it to book an appointment or reserve a seat. Shortly, you can use reserveAction or orderAction to trigger this event. Eventually, you’ll see a nice call-to-action in your rich results that let customers contact you directly. Google is working with a small number of businesses to develop this.

Google My Business

There is another way to add your local business to Google. By opening a Google My Business account, you will be able to verify that you are in fact the owner of your business. After that, you can add or edit all relevant information about your business, such as address information, opening hours and photos. In addition to that, you can even manage the reviews people add to Google and see how your local listing performs.

Conversely, this only applies to Google. Every search engine can interpret Schema.org, so it is still advisable to add structured data to your site. Additionally, Schema.org can do so much more than just add relevant local business locations. Therefore, Schema.org should be your main focus.

In spite of all this, you’re still very much in Google’s hands. Some businesses appear in the Knowledge Panel, while others don’t. Some products get rich listings, including prices, reviews and availability, in the search results, while the same product from a different vendor doesn’t. It’s hard to predict what will happen. However, don’t let this stop you.

Structured data for your local business

As we’ve shown, Schema.org can play an important part in the optimization of your site and in your SEO strategy. Structured data can do much more, just look at all those properties on Schema.org. We’ll keep an eye on what structured data can do for your site and keep you in the loop!

And don’t forget, if you want an easier way to add your local business data to your pages, than you should check out our Local SEO for WordPress plugin.

Read more: Structured data with Schema.org: the ultimate guide »

13 Responses to Local business listings with Schema.org and JSON-LD

  1. Adam
    Adam  • 4 years ago

    I do a lot of local search work. Could not having Schema info and rich snippets possibly hurt a local business’ search ranking? Or by having the information possibly improve ranking? Thanks.

    • Edwin Toonen

      Hi Adam. Well, Schema.org mostly has an indirect effect. Your site will probably not rank worse if you don’t add it. However, the indirect effects can be great. If search engines do pick up your data, your listings will be enhanced and will therefore be more visible, which could result in a higher CTR. If you have the means, do add Schema.org data. Hope this helps.

  2. Stark Edge
    Stark Edge  • 4 years ago

    Hi Edwin,
    Appreciating the time and energy you put into this post and detailed information you offer. I have created one local business schema code for one of my business as per your above instructions. Every thing is on line but i got one error of “contactType”: “” . Can you please let me know what should I have to write into this field. ?

  3. Stark Edge
    Stark Edge  • 4 years ago

    Hi Edwin,

    Appreciating the time and energy you put into this post and detailed information you offer. I have created one local business code as per your above instructions and while implementing the code on the website its showing the below error.

    “contactType”: “”

    What should i have to add into this field. ?

    • Edwin Toonen

      contactType is used to describe what kind of contact you are presenting. Is it customer service, technical support or maybe a billing department? Just add that to your code.

  4. Venkat
    Venkat  • 4 years ago

    My business is related to education, training, and workshop on digital marketing. Which business type will suites for me ?

    • Edwin Toonen

      Yeah, that’s where it gets slightly harder. If you can’t find a specific listing for your business, you could use a second line with info from Productontology. The first one would be Schema.org/ProfessionalService and, for instance, http://www.productontology.org/id/Digital_marketing. “additionalType”: "http://www.productontology.org/id/Digital_marketing"

  5. Michael Benoit
    Michael Benoit  • 4 years ago

    Thank you for the detailed description on how to implement schema! I was not aware that it is best to use JSON-LD, but was able to easily create my schema with the recommended generator.

  6. Tuomo
    Tuomo  • 4 years ago


    In the beginning of this article it is said that the Yoast Local SEO does all these things that are being written about in this article.

    After reading the description of the Yoast Local SEO

    I found it only adds the address, opening hours and google maps and a KML file generator.

    But it does not say anything about adding the property info, reservation, geo Tagging, reviews and social for example.

    So what does this mean?

    Why does the article day the Yoast Local Plugin will add all these things but the product description tells otherwise?

    Thank you.

    • Edwin Toonen

      Sorry, the plugin does not do every Schema.org of course. I’ve updated the article accordingly.

  7. aysd
    aysd  • 4 years ago

    i found the post just amazing, i would love to read more about even that all was well detailed here.
    thanks a keep sharing

  8. Sonali
    Sonali  • 4 years ago

    Great information and thanks for sharing with us. I guess it’ll help us to go through a right way..

  9. Isaac
    Isaac  • 4 years ago

    Hi, we are in South Africa can we list our business with Schema.org and JSON-LD.YO…