Stats API

Create a key under Account settings → API keys and send it as Authorization: Bearer … . The query format follows Plausible's Stats API v1 for the common subset.

GET /api/v1/stats/realtime/visitors?site_id=example.com
GET /api/v1/stats/aggregate?site_id=example.com&period=30d&metrics=visitors,pageviews,bounce_rate
GET /api/v1/stats/timeseries?site_id=example.com&period=30d&metrics=visitors
GET /api/v1/stats/breakdown?site_id=example.com&period=30d&property=visit:source&limit=10

Parameters

Parameter Notes
site_id The site's domain. Required
period day, 7d, 30d, month, 6mo, 12mo, year or custom. Default 30d
date YYYY-MM-DD for the period's anchor. For custom: YYYY-MM-DD,YYYY-MM-DD
metrics Comma-separated: visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration. Default visitors
filters See below
interval Timeseries only. One of the intervals allowed for the period
compare aggregate only. previous_period adds a change percentage
property breakdown only. See below
limit, page breakdown only. limit is 1 to 1000, default 100

Days begin and end in the site's timezone.

Responses

{ "results": { "visitors": { "value": 1423 }, "pageviews": { "value": 3320 } } }

timeseries  returns results  as a list of { "date": …, "visitors": … }  rows. breakdown  returns a list of rows keyed by the property name, for example { "source": "Google", "visitors": 310 } . realtime/visitors  returns a number.

Filters

Join clauses with ; . Separate alternative values with | .

filters=visit:country==DE|FR;event:page==/blog/*
Operator Meaning
== is (* is a wildcard)
!= is not
=~ contains

Dimensions: event:page , event:goal , event:props:NAME , visit:entry_page , visit:exit_page , visit:source , visit:referrer , visit:channel , visit:utm_medium , visit:utm_source , visit:utm_campaign , visit:utm_content , visit:utm_term , visit:country , visit:region , visit:city , visit:browser , visit:os , visit:device .

Breakdown properties

Any dimension above except event:goal  and event:props:*  works as property .

Errors

Status Reason
401 Missing or invalid key
404 Unknown site, or you don't have access to it
422 Unsupported period or property, or a malformed custom date

Note:

The dashboard's own JSON endpoints under /api/sites/{domain}/stats/…  are internal and may change between releases. Build on /api/v1/stats .