Get overview metrics
const url = 'https://dashboard.justcrawl.io/api/v1/analytics/overview';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://dashboard.justcrawl.io/api/v1/analytics/overview \ --header 'Authorization: Bearer <token>'Headline metrics for the dashboard’s overview card — total requests, success rate, p50/p95 latency, total spend, freshness timestamp. Org-scoped.
This is a cached read populated by the analytics service on its own cadence
(typically every 1–5 minutes). When the cache is cold (new org, never-rolled window,
or post-Redis-restart), the endpoint returns a zeroed object rather than 404 so the
dashboard renders empty state without a second probe. Use latestDataAt to tell
“no activity” from “cache not ready.”
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Lookback window in hours (default 24, max 720 = 30 days). Out-of-range values clamp to the default rather than 400.
Responses
Section titled “ Responses ”Overview metrics for the organization (zeroed object when cache is cold).
object
Example generated
{ "totalRequests": 1, "successCount": 1, "successRate": 1, "avgLatencyMs": 1, "p95LatencyMs": 1, "totalCost": 1, "latestDataAt": "2026-04-15T12:00:00Z"}Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Insufficient permissions for this operation
object
Example
{ "error": "No organization. Complete onboarding first."}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}