Querying ZoomRank using ShufflePoint
Summary
ZoomRank is a service for organic and local rank monitoring.
Setup
Visit "Manage Datasources" and enter your ZoomRank API key, which you can get from ZoomRank.
Introduction
It is a common need in web analytics reporting to have included in reports information about the search ranking of selected keywords. The ranking metric is an indicator of the success (or failure) of SEO efforts. Several services exist to automatically check the page rank of specified keywords. ShufflePoint evaluated several and choose ZoomRank (ZR) for our first SEO service integration. We believe they have a quality service coupled with a quality API. You can get all the details at their web site at www.zoomrank.com.
ZoomRank supports bulk uploading of keywords to be tracked. A quick way to get started would be to write AQL queries to pull keywords from Google Analytics organic search or campaigns (or query AdWords directly, which we now support). See the end of this help doc for sample queries.
ShufflePoint has added to our Analytics Query Language (AQL) about two dozen new metrics and dimensions to support querying ZR. A ZR query should look familiar to AQL users. The namespace prefix for ZR is "zr:". The dimensions and metrics are now described.
Available Dimensions, Metrics and Timeframes
Dimensions
User dimensions
Name | Shortform | Label | Description |
zr:userName | zr:un | Username | Name of user |
zr:userId | zr:uid | User ID | ZoomRank ID of user |
zr:company | zr:co | Company | Company anme associated with user |
zr:email | zr:em | Email associated with user | |
zr:firstName | zr:fn | First name | User first name |
zr:lastName | zr:ln | Last name | User last name |
Category dimensions
Name | Shortform | Label | Description |
zr:category | zr:cat | Category | Category |
zr:categoryId | zr:cid | Category ID | Category ID |
SERP dimensions
Name | Shortform | Label | Description |
zr:keyword | zr:kw | Keyword | Keyword being ranked |
zr:url | zr:url | Url | Url associated with keyword |
zr:country | zr:cn | Country | Country associated with keyword |
zr:language | zr:ln | Language | Language associated with keyword |
zr:score5 | zr:s5 | Score 1-5 | Count of ranks within 5 ranges |
zr:score3 | zr:s3 | Score 1-3 | Count of ranks within 3 ranges |
Timeframe dimensions
Name | Shortform | Label | Description |
zr:date | zr:dt | Date | Date of rank |
zr:week | zr:w | Week | Week of average rank |
zr:month | zr:m | Month | Month of average rank |
zr:year | zr:y | Year | Year of rank |
Metrics
User metrics
Name | Shortform | Label | Description |
zr:allowedProfiles | zr:ap | Allowed profiles | Allowed profiles |
zr:availableProfiles | zr:vp | Available profiles | Available profiles |
SERP metrics
Name | Shortform | Label | Description |
zr:rank | zr:r | Rank | Keyword rank |
zr:count | zr:c | Count | Count of ranks within rank bucket |
zr:googleRank | zr:gr | Google Rank | Google rank |
zr:yahooRank | zr:yr | Yahoo Rank | Yahoo rank |
zr:bingRank | zr:br | Bing Rank | Bing rank |
zr:googleCount | zr:gc | Google Count | Count of Google ranks within rank bucket |
zr:yahooCount | zr:yc | Yahoo Count | Count of Yahoo ranks within rank bucket |
zr:bingCount | zr:bc | Bing Count | Count of Bing ranks within rank bucket |
Timeframes
The AQL TIMEFRAME clause specifies the timeframe over which data is obtained. Timeframe handling with ZR is not as flexible as it is with GA (GA is an OLAP cube; ZR is table based). The following table lists the supported timeframes and describes how they are processed. Queries which do not contain SERP metrics do not require a timeframe. This is true of user table and category table queries. For example, this user table query requires no timeframe.
SELECT
METRICS zr:allowedProfiles, zr:availableProfiles ON COLUMNS
DIMENSIONS zr:userName, zr:company, zr:email ON ROWS
Timeframes with special handling
timeframe | how handled |
today | returns most current ranking |
yesterday | same as "today" |
thisCalendarWeek | returns weekly average for current week |
lastCalendarWeek | returns weekly average for last week |
lastCalendarWeek2 | returns weekly average for week before last week |
All other named timeframes and timeframes with a start and end date are only valid if a zr:date, zr:week, or zr:month dimension is present.
Usage Notes
Special ranks
These rank values have special meaning with ZoomRank
0 | Not found in the top 100 results. |
101 | Not found in the top 100 results (in average report) |
999 | Ranking that popped into the top 100 |
-999 | Ranking that popped out of the top 100 |
These special ranks will not be considered in queries which perform averages.
Sample queries
All user table info
SELECT
METRICS zr:allowedProfiles, zr:availableProfiles ON COLUMNS
DIMENSIONS zr:userName, zr:company, zr:email, zr:firstName, zr:lastName, zr:userId ON ROWS
All category table info
SELECT
METRICS xx:identity ON COLUMNS
DIMENSIONS zr:category, zr:categoryId ON ROWS
Note the xx:identity placeholder metric. It returns no data but is present merely to satisfy the current need for AQL queries to have at least one metric.
Most recent organic rank with all available dimensions
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME yesterday
Most recent weekly average organic rank with all available dimensions
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME thisCalendarWeek
Weekly average organic rank with all available dimensions for two weeks ago
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME lastCalendarWeek2
Most recent monthly average organic rank with all available dimensions
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME thisMonth
Same for last month
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME lastMonth
Monthly average rank by month for last three full months
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:month, zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME fullMonths:3
Weeklyly average rank by week for last eight weeks
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:week, zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME weeks:8
Daily rank for last ten days
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:date, zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME days:10
Daily rank for a specific date
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:date, zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME 2011-04-01:2011-04-01
Daily rank for a specific date range
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:date, zr:engine, zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME 2011-03-01:2011-04-30
Pivot engine ranks into distinct metrics
SELECT
METRICS zr:googleRank, zr:yahooRank, zr:bingRank ON COLUMNS
DIMENSIONS zr:category, zr:url, zr:keyword ON ROWS
FROM "user name"
WHERE
TIMEFRAME yesterday
Trends engine ranks over ten days for a specific url and keyword
SELECT
METRICS zr:googleRank, zr:yahooRank, zr:bingRank ON COLUMNS
DIMENSIONS zr:date ON ROWS
FROM "user name"
WHERE
2011-04-01:2011-04-10
FILTER
zr:url == "www.mydomain.com" AND zr:keyword == "category 1"
Average ranks by category
SELECT
METRICS zr:rank ON COLUMNS
DIMENSIONS zr:engine, zr:url, zr:category ON ROWS
FROM "user name"
WHERE
TIMEFRAME yesterday
Average engine ranks by category for a specific url
SELECT
METRICS zr:googleRank, zr:yahooRank, zr:bingRank ON COLUMNS
DIMENSIONS zr:category ON ROWS
FROM "user name"
WHERE
TIMEFRAME yesterday
FILTER
zr:url == "www.mydomain.com"
Rank count by rank 5-bucket score, aggregated to category
SELECT
METRICS zr:count ON COLUMNS
DIMENSIONS zr:score5, zr:engine, zr:category ON ROWS
FROM "user name"
WHERE
TIMEFRAME yesterday
Engine monthly average rank count by rank 3-bucket score, aggregated across all keywords
SELECT
METRICS zr:googleCount, zr:yahooCount, zr:bingCount ON COLUMNS
DIMENSIONS zr:score3 ON ROWS
FROM "user name"
WHERE
TIMEFRAME lastMonth
Future plans
1. More aggregation support
2. Support queries which distinguish organic and local
3. Improved filtering capability