Storm Fluent Google Analytics v3 API Interface

Provides a fluent interface over the Google Analytics v3 reporting API

View the Project on GitHub stormid/storm-googleanalytics-reporting


An abstraction over the Google Analytics v3 Reporting API, providing a clean, fluent method of querying analytics data.


The library is available through NuGet...

install-package storm.googleanalytics.reporting


Lets get straight to an example.

public class MyData
    public DateTime Date { get; set; }
    public string Country { get; set; }
    public int Pageviews { get; set; }
    public int Visits { get; set; }

public static void Main(string[] args)
    var service = GoogleAnalyticsService.Create("serviceAccountId", "path/to/certificate");

    var result = service.Query(q => q
        .ForDateRange(DateTime.Today.AddDays(-1), DateTime.Today)
        .WithMetrics(GaMetadata.Metrics.PageTracking.PageViews, GaMetadata.Metrics.Session.Visits)
        .WithDimensions(GaMetadata.Dimensions.Time.Date, GaMetadata.Dimensions.GeoNetwork.Country)
        .FilterBy(GaMetadata.Dimensions.PlatformDevice.DeviceCategory, GaMetadata.FilterOperator.IsEqual, "tablet")
        .OrFilterBy(GaMetadata.Dimensions.PlatformDevice.DeviceCategory, GaMetadata.FilterOperator.IsEqual, "mobile")
        .SortBy(GaMetadata.Metrics.PageTracking.PageViews, true)

    if (result.Success)

        var dt = result.Data.AsDataTable();

        IEnumerable<MyData> entities = result.Data.ToObject<MyData>();

Obtaining a Service Account and Certificate

In order to access the Google Analytics Reporting API you must generate a service account using the Google Developers Console ( Within the console you need to create a project and generate a new "Client ID" credential with the "Service Account" application type.

Once created you will receive a certificate key file and an email address (this is your service account id).