Google Announces Study Looking at Abuses in Google Maps – What Does it Mean?
Google posted on their research blog today some summary data from a study Pinning Down Abuse on Google Maps that is being presented tomorrow at the International World Wide Web Conference. The study details released today, while an interesting necessity on the step to cleaning up Maps, leaves many questions unanswered. Our study shows that fewer than 0.5% … Continue reading Google Announces Study Looking at Abuses in Google Maps – What Does it Mean? →
My Recent Posts Elsewhere
I have been busy. Here are my posts from an assortment of sites: 4/5 LocalU: Video Deep Dive: Local Ranking Factors, Making Sense Of It All (now also available as a regular podcast) 4/3 StreetFight: The Coming DIY Cataclysm 4/3 LocalU: Video: Last Week in Local April 3rd, 2017 (now also available as a regular podcast) 3/31 GetFiveStars: Understanding Google Schema Guidelines: Review Snippets vs. … Continue reading My Recent Posts Elsewhere →
Google says it has reduced fake Google Maps listings by 70% since 2015
Company cites machine learning and new business verification techniques as main reasons for the decline.
The post Google says it has reduced fake Google Maps listings by 70% since 2015 appeared first on Search Engine Land.
Please visit Search Engine …
Trimodal Local Search Algorithms
I was reading through the transcript of the excellent discussion of ranking factors by friends of the show Mike Blumenthal and Mary Bowling and figured now would be a good time to post the results of the survey I conducted about the trimodal local search algorithm. The question was pretty basic: When it comes to prominence, […]
The post Trimodal Local Search Algorithms appeared first on Local SEO Guide.
What the data tells us about the death of exact match and its impact
Following Google’s recent changes to exact match in AdWords, many search marketers were concerned about the impact on their accounts. Now that it’s been a couple weeks, columnist Aaron Levy digs through his client data to see whether advertisers’ fears…
What We Learned in March 2017: The Digital Marketing Month in a Minute
.jpg)
This month’s industry news has well and truly broke free from the industry bubble, with mainstream media extensively covering the ongoing issue of certain online adverts showing next to extremist content, which has gotten Google into serious trouble.
Google: Use Disavow File When Threatened With Negative SEO
We’ve seen it before, negative SEO threats. Bill Hartzer recently got one and asked Google what to do.
The advice given is similar to what Google said in the past
Google Tests Local Knowledge Panels Without Maps
Google is testing, yet another, Google local knowledge panel user interface. This one is where the local knowledge panel is not even showing the map in the box. Yes, Google is testing not showing a map for local results in the Google search results……
Small Google Algorithm Update On April 4th?
Over the past 24 hours, I’ve been tracking what I would call mild chatter in the SEO community around a potential Google algorithm ranking update on April 4th. I would categorize this at best as a small update…
Lazy Developers or Poor Communication?
Often websites aren’t as good as they can be due to poor communication between developers and other teams like marketing. In this guest post, Toby Osbourn explains how this can be prevented.
Post from State of Digital Guest Contributor
The Google Mobile First Index Likely Won’t Launch In 2017
So Gary Illyes from Google was at this event, which I was not at :), and he said at the event that the mobile first index might not launch in 2017.
Was Ashley Madison Penalized By Google? Not Ranking For It’s Own Name.
Was Ashley Madison’s web site penalized by Google months ago? Maybe. Marie Haynes posted in the Google Webmasters Help forum examples showing
Ask Yoast case study: SEO of a mom blog
SEO can be a rather complicated and abstract thing. What exactly do we mean by increasing keyword density? How do you start with improving the structure of a site? That’s why I’m going to write a series of Ask Yoast case studies. In these case studies, I’ll take a look at a specific site (the owner […]
“Ubiquitous and seamless”: The future of voice search
These are interesting times for voice search, both in terms of its adoption among consumers and its technological development. We have moved … read more
Measuring Content Success with GTM
The questions that marketers know how to answer with Google Analytics are typically things it will tell you out of the box: How many sessions were driven by the organic channel last month? What are my top sources of referral traffic? Which pages are doing well socially? These are important questions which absolutely need to […]
The post Measuring Content Success with GTM appeared first on Builtvisible.
Grace the Stage at MozCon 2017: The Door is Open for Community Speaker Pitches
Posted by ronell-smith
Some of the best talks at MozCon each year come from the community speakers—those who’re able to make a pitch to grace the stage.
This group enjoys the same privileges as the other speakers, including being able to deliver a keynote-style talk, and are always well-received by the audience.
If you’re eager to be a member of this group, step right up.
We’re now open for MozCon community speaker’s pitches.
We’d be happy to have your best effort.
(This year, we’ll have six speakers.)

The nuts & bolts:
- Submitting is as simple as filling out the form below
- Only submit one talk (the one you’re most passionate about)
- Pitches must be related to online marketing & 15 minutes long
- Submissions close Sunday, April 16th at 5pm PDT
- All decisions are final
- Talks must must adhere to the MozCon Code of Conduct
- You’ll be required to be present at MozCon in Seattle
if you submit a pitch, you’ll hear back from us regardless of whether you’re accepted or denied.
Loading…
Community speakers receive…
- At least 15 minutes on the MozCon stage for a keynote-style presentation, plus 5 minutes of Q&A
- A free ticket to MozCon. (If you already have one, we’ll either refund or transfer the ticket to someone else.)
- Four nights of lodging covered by us at our partner hotel
- A reimbursement for your travel (flight, train, car, etc.), up to $500 domestic and $750 international
- A free ticket for you to give to anyone, plus a code for $300 off another ticket
- An invitation for you and your significant other to join us for the speakers’ dinner.
If you’re curious about what the process look like, take a look at what Zeph Snapp wrote about his experience as a community speaker.

Long-time community member Samuel Scott, one of our fantastic community speakers at MozCon 2016!
How do you pick speakers?
The selection committee, comprised of Mozzers, reviews every pitch. Initially, we review only the topics. This helps us make sure the topics match our audience.
Later we look at the entirety of the pitch, with an eye for what the finished product would look like on stage.
Things to consider for your pitch:
- Focus your pitch on online marketing. MozCon is all about actionable information.
- Your pitch is for MozCon organizations, so detail what you’re talking about. We need to know the actual tactics you’ll be sharing.
- Read this post on how to prepare for speaking, from pitching to the actual gig.
- Review the topics already accepted to ensure there is no overlap.
- Honor the form’s word limits. (Linking to Google Docs, for example, will result in an immediate disqualification.)
- No one from the speaker selection committee will be able to evaluate your pitch in advance.
- Lobbying on social media is frowned upon and won’t do you any good.
- Link to a video of you presenting and to your SlideShare channel (or wherever we can take a look at decks you’ve created in the past)
A little weak in the knees about speaking at MozCon?
Don’t be scurred.
We’ve got your back.
Whether a speaker has hundreds of talks under her belt or is giving her first talk, we work with them to deliver a product she’lll be proud of and the audience will both love and learn from.
We provide instruction on topics and review the content in its entirety.
We encourage pitches from speakers of all backgrounds, knowledge levels, and speaking experiences.
A few additional things we help with:
- Discuss and refine your topic
- Assist in honing topic title and description
- Review outlines and drafts
- Best practices and guidance for slide decks, specifically for our stage
- A comprehensive, step-by-step guide for show flow
- Serve as an audience for practicing your talk
- Review your final deck
- Sunday night pre-MozCon tour of the stage to meet our A/V crew, see your presentation on the screens, and test the clicker
- A 15-person dedicated crew to make your A/V outstanding
- Whatever else we can do to make your talk outstanding
Now over to you.
If you’ve ever had a vision of making onto the MozCon stage, this is your best shot.
So, umm, shouldn’t you be typing feverishly in the Google Form above?
Good luck.
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!
How to Get All Your Search Console Data from the API (Plus, Learn How to Use Python)
Posted by Dom-Woodman
What will you learn from this post?
- How to get lots of Search Console data quickly and easily
- How to run a Python script
And who can do it? Hopefully, it should be accessible to any beginner.
Why do we use the API to get Search Console data?
At Distilled, we often want to use Google Search Console data, but getting it from the interface is incredibly clunky:
- You’re limited to the top 1,000 queries
- You have to apply each filter one at a time
- The interface is slow
- And if you want to do this regularly, you have to repeat this process often.
We can get around that by using the API. Now we can get up to 5,000 queries at a time, we can apply multiple filters instantly, and we can run multiple queries quickly and easily.
We do this with Python.
Why is it useful to be able to run Python scripts?
Being able to run scripts is incredibly valuable. There are lots of amazing scripts out there, both on Github and written by other people in the industry; using them, you can pull down data more quickly and faster than you otherwise could.
We’ll be using Python for this tutorial because it’s a very popular language, particularly when working with large amounts of data.
Crucially, you don’t need to be able to write in Python to use the scripts — you just need to understand some basics about how to use them.
With APIs you can pull data from all sorts of exciting places, far more quickly than through the user interface. You can also often get more data.
How do we run Python?
If you’re on a Mac or a PC, I’d recommend downloading Anaconda. That will get you set up and running with Python 3, and save a lot of fiddling around.
If you need administrator permission to install things on your work computer, then make sure you only install Anaconda for your user, not all users. If you try and install for all users, then you’ll need administrator permission.
Then we’re going to need a good shell (a command line interface, the place where you can run the script from). Mac has Terminal installed by default; on Windows, I would recommend Cmder.
Go ahead and install that.
(The rest of this tutorial is shown in Windows, but the same basic steps should be fine for a Mac!)
Double-check that Python has installed correctly
First open up the shell, type in python and hit enter.

Exit python by typing in exit().
Download our example script
For this example we’ll be using the search console script, written by one of our consultants, Stephan.
You can download it from his Github here. I’m not going to include a full tutorial on Git in this (although it’s a very useful tool for coding), so if you’re unsure how to clone a repository, just download the zip file:

Running our example script
Once we’ve downloaded the example script (and unzipped the folder, if necessary), we need to navigate in our shell to the folder where we just downloaded the script..
The command line functions like the Windows File Explorer or Finder that you normally use. Just like file explorer has a specific folder open, so does the command line, so we need to navigate to the folder where we have the script downloaded.
A command line shell functions a lot like a file explorer, only everything happens through text. You don’t get a mouse or a GUI.
Some command line basics
To change folders you’ll need some command line basics, most notably these two super-important commands:
- cd [path]
- ls -g
The first navigates you to the path given. (Or, if you use .. as your path, takes you a step backwards “cd ..”)
The second lists all the files and folders in the directory you’re currently in.
That’s all you need, but to make yourself faster there are two other things that are useful to know:
Hitting tab will cause the shell to try and complete the path you’re typing.
Suppose you’re in a folder with two files:
- Moz_1990_ranking_data.txt
- Moz_180_rankings.txt
- 180_rankings.txt
If you type:
- 180 and hit tab: It will autocomplete to 180_rankings.txt
- Moz and hit tab: It will autocomplete to Moz_
Secondly, hitting the up key goes through all the commands you’ve used. The reason a lot of people enjoy using the shell is they find it quicker than using a file explorer — and those two commands are a large part of that.
Congrats — now you’re ready to run the script. Next we need to get permission for the Google Search Console (GSC) API.
Turning on the API
In the same way you have to log in to see Search Console data, you need permission to use the API. Otherwise, anyone could get your data.
We also need to check whether the API is turned on — by default, it isn’t.
All the Google APIs live in the same place; Google Analytics is there, too. You can find them all at:
You’ll need to sign in (making sure to use the Gmail account with access to your Search Console data). Then you can search for the Search Console API.

Once it’s selected, if it says “Enable here,” you’ll need to enable it.

Once that’s done we need to download an API key (which is equivalent to our password when signing into Search Console). A single API key gives you access to all of the Google services, in the same way that you use the same Gmail address to sign into Google Analytics and Search Console.
What is an API key? Different APIs have different types of keys. Sometimes it will just be a text string like “AHNSKDSJKS434SDJ”; other times it’s a file. The most common Google API key is a file.
So how do we get our Google API key? Once we’ve enabled the API, we select the “Credentials” tab and then create credentials. The three main kinds of API key are a basic text key, user OAuth credentials, and service account keys.

The first is quick and simple, the second is more secure and intended for users who will authenticate with a login, the third for automated data pulling.
There are some subtleties around permissions with these that we don’t really want to delve into here. The script is set up to use the second, so we’ll use that.
Go ahead and create an OAuth Client ID:

Ignore the pop-up and download the file from the credentials screen:

Move it to the same folder as your script. For ease of use, we’ll also rename it “credentials.json,” which is what the script is expecting the API key to be called. (A script will tell you what it’s expecting the API key to be called when you run it, or will have this in the documentation… assuming it’s well-written, of course).
Crucial note: By default, most versions of Windows will hide file extensions. Rather than naming the file “credentials.json,” you’ll accidentally name it “credentials.json.json.”
Because the file is already a JSON file, you can just name it “credentials” and check that the type is JSON. You can also turn on file extensions (instructions here) and then name it “credentials.json.”
In the screenshot below, I have file extensions visible. I’m afraid I don’t know if something equivalent exists in Mac — if you do, drop it in the comments!

Running our script
And we’re ready to go!
Hopefully now you’ve navigated to the folder with the script in using cd:

Now we try and run the script:

We get a module missing error. Normally you can solve this by running:
- pip install missing_module — or, in our case,
- pip install httplib2
And because we’ll get several of these errors, we need to install a couple modules.
- pip install oauth2client
- pip install –user –upgrade google-api-python-client
Interesting side point: It’s worth noting that the flag “–user” is the “pip” command line equivalent to the choice you often see when installing programs on a computer to install for all users or just you. (We saw this with Anaconda earlier.) If you do see permissions errors appearing in the command line with pip, try adding –user. And back to our script.
Now that we’ve installed all the things the script needs, we can try again (remember, you can just press up to see the previous command). Now we should get the script help, which will tell us how to run it. Any well-documented script should return something like this:

First, pay attention to the last line. Which arguments are required?
- property_uri
- start_date
- end_date
Our script needs to have these 3 arguments first in that order. Which looks like:
python search_console_query.py <a href="https://www.distilled.net/">https://www.distilled.net/</a> 2017-02-05 2017-02-06
Run that command and remember to change the URL to a property you have access to!
Your browser will open up and you’ll need to log in and authenticate the script (because it’s the first time we’re running the script):

You should be taken to a page that doesn’t load. If you look at the script, it’s now asking for an authentication code.

This is in the URL of the page, everything from the = up to the hash, which you’ll need to copy and paste back into the script and hit enter.
Check your folder where you saved the script and it should now look something like this:

The permission we gave the script is now saved in webmaster_credentials.dat. Each of our days of Search Console data we asked for sits in those CSV files. The script is designed to pull data for each day individually.
If we look back at our script options:

We can see some of the other options this script takes that we can use. This is where we can filter the results, change the country, device, etc.
- “Pages” takes a file of pages to individually query (example file)
- By default, it pulls for the entire property.
- “Devices” takes a space-separated list
- By default, it queries mobile, desktop, and tablet.
- Countries
- By default, it does worldwide. Takes a space-separated list of country codes.
- By default the script will pull 100 rows of data per day. The API allows a limit of up to 5,000.
Here are some example queries using those options and what they do:
#get top queries for the search console property
python search_console_query.py https://www.distilled.net/ 2017-02-05 2017-02-06
#get top queries for multiple pages stored in file_of_pages and aggregate together
python search_console_query.py https://www.distilled.net/ 2017-02-05 2017-02-06 --pages file_of_pages
#get top queries for the property from desktop and mobile
python search_console_query.py https://www.distilled.net/ 2017-02-05 2017-02-06 --devices desktop mobile
#get the top queries for the property from the US & the UK
python search_console_query.py https://www.distilled.net/ 2017-02-05 2017-02-06 --countries USA GBR
#get the 5000 top queries for the property
python search_console_query.py https://www.distilled.net/ 2017-02-05 2017-02-06 --max-rows-per-day 5000
Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!