Crawler and AI-referral visit totals, a per-source breakdown and the daily timeseries behind it.
GET
https://api.usenotra.com
/
v1
/
projects
/
{projectId}
/
geo
/
traffic
/
overview
Get AI traffic totals and sources
curl --request GET \
--url https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview', 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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview",
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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview"
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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview")
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{
"configured": true,
"totals": {
"crawler": 123,
"cited": 123,
"aiReferral": 123,
"conversions": 123
},
"previousConversions": 123,
"sources": [
{
"source": "<string>",
"visitorType": "crawler",
"agent": "<string>",
"category": "<string>",
"confidence": "<string>",
"visits": 123,
"markdownVisits": 123,
"paths": 123,
"lastSeenAt": "<string>",
"previousVisits": 123
}
],
"points": [
{
"day": "<string>",
"visitorType": "crawler",
"source": "<string>",
"visits": 123
}
],
"organization": {
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"logo": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}Authorizations
Send your API key in the Authorization header as Bearer API_KEY.
Path Parameters
Minimum string length:
1Pattern:
^[A-Za-z0-9_-]{1,100}$Example:
"b1f2c3d4-0000-4000-8000-000000000000"
Query Parameters
Rolling window size in days. Ignored when from/to are set.
Required range:
1 <= x <= 365Pattern:
^\d{4}-\d{2}-\d{2}$Example:
"2026-01-31"
Pattern:
^\d{4}-\d{2}-\d{2}$Example:
"2026-01-31"
Response
Traffic overview fetched successfully
False when the traffic backend is not configured for this deployment; the payload is then empty rather than an error.
Show child attributes
Show child attributes
Conversions in the previous window of the same length. Null when no conversion paths are set or no comparison data exists.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Last modified on September 18, 2026
Was this page helpful?
⌘I
Get AI traffic totals and sources
curl --request GET \
--url https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview', 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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview",
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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview"
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.usenotra.com/v1/projects/{projectId}/geo/traffic/overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/projects/{projectId}/geo/traffic/overview")
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{
"configured": true,
"totals": {
"crawler": 123,
"cited": 123,
"aiReferral": 123,
"conversions": 123
},
"previousConversions": 123,
"sources": [
{
"source": "<string>",
"visitorType": "crawler",
"agent": "<string>",
"category": "<string>",
"confidence": "<string>",
"visits": 123,
"markdownVisits": 123,
"paths": 123,
"lastSeenAt": "<string>",
"previousVisits": 123
}
],
"points": [
{
"day": "<string>",
"visitorType": "crawler",
"source": "<string>",
"visits": 123
}
],
"organization": {
"id": "<string>",
"slug": "<string>",
"name": "<string>",
"logo": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}