Rybbit
Overview

Get Live Visitors

Returns the count of unique active sessions within the specified time window. Useful for displaying real-time visitor counts.

GET /api/sites/:site/live-user-count

Returns the count of unique active sessions within the specified time window. Useful for displaying real-time visitor counts.

Path Parameters

Prop

Type

Query Parameters

Prop

Type

Response

Prop

Type

Time Window Guide

MinutesUse Case
1Very active visitors (currently browsing)
5Standard "live" count (default)
15Recently active visitors
30Short-term engagement window
Request
curl -X GET "https://app.rybbit.io/api/sites/123/live-user-count?minutes=5" \
  -H "Authorization: Bearer your_api_key_here"
Request
const response = await fetch(
  'https://app.rybbit.io/api/sites/123/live-user-count?minutes=5',
  {
    headers: {
      'Authorization': 'Bearer your_api_key_here'
    }
  }
);

const { count } = await response.json();
console.log(`Live visitors: ${count}`);
Request
import requests

response = requests.get(
    'https://app.rybbit.io/api/sites/123/live-user-count',
    params={'minutes': 5},
    headers={
        'Authorization': 'Bearer your_api_key_here'
    }
)

data = response.json()
print(f"Live visitors: {data['count']}")
Request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.rybbit.io/api/sites/123/live-user-count?minutes=5');
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);
echo "Live visitors: " . $data['count'];
Request
require 'net/http'
require 'json'

uri = URI('https://app.rybbit.io/api/sites/123/live-user-count?minutes=5')
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)
puts "Live visitors: #{data['count']}"
Request
req, _ := http.NewRequest("GET", "https://app.rybbit.io/api/sites/123/live-user-count?minutes=5", 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)
fmt.Printf("Live visitors: %v\n", data["count"])
Request
let client = reqwest::Client::new();
let res = client
    .get("https://app.rybbit.io/api/sites/123/live-user-count?minutes=5")
    .header("Authorization", "Bearer your_api_key_here")
    .send()
    .await?;

let data: serde_json::Value = res.json().await?;
println!("Live visitors: {}", data["count"]);
Request
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://app.rybbit.io/api/sites/123/live-user-count?minutes=5"))
    .header("Authorization", "Bearer your_api_key_here")
    .GET()
    .build();

HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Request
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/live-user-count?minutes=5");
var data = await response.Content.ReadAsStringAsync();
Response
{
  "count": 42
}

Polling Example

Real-time Widget
async function updateLiveCount() {
  const response = await fetch(
    'https://app.rybbit.io/api/sites/123/live-user-count?minutes=5',
    {
      headers: {
        'Authorization': 'Bearer your_api_key'
      }
    }
  );
  const { count } = await response.json();
  document.getElementById('live-visitors')
    .textContent = count;
}

// Update every 15 seconds
setInterval(updateLiveCount, 15000);