Get Search Console top pages
curl --request GET \
--url https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"page": "<string>",
"source": "<string>",
"clicks": 123,
"impressions": 123,
"ctr": 123,
"position": 123,
"clicksChange": 123,
"impressionsChange": 123,
"ctrChange": 123,
"positionChange": 123
}
]
}Google Search Console
Top Pages
Get your best-performing pages in search results.
GET
/
v3
/
integrations
/
gsc
/
website-traffic
/
top-pages
Get Search Console top pages
curl --request GET \
--url https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/gsc/website-traffic/top-pages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"page": "<string>",
"source": "<string>",
"clicks": 123,
"impressions": 123,
"ctr": 123,
"position": 123,
"clicksChange": 123,
"impressionsChange": 123,
"ctrChange": 123,
"positionChange": 123
}
]
}Get your best-performing pages in search results.
Visitor counts need
analyticsProvider set to the brand’s connected analytics integration (ga, posthog, plausible or snow). Sorting by visitors without it returns 400.
Shared parameters and response fields are described on Google Search Traffic.Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Query Parameters
Team ID
Days back from today on the team's calendar, converted to startDate/endDate. Ignored when startDate or endDate is set. Defaults to 30.
Required range:
x >= 1Start date (YYYY-MM-DD)
End date (YYYY-MM-DD)
Country filter
Device filter
Search appearance/type filter
Maximum rows to return
Optional keyword filters
Connected analytics integration to read page visitors from: ga (Google Analytics), posthog, plausible or snow (Snow Analytics). Without it, rows carry no visitor counts, and sorting by visitors returns 400.
Available options:
ga, posthog, plausible, snow 1-based page. Default 1.
Rows per page (max 1000), or 'all'. Every response reports total and totalPages.
Available options:
page, visitors, clicks, impressions, ctr, position, clicksChange, impressionsChange, ctrChange, positionChange Available options:
asc, desc Available options:
Top Pages, Growing, Decaying Response
200 - application/json
Default Response
Show child attributes
Show child attributes
Was this page helpful?

