So how do you do put your service area information on Google you ask?
There’s currently two ways to tell search engines which regions you deliver goods and/or services to:
- Enter your service areas in Google My Business.
Login to Google My Business and visit the Info > Address section of your account.
Then select Yes for “I deliver goods and services to my customers at their location”.
Here you can manually enter the region, city or zip codes that you would like to include or you can choose to have it based on a certain number of miles/kilometers from your verified business address.
(Source: Google My Business Help) - Use Schema.org markup (structured data).
Have your service areas listed in text somewhere on the page/website and list them in your Schema.org markup using the areaServed property. JSON-LD format is recommended. More on this below.
Note: Google recognizes Schema.org markup for service areas but the only guaranteed way to have them listed in Google’s search results is by completing this task in Google My Business.
Other search engines such as Bing and Yahoo recognize Schema.org markup as well.
Structured Data (Schema) for Service Areas
Schema.org defines the areaServed property as:
“The geographic area where a service or offered item is provided. Supersedes serviceArea.”
This property can be used for the LocalBusiness, Organization, Service, Offer, ContactPoint, DeliveryChargeSpecification, and Demand properties within Schema.
If you’re placing Schema.org markup on your site to list service areas for a local business, below are two (2) most popular ways to implement the areaServed property within Schema.org:
- Use the LocalBusiness or Organization Property. This will cause all products and services to be available only to the service areas listed. You would use this option if everything you do as a business is confined to those service areas. This would include products and services.
- Use the Service property. This will cause specific products and services to be available in the service areas listed. You would use this option to list individual services and their service areas. This would be best if you have different services for different areas or have services for specific areas, but also sell products outside of those areas.
In either instance, the code you would add to your Schema.org snippet would resemble the following:
(All examples below are in JSON-LD format)
Schema areaServed Example by City:
This example states that the service areas for this business are two specific cities.
"areaServed": [{
"@type": "City",
"name": "Boulder",
"sameAs": "https://en.wikipedia.org/wiki/Boulder,_Colorado"
},
{
"@type": "City",
"name": "Denver",
"sameAs": "https://en.wikipedia.org/wiki/Denver"
}]
}
Note: When listing cities it’s recommended to add the sameAs property in order for search engines to identify the proper city (ex: Miami, FL vs Miami, OH).
Example for Service Areas by State:
This example lists the service area as the State of California.
"areaServed": "US-CA"
Example for Service Areas by Country:
This example lists the service area as the entire country of Mexico.
"areaServed": "MX"
Note: See AdministrativeArea for more details and updates regarding the types of service areas you can list. According to Google My Business, you can specify your service area by city, postal code, county, state or country.
When listing countries or states, make sure to use the ISO 3166-1 format.
Schema areaServed Examples by Radius
The following two examples utilize the GeoCircle property to establish service areas by a certain distance from either the business location or another specified location.
Note: Google My Business no longer supports listing your service area as a distance and now must choose service areas by city, state, or other area(s). However, this doesn’t mean that you can’t use the schema. So, use the following examples at your own discretion.
Example for Service Areas that need a Distance from a Specific Address:
(Usually the Business Address)
This example states the service area of this business is 100 miles from their address.
"areaServed": {
"@type": "GeoCircle",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Your Street #105",
"addressLocality": "Boulder",
"addressRegion": "CO",
"postalCode": "80301",
"addressCountry": "US"
},
"geoRadius": "160934"
}
Example for Service Areas that need a Distance from a Specific Longitude/Latitude:
This example states the service area of this business is 100 miles from these coordinates.
"areaServed": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": "42.362757",
"longitude": "-71.087109"
},
"geoRadius": "160934"
}
Note: geoRadius uses Meters by default. However, you can specify another measurement if desired.
That about sums it up!
Now you can easily list your service areas with search engines using Schema.org structured data.
Let me know if this has helped or if you have any thoughts regarding the Schema implementation aspect below.
Ryan Bradley
Latest posts by Ryan Bradley (see all)
- Desktop vs Mobile Search Results on Google - December 10, 2021
- How to Add Facebook Comments on WordPress Without Using A Plugin - September 26, 2020
- How to Implement HowTo Schema - May 14, 2020
Perfect! This schema is just what I was looking for.
Do you include Schema on every page of site? Example:
LocalBusiness
Address
ServiceAreas
Are things that seemingly apply to every page of my site. Is it recommended to include this type of schema on every page or only the Home Page?
Hi WK – Most of the time, you’ll only want it on the home page. Unless you have more than one location and need to put it on each location page.
Does it suffice to just add the service areas to GMB? I think you touched on that in the article, but I’m asking for some clarification. I’ve got service areas listed in GMB, but I don’t know if it would it be too redundant adding it to the schema markup as well.
Adding service areas to GMB is the most important for Google, however, adding Schema on top of that would expand your service area information to Bing and Yahoo as well.
Is there anywhere, other than just directly on the text, where we can place Schema in a GMB website?
It’s best to place the Schema in the <head> section of the PAGE that most accurately represents it. However, placing it in the HTML has been shown to work as well. For a single location business, that’s usually the home page and for multiple location businesses it’s usually their unique or general location page.
Awesome Ryan,
I’ve been digging into this for months now. You are the first to explain it in a way that is both simple and trustworthy. Thanks.
Hi Ryan,
For areaServed, I tried using the following code:
“@type”: “AdministrativeArea”,
“name”: “Argentina”,
“sameAs”: “https://www.wikidata.org/wiki/Q414”
On the @type line, I received an error in Google’s structured data testing tool that said
“Uncategorized errors. X JSON-LD. Duplicate key found.”
I tried using “Country” for the @type, but this received the same error. Any ideas or suggestions on how to fix this?
Also, can I use the “City” property in an attempt to hyper-localize with Census Designated Places? For example, Fort Myers is a city in Southwest Florida. San Carlos Park is a CDP that’s not within the city limits of Fort Myers, but anyone that lives in San Carlos, does not have “San Carlos Park” in their address. Instead, they have “Fort Myers” in their address.
Last, how would you markup territories in the Caribbean such as U.S. Virgin Islands and Puerto Rico because technically they’re not cities, states, nor countries? Thanks in advance.
Hi Jason,
If you’d like to target a specific country, it’s a little easier.
All you need is this:
Here’s a list of country codes.
As for the issue with the CPD vs city, I would list it with the default AdministrativeArea property and link to their Wikipedia page via the sameAs property.
Like this:
When we do the radius target of 100 miles, does it cover all the county too? For example, 100 miles from the Chicago area covers all the county, and no need to mention the area served schema for those counties, right? Thanks.
If you’re using a geoRadius it will cover everything inside that circle. Whether it’s other cities, states, etc.
Perfect, That is helpful.
If I wanted to do my areas served by COUNTY (not country) (because listing all the cities we service in the bay area, CA would be an exhaustive list and would make for very long JSON-LD code) would this be the correct way to do it, or do I have to list out every city?
“areaServed”: [{
“@type”: “AdministrativeArea”,
“name”: “Alameda County”,
“sameAs”: “https://en.wikipedia.org/wiki/Alameda_County,_California”
},
{
“@type”: “AdministrativeArea”,
“name”: “Contra Costa County”,
“sameAs”: “https://en.wikipedia.org/wiki/Contra_Costa_County,_California”
}],
Correct
Is this only for businesses that deliver their products or services? We are a day spa and most of our business is at our location (other than going to a few hotels for in-house massage). But many people visit our location from the surrounding areas. Should I include those as a result?
If customers come to you there’s no need to list a service area.
Great! Just what I was after, thanks!
If I have a number of pages (Focus Keyword / Service + Location) as I want to generate leads in surrounding towns, I would use the “Service” property, right?
Following that, would I use the script on the relevant page, or list all services and locations on the home page?
I wouldn’t use structured data for the scenario you’re describing, that sounds more like an SEO content play. With that said, always place your Schema on the relevant page when available.
Very helpful for showing how to do multiple service areas in Schema.org / ld+json. Thank you much.
Hi Ryan, thanks for this great article.
What would the correct markup for a global organization with a variety of areas served?
For exmaple, a company with 50 locations in the U.S. , several locations in the UK, and several locations in Europe?
It’s a consulting company so their ability to work with partners in those areas isn’t too limited, but they wouldn’t be able to serve someone in Africa, for example.
Thanks very much!
Hi Mark – this would definitely be more complicated than the examples in this article, but in short, you’d have to make schema snippets for each location (including the main organization) and utilize parentOrganization/subOrganization properties while listing the serviceArea values for each office in their unique snippet.
Great information and very detailed regarding “Area Served”.
Very helpful, Will implement immediately. Thanks.
Ryan, thank you for your great article. I’m a newbie to schema and HTML code. I’m trying to designate our service area by county here is the code I used based on your article. I have not installed on site yet because I cannot get schema to pass Google’s Rich Snippet test.
Here is the code that pertains to the service area:
“areaServed”: [{
“@type”:”AdministrativeArea”,
“name”:”Latah County”,
“sameAs”:”https://en.wikipedia.org/wiki/Latah_County,_Idaho”
},
[some code removed due to length]
It keeps erroring out at the first “@type”:”AdministrativeArea”, call. I’m sure I have made some syntax error somewhere. If you would be kind enough to point out my error I would appreciated it.
Hi Ron, the code is sound but it’s your quotation marks that are causing the error. They’re stylized. Clear the formatting on your code and try again in the Rich Snippets test. I recommend creating your code in a text editor or code editor rather than a Word document. If you do use a Word document (or similar), just remember to clear all of the formatting before using. Hope that helps!
Ryan, thank you!
I put code into notepad++ used the replace command and in all is good now.
Thank you for your time and quick response.
Thanks for the concise explanation. I’m optimizing a site for a complicated service area. Is there any negative to overlapping service areas or mixing and matching? For example, listing the county of the service area followed by cities serviced within the county?
There’s no penalty for doing that but it’s best to be as efficient as possible with them. For example, list the county instead of all the cities in a county.
Would I use two properties or can I list the service areas just under the local business/organization property? Or do I need to create a second schema property regarding local businesses? I got the impression that you could only list the areas served under a services property and not the local business/organization property.
You’d list the service areas under the LocalBusiness or Organization property if all services of that business are for those service areas, otherwise you’d put the service areas for specific services.