Get Search Console search queries
curl --request GET \
--url https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries"
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/search-queries', 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/search-queries",
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/search-queries"
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/search-queries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries")
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": [
{
"query": "<string>",
"pages": 123,
"rankedPages": [
{}
],
"clicks": 123,
"impressions": 123,
"ctr": 123,
"position": 123,
"clicksChange": 123,
"impressionsChange": 123,
"ctrChange": 123,
"positionChange": 123
}
],
"total": 123,
"returned": 123,
"summary": {
"previousTotal": 123,
"isCapped": true,
"previousIsCapped": true,
"top3": 123,
"range4to10": 123,
"range11to20": 123,
"range21to49": 123,
"range50to100": 123,
"range100plus": 123
},
"coverage": {
"startDate": "<string>",
"endDate": "<string>",
"latestAvailableDate": "<string>",
"firstProvisionalDate": "<string>",
"includesProvisional": true,
"isEstimated": true,
"timeZone": "<string>"
}
}Google Search Console
Search Queries
Get the search queries driving traffic to your site, sorted by clicks.
GET
/
v3
/
integrations
/
gsc
/
website-traffic
/
search-queries
Get Search Console search queries
curl --request GET \
--url https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries"
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/search-queries', 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/search-queries",
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/search-queries"
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/search-queries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/integrations/gsc/website-traffic/search-queries")
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": [
{
"query": "<string>",
"pages": 123,
"rankedPages": [
{}
],
"clicks": 123,
"impressions": 123,
"ctr": 123,
"position": 123,
"clicksChange": 123,
"impressionsChange": 123,
"ctrChange": 123,
"positionChange": 123
}
],
"total": 123,
"returned": 123,
"summary": {
"previousTotal": 123,
"isCapped": true,
"previousIsCapped": true,
"top3": 123,
"range4to10": 123,
"range11to20": 123,
"range21to49": 123,
"range50to100": 123,
"range100plus": 123
},
"coverage": {
"startDate": "<string>",
"endDate": "<string>",
"latestAvailableDate": "<string>",
"firstProvisionalDate": "<string>",
"includesProvisional": true,
"isEstimated": true,
"timeZone": "<string>"
}
}Get the search queries driving traffic to your site, sorted by clicks.
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
Embed each row's ranking page URLs and their metrics inside the row (multiplies the payload by the number of URLs per row). Defaults to false; the pages count is always returned.
1-based page. Default 1.
Rows per page (max 1000), or 'all'. Every response reports total and totalPages.
Available options:
query, clicks, impressions, ctr, position, pages, clicksChange, impressionsChange, ctrChange, positionChange Available options:
asc, desc Available options:
Top, Growing, Decaying, Long Tail, Questions Available options:
top3, 4-10, 11-20, 21-49, 50-100, 100+ Was this page helpful?

