Many local businesses offer goods and services to people in a certain geographical region in lieu of or in addition to a brick-and-mortar location. There’s also mobile (ex. food trucks) and home-based businesses out there that may need to specify which regions they service.
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.
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)
Example for Service Areas 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: So far, you can list cities, states and/or countries as the service area. See AdministrativeArea for more details and updates.
When listing countries or states, make sure to use the ISO 3166-1 format.
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.
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 (in particular Google).
Please let me know if this has helped or if you have any thoughts regarding the Schema implementation aspect below.
Udel says
Perfect! This schema is just what I was looking for.
WK says
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?
Ryan Bradley says
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.
Kyle Miller says
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.
Ryan Bradley says
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.
Scott W. says
Is there anywhere, other than just directly on the text, where we can place Schema in a GMB website?
Ryan Bradley says
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.
Steven Lusby says
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.
Jason Taylor says
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.
Ryan Bradley says
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:
Suresh says
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.
Ryan Bradley says
If you’re using a geoRadius it will cover everything inside that circle. Whether it’s other cities, states, etc.
Suresh says
Perfect, That is helpful.
Jorge says
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”
}],
Ryan Bradley says
I’ve never listed a service area by the county before, but if I did, I would do it exactly like that.
Julien says
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?