PhpRiot
News Archive
PhpRiot Newsletter
Your Email Address:

More information

Retrieving Data from Google Analytics API using PHP

Note: This article was originally published at Planet PHP on 9 December 2010.
Planet PHP
Recently I started playing with the google analytics API, looking at ways to bring analytics onto dashboards and generate simple reports from the data in there. Very shortly after I started to look at the API, I had working data retrieval, so I thought I'd share my experiences (and code!). I am using OAuth for authentication, and I blogged about using Google and OAuth previously so feel free to pop over there to find out more about that. I used the pecl_oauth extension to make all the requests to analytics, but even for another technology choice, the concepts apply so keep reading :)

Analytics Parameters


The data format for analytics is fairly comprehensive and easy to understand - see their data feed reference document for a clear outline of the parameters that can be passed and what format they can take. I am using the ids parameter (which is the tableId I showed retrieval of in the earlier blog post), the date parameters, metrics, dimensions and sort - so my code looks something like this, with the parameters set in $query_data.

A A A A $oauth = new OAuth($oauth_consumer_key, $oauth_consumer_secret);
A A A A $oauth-setToken($token, $token_secret);

A A A A $oauth-fetch('https://www.google.com/analytics/feeds/data', $query_data);
A A A A $result = $oauth-getLastResponse();
A

Combining Parameters


The biggest problem I'm encountering with the analytics is understanding how to combine the dimension and metrics parameters to get useful data. It is pretty easy to report on visitors by day/week/month, over a given date range, but getting more meaningful and useful statistics is still a work in progress! There is some documentation, which is exhaustive, but doesn't link the available data to the sorts of questions users actually want to ask. If anyone has any suggestions on good combinations to use, I'd absolutely love to hear them - leave me a comment and I'll post again if/when have some better data patterns!