Find an API

Search public APIs with auth details & Postman guides

← All APIs

Google Analytics API

googleapis · Analytics

Analytics No Auth Free & Open analytics media

Views and manages your Google Analytics data.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET analytics.data.ga.get

Returns Analytics data for a view (profile).

https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&output=dataTable&userIp=example&filters=example&metrics=example&segment=example&end-date=2024-12-31&quotaUser=example&dimensions=example&start-date=2024-01-01&max-results=1&oauth_token=example&prettyPrint=true&start-index=1&samplingLevel=DEFAULT&include-empty-rows=true

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&output=dataTable&userIp=example&filters=example&metrics=example&segment=example&end-date=2024-12-31&quotaUser=example&dimensions=example&start-date=2024-01-01&max-results=1&oauth_token=example&prettyPrint=true&start-index=1&samplingLevel=DEFAULT&include-empty-rows=true"
import requests
params = {
    "alt": "json",
    "ids": "example",
    "key": "YOUR_API_KEY",
    "sort": "desc",
    "fields": "example",
    "output": "dataTable",
    "userIp": "example",
    "filters": "example",
    "metrics": "example",
    "segment": "example",
    "end-date": "2024-12-31",
    "quotaUser": "example",
    "dimensions": "example",
    "start-date": "2024-01-01",
    "max-results": "1",
    "oauth_token": "example",
    "prettyPrint": "true",
    "start-index": "1",
    "samplingLevel": "DEFAULT",
    "include-empty-rows": "true"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga');
url.searchParams.set('alt', 'json');
url.searchParams.set('ids', 'example');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('sort', 'desc');
url.searchParams.set('fields', 'example');
url.searchParams.set('output', 'dataTable');
url.searchParams.set('userIp', 'example');
url.searchParams.set('filters', 'example');
url.searchParams.set('metrics', 'example');
url.searchParams.set('segment', 'example');
url.searchParams.set('end-date', '2024-12-31');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('dimensions', 'example');
url.searchParams.set('start-date', '2024-01-01');
url.searchParams.set('max-results', '1');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');
url.searchParams.set('start-index', '1');
url.searchParams.set('samplingLevel', 'DEFAULT');
url.searchParams.set('include-empty-rows', 'true');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("ids", "example")
	q.Set("key", "YOUR_API_KEY")
	q.Set("sort", "desc")
	q.Set("fields", "example")
	q.Set("output", "dataTable")
	q.Set("userIp", "example")
	q.Set("filters", "example")
	q.Set("metrics", "example")
	q.Set("segment", "example")
	q.Set("end-date", "2024-12-31")
	q.Set("quotaUser", "example")
	q.Set("dimensions", "example")
	q.Set("start-date", "2024-01-01")
	q.Set("max-results", "1")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	q.Set("start-index", "1")
	q.Set("samplingLevel", "DEFAULT")
	q.Set("include-empty-rows", "true")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "ids" => "example",
  "key" => "YOUR_API_KEY",
  "sort" => "desc",
  "fields" => "example",
  "output" => "dataTable",
  "userIp" => "example",
  "filters" => "example",
  "metrics" => "example",
  "segment" => "example",
  "end-date" => "2024-12-31",
  "quotaUser" => "example",
  "dimensions" => "example",
  "start-date" => "2024-01-01",
  "max-results" => "1",
  "oauth_token" => "example",
  "prettyPrint" => "true",
  "start-index" => "1",
  "samplingLevel" => "DEFAULT",
  "include-empty-rows" => "true"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/ga?" . http_build_query([
    "alt" => "json",
    "ids" => "example",
    "key" => "YOUR_API_KEY",
    "sort" => "desc",
    "fields" => "example",
    "output" => "dataTable",
    "userIp" => "example",
    "filters" => "example",
    "metrics" => "example",
    "segment" => "example",
    "end-date" => "2024-12-31",
    "quotaUser" => "example",
    "dimensions" => "example",
    "start-date" => "2024-01-01",
    "max-results" => "1",
    "oauth_token" => "example",
    "prettyPrint" => "true",
    "start-index" => "1",
    "samplingLevel" => "DEFAULT",
    "include-empty-rows" => "true"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET analytics.data.mcf.get

Returns Analytics Multi-Channel Funnels data for a view (profile).

https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&userIp=example&filters=example&metrics=example&end-date=2024-12-31&quotaUser=example&dimensions=example&start-date=2024-01-01&max-results=1&oauth_token=example&prettyPrint=true&start-index=1&samplingLevel=DEFAULT

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&userIp=example&filters=example&metrics=example&end-date=2024-12-31&quotaUser=example&dimensions=example&start-date=2024-01-01&max-results=1&oauth_token=example&prettyPrint=true&start-index=1&samplingLevel=DEFAULT"
import requests
params = {
    "alt": "json",
    "ids": "example",
    "key": "YOUR_API_KEY",
    "sort": "desc",
    "fields": "example",
    "userIp": "example",
    "filters": "example",
    "metrics": "example",
    "end-date": "2024-12-31",
    "quotaUser": "example",
    "dimensions": "example",
    "start-date": "2024-01-01",
    "max-results": "1",
    "oauth_token": "example",
    "prettyPrint": "true",
    "start-index": "1",
    "samplingLevel": "DEFAULT"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf');
url.searchParams.set('alt', 'json');
url.searchParams.set('ids', 'example');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('sort', 'desc');
url.searchParams.set('fields', 'example');
url.searchParams.set('userIp', 'example');
url.searchParams.set('filters', 'example');
url.searchParams.set('metrics', 'example');
url.searchParams.set('end-date', '2024-12-31');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('dimensions', 'example');
url.searchParams.set('start-date', '2024-01-01');
url.searchParams.set('max-results', '1');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');
url.searchParams.set('start-index', '1');
url.searchParams.set('samplingLevel', 'DEFAULT');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("ids", "example")
	q.Set("key", "YOUR_API_KEY")
	q.Set("sort", "desc")
	q.Set("fields", "example")
	q.Set("userIp", "example")
	q.Set("filters", "example")
	q.Set("metrics", "example")
	q.Set("end-date", "2024-12-31")
	q.Set("quotaUser", "example")
	q.Set("dimensions", "example")
	q.Set("start-date", "2024-01-01")
	q.Set("max-results", "1")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	q.Set("start-index", "1")
	q.Set("samplingLevel", "DEFAULT")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "ids" => "example",
  "key" => "YOUR_API_KEY",
  "sort" => "desc",
  "fields" => "example",
  "userIp" => "example",
  "filters" => "example",
  "metrics" => "example",
  "end-date" => "2024-12-31",
  "quotaUser" => "example",
  "dimensions" => "example",
  "start-date" => "2024-01-01",
  "max-results" => "1",
  "oauth_token" => "example",
  "prettyPrint" => "true",
  "start-index" => "1",
  "samplingLevel" => "DEFAULT"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/mcf?" . http_build_query([
    "alt" => "json",
    "ids" => "example",
    "key" => "YOUR_API_KEY",
    "sort" => "desc",
    "fields" => "example",
    "userIp" => "example",
    "filters" => "example",
    "metrics" => "example",
    "end-date" => "2024-12-31",
    "quotaUser" => "example",
    "dimensions" => "example",
    "start-date" => "2024-01-01",
    "max-results" => "1",
    "oauth_token" => "example",
    "prettyPrint" => "true",
    "start-index" => "1",
    "samplingLevel" => "DEFAULT"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET analytics.data.realtime.get

Returns real time data for a view (profile).

https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&userIp=example&filters=example&metrics=example&quotaUser=example&dimensions=example&max-results=1&oauth_token=example&prettyPrint=true

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime?alt=json&ids=example&key=YOUR_API_KEY&sort=desc&fields=example&userIp=example&filters=example&metrics=example&quotaUser=example&dimensions=example&max-results=1&oauth_token=example&prettyPrint=true"
import requests
params = {
    "alt": "json",
    "ids": "example",
    "key": "YOUR_API_KEY",
    "sort": "desc",
    "fields": "example",
    "userIp": "example",
    "filters": "example",
    "metrics": "example",
    "quotaUser": "example",
    "dimensions": "example",
    "max-results": "1",
    "oauth_token": "example",
    "prettyPrint": "true"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime');
url.searchParams.set('alt', 'json');
url.searchParams.set('ids', 'example');
url.searchParams.set('key', 'YOUR_API_KEY');
url.searchParams.set('sort', 'desc');
url.searchParams.set('fields', 'example');
url.searchParams.set('userIp', 'example');
url.searchParams.set('filters', 'example');
url.searchParams.set('metrics', 'example');
url.searchParams.set('quotaUser', 'example');
url.searchParams.set('dimensions', 'example');
url.searchParams.set('max-results', '1');
url.searchParams.set('oauth_token', 'example');
url.searchParams.set('prettyPrint', 'true');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime")
	q := baseURL.Query()
	q.Set("alt", "json")
	q.Set("ids", "example")
	q.Set("key", "YOUR_API_KEY")
	q.Set("sort", "desc")
	q.Set("fields", "example")
	q.Set("userIp", "example")
	q.Set("filters", "example")
	q.Set("metrics", "example")
	q.Set("quotaUser", "example")
	q.Set("dimensions", "example")
	q.Set("max-results", "1")
	q.Set("oauth_token", "example")
	q.Set("prettyPrint", "true")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime")
uri.query = URI.encode_www_form({
  "alt" => "json",
  "ids" => "example",
  "key" => "YOUR_API_KEY",
  "sort" => "desc",
  "fields" => "example",
  "userIp" => "example",
  "filters" => "example",
  "metrics" => "example",
  "quotaUser" => "example",
  "dimensions" => "example",
  "max-results" => "1",
  "oauth_token" => "example",
  "prettyPrint" => "true"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/googleapis.com/analytics/v3/data/realtime?" . http_build_query([
    "alt" => "json",
    "ids" => "example",
    "key" => "YOUR_API_KEY",
    "sort" => "desc",
    "fields" => "example",
    "userIp" => "example",
    "filters" => "example",
    "metrics" => "example",
    "quotaUser" => "example",
    "dimensions" => "example",
    "max-results" => "1",
    "oauth_token" => "example",
    "prettyPrint" => "true"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with Google Analytics API?

Google Analytics API is a Analytics API. Developers commonly use analytics APIs for:

  • tracking product usage and user behaviour
  • building custom reporting and BI dashboards
  • measuring marketing and campaign performance
  • running funnel, retention, and cohort analysis
  • aggregating metrics from multiple data sources

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Google Analytics API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