curl --request GET \
--url https://app.get3rd.com/api/export/v1/citation-share \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.get3rd.com/api/export/v1/citation-share"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.get3rd.com/api/export/v1/citation-share', 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://app.get3rd.com/api/export/v1/citation-share",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://app.get3rd.com/api/export/v1/citation-share"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.get3rd.com/api/export/v1/citation-share")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.get3rd.com/api/export/v1/citation-share")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2023-12-25",
"url": "<string>",
"is_owned": true,
"citations": 123,
"owned_citations": 123,
"domain": "<string>"
}
],
"pagination": {
"pageSize": 123,
"hasMore": true,
"nextCursor": "<string>"
},
"meta": {
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromDate": "2023-11-07T05:31:56Z",
"toDate": "2023-11-07T05:31:56Z",
"plan": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Citation Share per URL per day
The citations behind the Citation Share metric, one row per date × URL. Counts the citations the Overview Citation Share card counts: error answers, answers to retired prompts and answers to prompts that don’t count in metrics are left out; branded prompts count. Citation Share for any window is sum(owned_citations) / sum(citations) × 100 over that window’s rows, so the headline and the URLs behind it come from the same rows. Differs from /citations in two ways that keep the sums equal to the card: a citation is dated by the answer that made it rather than by when the citation was recorded, and ownership is counted per citation rather than once per URL and day.
curl --request GET \
--url https://app.get3rd.com/api/export/v1/citation-share \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.get3rd.com/api/export/v1/citation-share"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.get3rd.com/api/export/v1/citation-share', 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://app.get3rd.com/api/export/v1/citation-share",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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://app.get3rd.com/api/export/v1/citation-share"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.get3rd.com/api/export/v1/citation-share")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.get3rd.com/api/export/v1/citation-share")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"date": "2023-12-25",
"url": "<string>",
"is_owned": true,
"citations": 123,
"owned_citations": 123,
"domain": "<string>"
}
],
"pagination": {
"pageSize": 123,
"hasMore": true,
"nextCursor": "<string>"
},
"meta": {
"brandId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fromDate": "2023-11-07T05:31:56Z",
"toDate": "2023-11-07T05:31:56Z",
"plan": "<string>"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Export API key, format 3rd_live_<64 hex characters>. Created under Settings → Looker Studio.
Query Parameters
Brand to report on, from GET /api/export/v1/brands. A brand outside the key's organization, or outside the brands the key is pinned to, returns 404.
Start of the window, inclusive (YYYY-MM-DD). Defaults to 30 days ago. Clamped to the plan's lookback window without an error, so read meta.fromDate for the window actually applied.
End of the window, inclusive (YYYY-MM-DD). Defaults to now.
Opaque cursor from the previous response's pagination.nextCursor. Omit for the first page.