curl --request GET \
--url https://api.geoptie.com/v1/brands/{id}/citations/trends \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.geoptie.com/v1/brands/{id}/citations/trends"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.geoptie.com/v1/brands/{id}/citations/trends', 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.geoptie.com/v1/brands/{id}/citations/trends",
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.geoptie.com/v1/brands/{id}/citations/trends"
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.geoptie.com/v1/brands/{id}/citations/trends")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geoptie.com/v1/brands/{id}/citations/trends")
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{
"data": {
"target": {
"type": "domain",
"value": "<string>",
"is_own_domain": true
},
"series": [
{
"date": "2023-12-25",
"citations": 123,
"avg_position": 123,
"brand_total_citations": 123,
"share": 123
}
],
"summary": {
"citations": 123,
"avg_position": 123,
"share": 123,
"brand_total_citations": 123,
"change": {
"absolute": 123,
"percentage": 123
}
}
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Citation trend for one domain or page
Daily citation counts for a single target, with the brand’s total for the same days so you get share as well as volume. Pass url for one exact page, domain for a root domain (subdomains roll up), or neither to get the brand’s own domain, i.e. how often engines cite you. Days the brand did not run are omitted; days it ran without citing the target are zero.
curl --request GET \
--url https://api.geoptie.com/v1/brands/{id}/citations/trends \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.geoptie.com/v1/brands/{id}/citations/trends"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.geoptie.com/v1/brands/{id}/citations/trends', 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.geoptie.com/v1/brands/{id}/citations/trends",
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.geoptie.com/v1/brands/{id}/citations/trends"
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.geoptie.com/v1/brands/{id}/citations/trends")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geoptie.com/v1/brands/{id}/citations/trends")
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{
"data": {
"target": {
"type": "domain",
"value": "<string>",
"is_own_domain": true
},
"series": [
{
"date": "2023-12-25",
"citations": 123,
"avg_position": 123,
"brand_total_citations": 123,
"share": 123
}
],
"summary": {
"citations": 123,
"avg_position": 123,
"share": 123,
"brand_total_citations": 123,
"change": {
"absolute": 123,
"percentage": 123
}
}
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Your API key, e.g. Authorization: Bearer gp_live_....
Path Parameters
Brand id.
Query Parameters
Root domain to trend. Mutually exclusive with url.
Exact page URL to trend. Mutually exclusive with domain.
Restrict to one engine. Omit for the all-engine rollup. Stable public engine identifier. Internal model names are never exposed.
chatgpt, claude, perplexity, gemini, google_ai_overviews, google_ai_mode, copilot Restrict to prompts in one topic.
Inclusive start date. Defaults to 30 days before to.
Exclusive end date. Defaults to tomorrow.
Response
Success
Show child attributes
Show child attributes