Local Search

How to Identify Local SEO Keywords in Bulk

By August 12, 2020 6 Comments
Share This Awesome Content!
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Email this to someone
email

Last Updated on August 12, 2020

If you do local SEO you’ll need to decide what keywords to target. Not every keyword triggers the ‘localization’ of SERPs. You’ll need to figure out which keywords do, so you can target them, and track their performance. If you’re doing local SEO for a big company with lots of locations or types of businesses, you’ll probably have a lot of keywords to contend with. That means having a quick way to discover which keywords are worth targeting may be useful to you.

This guide will show you how you can check hundreds, or even thousands of keywords quickly for localization.

Local Intent

Before we delve into the methodology, it’s worth briefly mentioning that ‘local intent’ is what triggers the localization of SERPs.

But what is ‘local intent’?

Local intent, within the context of SEO, is quite simply any search query that returns localized search results. This happens because the search engine deems that a significant portion of people that use the search query are interested in localized content.

An example of this would be the word ‘restaurant’. A search for this word will return a map with a list of three restaurants beneath it. This is called the Map Pack. it will usually sit near the top of the search results page in Bing and Google.

Under the map pack, you’ll see the typical list of 10 blue links, and these too will be localized to show webpages that mention the searcher’s city, or nearby cities. As such, both the blue links and the map pack are uniquely ‘localized’ to the searcher’s individual location.

The image below shows the results that Google returns for the query ‘Restaurant’ if the user’s location is Hertford, UK. Try this query in your own city and see how the results in your city differ because of localization. For a deep dive into local intent check out this post.

Why You Should Care

Big deal. Why would you need to know which keywords have local intent?

Well, because local intent causes localization of SERPs, and it’s not always obvious what words actually trigger localization. Take for example the two keywords below. One triggers the localization of search results, and the other doesn’t. They are pretty similar keywords. Without checking them, there’s just no way to know, right?

  • iPhone 9 Repair
  • iPhone Screen repair

What happens if you don’t bother checking?

If you unwittingly used a local rank tracking software to track hundreds of keywords that don’t even trigger localization, and you tracked these across many different geographic locations, it would work out to be a pretty expensive mistake. Not only would it be a waste of budget but the presence of keywords that are not affected by localization would mask the overall impact of your work because your local SEO efforts will not work on them.

Method Overview

So, how are we going to do this?

You’ll need a list of keywords that you think you would want to test for local intent. I’m going to assume you have that. But if you don’t, you can grab some relevant words from your website, SEMrush or Keyword Planner, etc.

Firstly, we’re going to turn that list of keywords into Google search query URLs. Then, we’re going to push these URLs through Screaming Frog to see which ones trigger localized search results.

A strong indicator of localized search results is the presence of a map. As such, we’ll set Screaming Frog up to look for a map on the search results pages.

If a map is present, the keyword will be deemed to have local intent. But if a map is not present, we can assume the associated keyword does not have local intent.

Right. Without further delay, let’s get into it.

Create Google Search Queries from Your Keywords

Open Microsoft Excel and complete the following steps:

Step 1. Column A

  • In column A, put this in all the cells: https://www.google.com/search?q=
  • If you wish, you can swap ‘.com’ within the URL to something else like .co.uk or .ca etc, depending on your country.

Step 2. Column B

  • Add all your keywords into column B, with just one word per cell.
  • Copy column B into column E. We will need this later.
  • Select column B (your keyword column) and do a find and replace Ctrl+F (PC) or Command+F (Mac) to replace all blank spaces between the words with a + symbol. i.e. the keyword ‘Mobile Phone Repair’ would change to ‘Mobile+Phone+Repair’.

Step 3. Column C

  • In column C you need to paste in the following string into each row: &ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&gws_rd=cr

Step 4. Column D

  • In column D you need to add the concatenate function to bring the three columns (A, B, and C) together into a single string.
  • Basically, you want Column A + Column B + Column C to appear joined up together in Column D. Here’s the function for that: =CONCATENATE(A2,B2,C2)
  • The above would go into row 2 of column D of your Excel file. Then you would drag it down so there’s one in each row, with only the numerical part changing in each row.

