Provider comparison
const url = 'https://dashboard.justcrawl.io/api/v1/analytics/providers';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/providers \ --header 'Authorization: Bearer <token>'Per-provider rollup over the window — request count, success rate, p50/p95 latency, cost per provider. Org-scoped, cached read. Only providers this org has actually routed traffic to during the window appear; idle providers are omitted entirely rather than reported as zero rows.
Cache coverage: the analytics service currently pre-populates only the hours=24
key (see services/analytics/src/cache-pusher.ts). Passing other hours values
returns an empty array — deliberate caching budget decision, not a missing-data signal.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”Lookback window in hours (default 24, max 720). Only hours=24 is cache-populated today; other values clamp valid but return empty.
Responses
Section titled “ Responses ”Per-provider rollup (one row per provider the org has used in the window).
object
Example generated
[ {}]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"}