We have handling multi location marketing for a while now, currently managing over 4,000 locations for our clients.  Needless to say we have experimented with multiple versions of multi-location schema.  The simplest implementation thus far has been a single snippet that can list multiple locations rather than single-location snippets on each location page of the website.

Below is a sample implementation, but be sure to validate it with the Google Rich Snippet Testing tool before implementing.

Note: By default Google will show an error of a missing image.  This is not because the Schema is improperly done, it’s just that Google’s testing tool assumes every snippet includes an image.  Since this isn’t necessary for business Schema, you can ignore the error.

	
	{
	  "@context": {
	    "@vocab": "http://schema.org/"
	  },
	  "@graph": [
	    {
	      "@id": "http://www.odddogmedia.com",
	      "@type": "Organization",
	      "name": "Odd Dog Media",
	      "url" : "http://www.odddogmedia.com",
	      "logo" : "https://129py2f4h71f5aob2rwijjqj-wpengine.netdna-ssl.com/wp-content/uploads/2014/08/odd-dog-media-logo-white.png",
	      "sameAs" : [ "https://www.facebook.com/odddogmedia/",
	      	"https://twitter.com/odddogmedia"]
	      },
	      	    {
	      "@type": "LocalBusiness",
	      "parentOrganization": {
	          "name" : "Odd Dog Media"
	      },
	     "name" : "Odd Dog Media",
	      "address": {
	          "@type" : "PostalAddress",
	          "streetAddress": "174 Roy St Suite C",
	          "addressLocality": "Seattle",
	          "addressRegion": "WA",
	          "postalCode": "98109",
	          "telephone" : "206-569-8998"
	          },
	      "openingHours": [ "Mo-Fr 08:00-18:00"],
	      "hasmap" : "https://www.google.com/maps/place/Odd+Dog+Media/@47.6256212,-122.3551563,17z/data=!3m1!4b1!4m5!3m4!1s0x5490154113be0b41:0x20238d050375bc0e!8m2!3d47.6256176!4d-122.3529623"
	    },
	    {
	      "@type": "LocalBusiness",
	      "parentOrganization": {
	          "name" : "Odd Dog Media"
	      },
	     "name" : "Odd Dog Media",
	      "address": {
	          "@type" : "PostalAddress",
	          "streetAddress": "1234 Main St",
	          "addressLocality": "Seattle",
	          "addressRegion": "WA",
	          "postalCode": "98109",
	          "telephone" : "206-555-5555"
	          },
	      "openingHours": [ "Mo-Fr 08:00-18:00"]
	    }
	  ]
	}
Adam

Author Adam

More posts by Adam

Join the discussion 4 Comments

  • Hey Adam, great resource!

    Looks like you’re missing a closing bracket in the SameAs property in your embedded code snippet. After fixing, your sample code validated in the SSTT.

    Thanks again!

  • Allan says:

    Why is there 2 parent organisations? Is that a typo?

    • Adam says:

      That is not a typo. We defined the Organization at the beginning. After that, we are indicating that there are two locations. In each location, we reinforce their relationship to the Organization by indicating the “parentOrganization” for each location. I have tabbed out the structure as it may be a bit easier to see how they are related.

      Organization
      >Location 1
      >>parentOrganization
      >Location 2
      >>parentOrganization

Leave a Reply to Adam Cancel Reply