Get Pages
Returns one row per page path or per section, with pageviews, sessions, entries, exits, time on page and bounce rate.
GET /api/sites/:site/pagesReturns the Pages report: one row per path (or per section, the first path segment), with entry, exit, time-on-page and bounce figures computed from the same pass over the site's pageviews. Within the requested time range, a pageview with no earlier pageview in its session is an entry, one with no later pageview is an exit, and one with neither is a bounce.
Permissions: any role on the site (viewer and above). API keys need the analytics:read scope. Public sites and private links can read it without a key.
Path Parameters
Prop
Type
Query Parameters
Accepts all Common Parameters (time and filters). Time parameters are optional; omit them for all-time data.
Prop
Type
section and search can't be combined with group=section; the request is rejected with a 400.
Response
Prop
Type
PageRow Object
Prop
Type
totalCount is the number of rows across all pages of results.
curl -X GET "https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25" \
-H "Authorization: Bearer your_api_key_here"const response = await fetch(
'https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25',
{
headers: {
'Authorization': 'Bearer your_api_key_here'
}
}
);
const data = await response.json();import requests
response = requests.get(
'https://app.rybbit.io/api/sites/123/pages',
params={
'start_date': '2024-01-01',
'end_date': '2024-01-31',
'time_zone': 'America/New_York',
'sort': 'entries',
'limit': 25
},
headers={
'Authorization': 'Bearer your_api_key_here'
}
)
data = response.json()$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer your_api_key_here'
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);require 'net/http'
require 'json'
uri = URI('https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer your_api_key_here'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)req, _ := http.NewRequest("GET", "https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25", nil)
req.Header.Set("Authorization", "Bearer your_api_key_here")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)let client = reqwest::Client::new();
let res = client
.get("https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25")
.header("Authorization", "Bearer your_api_key_here")
.send()
.await?;
let data: serde_json::Value = res.json().await?;HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25"))
.header("Authorization", "Bearer your_api_key_here")
.GET()
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer your_api_key_here");
var response = await client.GetAsync("https://app.rybbit.io/api/sites/123/pages?start_date=2024-01-01&end_date=2024-01-31&time_zone=America/New_York&sort=entries&limit=25");
var data = await response.Content.ReadAsStringAsync();{
"data": {
"data": [
{
"kind": "page",
"key": "/",
"title": "Acme - Home",
"section": "/",
"pages": 1,
"pageviews": 18420,
"sessions": 12950,
"entries": 11230,
"exits": 7410,
"bounced_entries": 5120,
"time_on_page_seconds": 41.6,
"bounce_rate": 45.59
},
{
"kind": "page",
"key": "/pricing",
"title": "Pricing - Acme",
"section": "/pricing",
"pages": 1,
"pageviews": 6210,
"sessions": 4870,
"entries": 1980,
"exits": 2240,
"bounced_entries": 760,
"time_on_page_seconds": 63.2,
"bounce_rate": 38.38
}
],
"totalCount": 214
}
}