Portafolio Servicios Clientes Nosotros Blog Contacto

How to get a list of most popular pages from Google Analytics in Python?

Foto del autor: Vera Mazhuga

Let's look at how to get a list of most popular pages from Google Analytics using Python (Django).

Let's suppose that we have a website and we want to show in our home page a list of 10 most visited pages of our website for the last month.

Create a project in Google Analytics and obtain a tracking code

Firstly, we need to create a project in
Google Analytics and obtain a code to place on all pages of our website.

Go to
Google Analytics website and enter the Admin section:

Then you'll need to create a new property for your account:

Enter a data related to your website: name, url, category and a timezone:

The you need to copy your tracking code and include it to all pages of your website:

Create a project in Google Console and get a secret key

Then we'll need to enter a
Google Console and create a new project:

Then we'll need to activate Google Analytics API for our project:

Next, we'll create a new client ID:

Since we are planning to connect in "offline" mode (via Python code), we'll select a
Service account:

Right after clicking on "Create Client ID" button, we'll get file "
.p12" with a secret code:

And email that we'll use to connect to API via our Python code:

Allow access to Google Analytics

Since we have a "
...@developer.gserviceaccount.com" email, we can add it to the list of users that can have access to Analytics of our website:

The last thing we need to do on this step is to copy the ID of our project from Google Analytics:

Getting data from Python code

In order to be able to access
Google Analytics API from our Python code firstly, we need to install the following packages: google-api-python-client, oauth2client and python-gflags.

import httplib2
import os
import datetime
from django.conf import settings
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials
# Email of the Service Account.
SERVICE_ACCOUNT_EMAIL ='12345@developer.gserviceaccount.com'
# Path to the Service Account's Private Key file.
def get_analytics():
key = f.read()
credentials = SignedJwtAssertionCredentials(
http = httplib2.Http()
http = credentials.authorize(http)
service = build('analytics', 'v3', http=http)
end_date = datetime.date.today()
# 30 days ago
start_date = end_date - datetime.timedelta(days=30)
data_query = service.data().ga().get(**{
'ids': 'ga:123456', # the code of our project in Google Analytics
'dimensions': 'ga:pageTitle,ga:pagePath',
'metrics': 'ga:pageviews,ga:uniquePageviews',
'start_date': start_date.strftime('%Y-%m-%d'),
'end_date': end_date.strftime('%Y-%m-%d'),
'sort': '-ga:pageviews',
analytics_data = data_query.execute()
return analytics_data

You can experiment with different query options using
Google Analytics Query Explorer.

Image was taken from NASA.

Domingo es tu día para empezar

Hemos ayudado cientos de empresas a transformar su negocio. ¡Comencemos a transformar el tuyo!

Carrera 13 # 98 - 70 OF 204
Bogotá - Colombia