Your Excel sheet should look something like the below image once it’s complete.

In column D you should now have a full list of URLs for Google.

Scraping for a Map

To scrape for a map in Google, you’ll need to open up Screaming Frog and complete the steps below.

Step 1. Set user-agent

  • This is really important. Because within the URL string that I provided above, I set the user agent as Firefox, we’ll need to do the same in Screaming Frog.
  • Navigate to: Configuration > User-agent
  • In the new version of Screaming Frog, you can just select Firefox from the pre-set user-agents that are available in the dropdown. Then click OK.

Step 2. Set a Unique Identifier

Remember we said that when there’s a map on the search results page, we would consider that page to have localization? Well, we need to find something unique on the page that only appears when there’s a map present, and then we need to get Screaming Frog to look for that.

  • I will use the ‘More Locations’ link as my unique identifier, so I will set Screaming Frog to look for the following code, which I found with Chrome ‘s Inspect Element: More locations</span>
  • To add this into Screaming Frog, you just need to go to Navigation > Custom > Search
  • In the dialog box that opens click ‘add’
  • Then enter the code into the field next to the word ‘contains’. See the image below to illustrate.

Step 3. Crawl

  • Before we crawl, we just need to set the crawl speed in Screaming Frog. And then, we will need to dump in all our concatenated URLs
  • To set crawl speed, go to Configuration > Speed
  • I suggest a max of 4 threads and 2 URLs per second. If this trips a captcha you can reduce it.
  • Now we just need to dump the URLs into Screaming Frog.
  • To do this we need to go to Mode > List
  • Now copy all your URLs from column D in your Excel file into your clipboard and go to Screaming Frog and click the drop down that says ‘Upload’.
  • Select the option that says ‘Paste’. This will immediately paste all the URLs that are in your clipboard. Now just Click the green ‘OK’ button.
  • Screaming Frog will process all the URLs, and when complete it should look something like the image below.
  • The status code column should say, ‘200’ if all has gone well.

Finally, navigate to the Custom Search tab in Screaming Frog, and have a look at the ‘Contains’ column. This will tell you which of your Google URLs contained a Google Map. In my example, only one URL had a map.

Now you know which Google search results show a map.

You can export this list from Screaming Frog and open it in Excel.

Now you have the export from Screaming frog and you have your original file. The original file contains the keywords (which we copied into column E) and the Screaming Frog export contains the Google maps identifier.  We will want to merge the files so we can see which keywords trigger the map. Both contain the Google URL strings so just do a VLOOKUP in Excel using the Google URL as the common denominator.

Congrats! Now, you have a list of keywords that trigger local intent.

This same technique can be adapted for pretty much any rich snipped or SERP feature if you can find a unique identifier for that feature. If you enjoyed this post, don’t forget to subscribe to the Sterling Sky/Local University newsletter to get more tips and news on local SEO.

 

Update: One of our readers Zach Todd flagged that Google sometimes uses “More places” yet other times it uses “More businesses” in the map pack. For the method in the article to work, you’ll, therefore, need to set Screaming Frog to look for both of these unique identifiers. So, in step 2 just set two custom search filters as follows:

  1. More locations</span>
  2. More businesses</span>
Fion McCormack
Latest posts by Fion McCormack (see all)
Share This Awesome Content!
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Email this to someone
email

6 Comments

  • Zach Todd says:

    Very cool tip. Just a heads up, Google will sometimes use the label “More businesses” instead of “More locations”.

    • Fion Mccormack says:

      Thanks for flagging Zach. I wasnt aware of this. Within Screaming Frog we can create an additional custom search filter, so it looks for both “More businesses” and “More locations” at the same time.

  • James H says:

    what if you get 302 status code?

    • Fion Mccormack says:

      It probably means theres a problem with how you constructed the url. Please take one of your constructed urls and paste into your firefox browser to see what happens. Does it cause a 302 there also? Does it render Google search results? Please also ensure that user agent in screaming Frog is firefox so that it matches the user agent in the url string.

  • Any ideas of how to do this for 100+ keywords? I ask because Google limits how much you can crawl SERPs before throwing a CAPTCHA in your way 🙂

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.