A command-line interface and Python API wrapper for Google Analytics.
Switch branches/tags
Nothing to show
Clone or download
debrouwere Bump version number. This version contains a backwards-incompatible c…
…hange: some column names have changed, e.g. page_path_level4 to page_path_level_4.
Latest commit 7d585c2 Sep 8, 2017
Failed to load latest commit information.
bin Change cli from gash to googleanalytics. Switch cli from argparse to … Nov 9, 2014
docs Fix shell command when IPython is not present. Jun 27, 2015
examples Housekeeping: remove lingering whitespace. May 21, 2015
googleanalytics Add additional metadata to reports. Sep 8, 2017
.gitignore Housekeeping: remove lingering whitespace. May 21, 2015
.gitmodules Remove outdated roadmap. Nov 11, 2014
.travis.yml Remove caveat about having to manually update to the latest version o… May 17, 2015
LICENSE Change package metadata. Slight tweak to our Flask single_serve. Fix … Nov 5, 2014
MANIFEST.in Fix #14: realtime.yml column information now in the manifest. Jun 27, 2015
Makefile By default, test on Python 3. Sep 14, 2016
README.rst Update README. Sep 14, 2016
ROADMAP.md Housekeeping: remove lingering whitespace. May 21, 2015
sandbox.example.env Housekeeping: remove lingering whitespace. May 21, 2015
setup.py Bump version number. This version contains a backwards-incompatible c… Sep 8, 2017


Google Analytics for Python and the command-line

Build Status

google-analytics takes the pain out of working with the Google Analytics reporting APIs. It supports both the Core and the Real Time API. It is written in Python but there's also a full-featured command-line interface.

  • Authentication. OAuth2 is a bit of a pain and we've made it easier, both for interactive use and for server applications. We can also save your credentials in the operating system's keychain if you want to.
  • Querying. Easier to query per week, month or year. Query using metric IDs or using their full names, whichever you think is nicer. Work with both the Core and the Real Time APIs.
  • Reporting. Generate reports from the command-line. Optionally describe reports and queries in easy-to-read and easy-to-write YAML files. Reports in Python work better too: iterate through the entire report or column-per-column.
  • Exploration. Traverse the account hierarchy from account to webproperty to profile to dimensions, both programmatically and with the included command-line interface.
  • Exports. Clean JSON and CSV – as well as Pandas data frames – so you can analyze the data in anything from Excel to R.

This package is built on top of Google's own API client for Python.


First, install the package using pip

  • Python 2: pip install googleanalytics
  • Python 3: pip3 install googleanalytics

Then, create a new project in the Google Developers Console, enable the Analytics API under "APIs & auth > APIs" and generate credentials for an installed application under "APIs & auth > Credentials". Keep this page open. For more detail, look at the wiki page on authentication.

After that, executing your first query is as easy as

import googleanalytics as ga
accounts = ga.authenticate()
profile = accounts[0].webproperties[0].profile
pageviews = profile.core.query.metrics('pageviews').range('yesterday').value

Or on the command-line, that'd be:

googleanalytics --identity <identity> --account <account> --webproperty <webproperty> \
    query pageviews --start yesterday

The account, webproperty and profile determine what data you'll be querying. Learn more about profiles and querying on the Querying wiki page, or alternatively look at the Common Queries page for lots of examples. Read more about how to work with the resulting data in Working With Reports. On The Command-Line has more details about the command-line application.

The example above will authorize the app and authenticate you interactively. It is also possible to pass credentials as arguments in Python, using environment variables or from your operating system's keychain. Authentication is treated in much more depth on the authentication wiki page.