Search Console
Pages
The pages Google sent traffic to, most clicked first.
curl --request GET \
--url 'https://truestat.io/api/v1/sites/{siteId}/search/pages' \
--header 'Authorization: Bearer <token>'{
"data": [
{
"ctr": 0.0399,
"path": "/tools/youtube-title-checker",
"clicks": 72,
"hostname": "codivupload.com",
"position": 7.11,
"impressions": 1803
}
],
"meta": {
"page": {
"limit": 100,
"offset": 0,
"has_more": true
},
"range": {
"to": "2026-09-16T00:00:00.000Z",
"tz": "UTC",
"from": "2025-09-16T00:00:00.000Z",
"clamped": false
},
"site_id": "6fed8980-a119-4a9c-a4d4-53e448ef9f9e"
}
}Your pages ranked by the traffic Google sent them.
Google's figures — see totals for why they do not reconcile with the rest of your analytics.
This is not /breakdowns/path with a filter
The two look alike and rank different things:
Search pages
The pages Google showed in its results, ranked by clicks from Google. A page nobody links to but Google ranks well appears high here.
Breakdowns by path
The pages people actually loaded, from every source. A page that gets all its traffic from a newsletter appears high there and not here at all.
Reading them side by side is where the useful gap shows up: a page with heavy search impressions and little total traffic is ranking without being clicked; a page with heavy traffic and no search presence depends entirely on a channel you do not control.
hostname and path are separate
A Search Console property can cover several subdomains, so the URL is split rather than returned whole.
That way a caller ranking pages across a domain groups on path, and one
auditing which subdomain earns the traffic groups on hostname. Joining them
into one string would force both to parse it apart again.
Position is per page
position here is the impression-weighted mean for that page across every
term it ranked for — not its position for any single term. A page ranking
first for a rare term and fortieth for a common one lands somewhere in
between, weighted towards the common one.
For position by term, use terms.
Authorizations
AuthorizationstringheaderrequiredAn API key from Settings → API keys. Scopes available: analytics:read, sites:read, sites:write, settings:read, settings:write, goals:read, goals:write, funnels:read, funnels:write, notes:read, notes:write, alerts:read, alerts:write, team:read, team:write, revenue:read, revenue:write.
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path parameters
siteIdstring (uuid)pathrequiredQuery parameters
periodenum<string>querytodayyesterdaylast24hlast7dlast30dlast12mmonthyearallfromstring (date-time)querytostring (date-time)querytzstringquerydefault: UTCbotsenum<string>querydefault: excludedexcludedincludedlimitintegerquerydefault: 100offsetintegerquerydefault: 0Response
The answer.
dataunknownmetaobjecterrorobjecterrorobjecterrorobjecterrorobject