Get the site-wide GEO audit result
curl --request GET \
--url https://api.snowseo.com/v3/geo-audit/site \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/geo-audit/site"
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/geo-audit/site', 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/geo-audit/site",
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/geo-audit/site"
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/geo-audit/site")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/geo-audit/site")
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{
"audit": {
"domain": "<string>",
"overallScore": 123,
"payload": {},
"updatedAt": "2023-11-07T05:31:56Z"
},
"auditStatus": "running"
}Website Analysis
GEO Audit
Read the latest site-wide GEO audit and its AI-readiness score.
GET
/
v3
/
geo-audit
/
site
Get the site-wide GEO audit result
curl --request GET \
--url https://api.snowseo.com/v3/geo-audit/site \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.snowseo.com/v3/geo-audit/site"
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/geo-audit/site', 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/geo-audit/site",
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/geo-audit/site"
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/geo-audit/site")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.snowseo.com/v3/geo-audit/site")
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{
"audit": {
"domain": "<string>",
"overallScore": 123,
"payload": {},
"updatedAt": "2023-11-07T05:31:56Z"
},
"auditStatus": "running"
}Get the latest stored GEO audit for your team’s website. The response is
{ audit, auditStatus }: audit holds domain, overallScore, payload (the checks), and updatedAt (or null when nothing is stored), and auditStatus is running, idle, or failed. Pass your teamId; url is optional and defaults to the team’s configured website. Set scoreOnly=true to omit the checks; the response still includes domain, overallScore, updatedAt (inside audit, or audit: null when nothing is stored) and auditStatus.
To start or refresh an audit, call POST /v3/geo-audit/site with teamId and, optionally, url. For your brand’s own site this returns 202 with { queued: true, status: "running" } and runs in the background, so read this endpoint again after it completes. Auditing any other site runs inline, returns the result directly, and uses 1 page audit (402 if your allowance is exhausted). Your team’s first read may also start a free audit automatically when no result exists yet.
This endpoint reads a site-wide audit, not an on-demand audit of a single page. Use the GEO page endpoints for page-level results.
Authorizations
bearerAuthapiKey
Your SnowSEO API key (sk_...).
Query Parameters
SnowSEO team ID, as returned by list_teams.
Minimum string length:
1Optional site URL. Defaults to the team's configured website.
Return only the overall score and run status, without the payload of checks behind it. A failed rerun is not reported while an earlier audit is stored. Defaults to false.
Was this page helpful?

