JSON-LD is pretty sweet. It makes encoding schema onto websites super simple. As opposed to squeezing microdata manually into a website’s code, JSON-LD can be placed pretty much anywhere on a page and be totally invisible. And the cherry on top: it can be implemented straight from Google Tag Manager.

Writing proper schema in JSON-LD, however, is another story.

Creating schema for a business with one address is pretty straightforward (and this generator will even create the JSON-LD for you). But what if a business has multiple locations? Things can get even trickier when those locations have separate telephone numbers or names.

Depending on what information needs to be differentiated, you can build JSON-LD schema for businesses with multiple locations in 2 ways.

1. Same Contact Information with Different Locations

Universities and campgrounds, for example, often have multiple locations controlled by one main hub. To provide addresses for those extra locations while keeping only one set of contact details, use the Organization framework and build an array for the “address” property.

Here’s an example for the new school I just founded, The School for Gluten-Free Baking:

"@context": "http://schema.org",
"@type": "CollegeOrUniversity",
"name": "The School for Gluten-Free Baking",
"telephone": "(503) 123-4567",
"alumni": {
	"@type": "OrganizationRole",
	"alumni": {
		"@type": "Person",
		"name": "Founder",
		"sameAs": "www.url.com"
	},
	"startDate": "2016"
},    
"sameAs": "URL for The School for Gluten-Free Baking",
"email": "theschoolforglutenfreebaking@url.com",
"foundingDate": "2002",
"address":
	[
		{
			"@type": "PostalAddress",
			"addressLocality": "Portland",
			"addressRegion": "OR",
			"postalCode": "97214",
			"streetAddress": "Address 1 for The School for Gluten-Free Baking"
		},
		{
			"@type": "PostalAddress",
			"addressLocality": "Vancouver",
			"addressRegion": "WA",
			"postalCode": "98662",
			"streetAddress": "Address 2 for The School for Gluten-Free Baking"
		}
	]

2. Entirely Separate Contact Information for Each Location

This solution works best for businesses with separate locations that work independently of each other, such as chain restaurants or branches of a large organization. Again, use schema’s Organization framework, but this time create an array for the “location” property and reference the “parentOrganization”:

In this example, I’ll use my favorite fake business, The Gluten-Free Donut Place (who I made a Yelp business account for in a previous post).

 "@context": "http://schema.org", 
 "@type": "Organization", 
 "name": "The Gluten-Free Donut Place", 
 "url": "https://yoururl.com/", 
 "logo": "https://yoururl.com/yourlogo.png", 
 "location": 
    [ 
       { 
          "@type": "Bakery", 
          "parentOrganization": {
          "name": "The Gluten-Free Donut Place"
       },
          "name" : "The Gluten-Free Donut Place - SE Portland",
          "image": "https://yoururl.com/se-portland-location.jpg",
          "address": {
              "@type": "PostalAddress",
              "addressLocality": "Portland",
              "addressRegion": "Oregon",
              "postalCode": "97202",
              "streetAddress": "Address 1 for The Gluten-Free Donut Place"
            },
              "openingHours": [
              "Mo-Su 08:00-22:00"
            ],
              "telephone" : "+1(503) 123-4567"
            }, 
       { 
          "@type": "Bakery", 
          "parentOrganization": {
          "name": "The Gluten-Free Donut Place"
       },
          "name" : "The Gluten-Free Donut Place - North Portland",
          "image": "https://yoururl.com/north-portland-location.jpg",
          "address": {
             "@type": "PostalAddress",
             "addressLocality": "Portland",
             "addressRegion": "Oregon",
             "postalCode": "97203",
             "streetAddress": "Address 2 The Gluten-Free Donut Place"
          },
           "openingHours": [
           "Mo-Su 08:00-22:00"
          ],
           "telephone" : "+1(503) 654-4321"
       } 
 ],
 "image": "https://yoururl.com/gluten-free-donut-place.jpg", 
 "email": "theglutenfreedonutplace@url.com",
 "description": "We make gluten-free donuts so tasty, you’ll question 
  everything you thought you knew. Check out our flavor of the day as 
  well as our award-winning menu of triple chocolate goodies." 

 

**Update March 2018: We’ve updated our second example! We’ve shifted to using location and parentOrganization properties to differentiate from businesses that have departments within their single building location.

These tend to be the two most frequent cases I run into. Are there any other common variations I’m missing? Or do you know of any other hacks to make JSON-LD schema for businesses with multiple locations? Leave a comment below!

Get in touch

2715 SE 8th Avenue, Suite 145
Portland, OR 97202
503-206-4988
hello@intuitivedigital.com

Sign up to get marketing tips sent directly to your inbox
  • This field is for validation purposes and should be left unchanged.