Querying Google Analytics with .NET

Sunday, 1 November 2009

Google recently introduced an API for their Analytics service allowing you to query and download the statistics captured. Using a some C# .NET example code as a base, I created a fluent interface (using method chaining) to the API and a console application to call it from.

Calling the API to get the most popular pages for the last day is trivial:

/// 
/// The Google Analytics command line application.
/// 
static class Program
{
  static void Main(string[] args)
  {
    var results = new AnalyticQuery()
                        .WithCredentials(username, password)
                        .SelectTopContent()
                        .ForYesterday();

    Console.Write(new TextFormatter().Format(results));
  }
}

Using the text output formatter produces the following result:

Google Analytics for 02 October 09

Top Content for seogrep.com
===========================
 29 : /
 29 : /site/results
 28 : /site/loading
 10 : /site/domain-results/
  5 : /dead-links/results
  4 : /user/edit
  3 : /page/results/6Z3
  3 : /site/view/IK
  2 : /dead-links/results/bad
  2 : /dead-links/results/ok

Complex Queries and CSV Output

The query object uses object chaining enable you to easily build up a complex query using inteliisense:

/// 
/// The Google Analytics command line application.
/// 
static class Program
{
  static void Main(string[] args)
  {
    var results = new AnalyticQuery()
                        .WithCredentials(username, password)
                        .Select(Metric.Visitors)
                        .Having(Dimension.Date, Dimension.PageTitle)
                        .FromTheDate(DateTime.Now.AddMonths(-1))
                        .ToTheDate(DateTime.Now)
                        .ForDomain("seogrep.com")
                        .OrderDecending()
                        .Top(100);

    Console.Write(new CsvFormatter().Format(results));
  }
}

This would produce the following output (using the CSV formatter):

"www.seogrep.com","12","20091031","Simple SEO Statistics and Tracking - SEO grep"
"www.seogrep.com","8","20091030","Simple SEO Statistics and Tracking - SEO grep"
"www.seogrep.com","8","20091031","Analysing your site - SEO grep"
"www.seogrep.com","3","20091030","Analysis of letsgetdigitaltv.co.uk - SEO grep"
"www.seogrep.com","3","20091031","Dead Links - SEO grep"
"www.seogrep.com","2","20091030","Analysing your site - SEO grep"
"www.seogrep.com","2","20091030","Analysis of Site Root - SEO grep"
"www.seogrep.com","2","20091031","Analysis of Site Root - SEO grep"
"www.seogrep.com","2","20091031","Dead Link Analysis for Site Root - SEO grep"
"www.seogrep.com","2","20091031","Page Contains an H1 Tag Rule Analysis - SEO grep"
"www.seogrep.com","1","20091030","Analysis of nubilus.nl - SEO grep"
"www.seogrep.com","1","20091030","Analysis of www.letsgetdigitaltv.co.uk - SEO grep"
"www.seogrep.com","1","20091030","Analysis of x6grey/ - SEO grep"
"www.seogrep.com","1","20091030","Page URL Contains Underscores Rule Analysis - SEO grep"
"www.seogrep.com","1","20091031","Analysis of demusicalbende.nl - SEO grep"
"www.seogrep.com","1","20091031","Analysis of fashiondays.nl - SEO grep"
"www.seogrep.com","1","20091031","Analysis of index.php - SEO grep"
"www.seogrep.com","1","20091031","Analysis of lookbook.nu - SEO grep"
"www.seogrep.com","1","20091031","Analysis of musical.nl - SEO grep"

You can download the source code here or get a console application.

1 Comments:

Anonymous Anonymous said...

This is a great piece of code. I love the idea of being able to pull GA data. But I have a problem with the metrics: only the default entry works and I can't get other metric data. All dimensions are fine. Any ideas?

9 February 2010 10:45  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home