Dokumentation
Bläddra i dokumentationen

API code examples

Fetch top pages from the analytics API with curl, JavaScript, Python, PHP, Go and Ruby. Copy working code examples with filters, periods and a Bearer token.

Visa som Markdown

Each example fetches last week's top pages. Keep your token in PRIVATUS_TOKEN.

curl#

sh
curl -G "https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json" \
  --data-urlencode "period=7d" \
  --data-urlencode "limit=20" \
  --data-urlencode 'filters=[["channel","is","organic_search"]]' \
  -H "Authorization: Bearer $PRIVATUS_TOKEN"

JavaScript (Node.js 18+ or the browser's fetch on your server)#

js
const params = new URLSearchParams({
  period: '7d',
  limit: '20',
  filters: JSON.stringify([['channel', 'is', 'organic_search']]),
})
const response = await fetch(
  `https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json?${params}`,
  { headers: { Authorization: `Bearer ${process.env.PRIVATUS_TOKEN}` } },
)
if (!response.ok) throw new Error((await response.json()).error.message)
const { data } = await response.json()
for (const row of data.rows) console.log(row.value, row.pageviews)

Never use an API token in browser code: it would be visible to everyone.

Python#

python
import json, os, requests

response = requests.get(
    "https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json",
    params={"period": "7d", "limit": 20,
            "filters": json.dumps([["channel", "is", "organic_search"]])},
    headers={"Authorization": f"Bearer {os.environ['PRIVATUS_TOKEN']}"},
    timeout=30,
)
response.raise_for_status()
for row in response.json()["data"]["rows"]:
    print(row["value"], row["pageviews"])

PHP#

php
<?php
$query = http_build_query([
    'period' => '7d',
    'limit' => 20,
    'filters' => json_encode([['channel', 'is', 'organic_search']]),
]);
$context = stream_context_create(['http' => [
    'header' => 'Authorization: Bearer ' . getenv('PRIVATUS_TOKEN'),
]]);
$json = file_get_contents("https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json?$query", false, $context);
foreach (json_decode($json, true)['data']['rows'] as $row) {
    echo $row['value'], ' ', $row['pageviews'], PHP_EOL;
}

Go#

go
q := url.Values{}
q.Set("period", "7d")
q.Set("limit", "20")
q.Set("filters", `[["channel","is","organic_search"]]`)

req, _ := http.NewRequest("GET",
    "https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json?"+q.Encode(), nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("PRIVATUS_TOKEN"))

resp, err := http.DefaultClient.Do(req)
if err != nil {
    log.Fatal(err)
}
defer resp.Body.Close()

var body struct {
    Data struct {
        Rows []struct {
            Value     string `json:"value"`
            Pageviews int    `json:"pageviews"`
        } `json:"rows"`
    } `json:"data"`
}
json.NewDecoder(resp.Body).Decode(&body)

Ruby#

ruby
require "net/http"
require "json"

uri = URI("https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/breakdown/page.json")
uri.query = URI.encode_www_form(period: "7d", limit: 20,
                                filters: [["channel", "is", "organic_search"]].to_json)
request = Net::HTTP::Get.new(uri, "Authorization" => "Bearer #{ENV.fetch('PRIVATUS_TOKEN')}")
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(request) }
JSON.parse(response.body)["data"]["rows"].each { |row| puts "#{row['value']} #{row['pageviews']}" }

Writing: add a deploy note#

sh
curl -X POST https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/notes.json \
  -H "Authorization: Bearer $PRIVATUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "Deployed v2.4.0", "date": "2026-09-29", "source": "deploy"}'

Check the reference for each operation's exact fields. The official SDKs for Node.js, Python, PHP, Go and Ruby wrap these calls too.