ScreenshotAPI

Usage API

Endpoints for viewing screenshot logs and account usage statistics.

Screenshot Log

GET /api/v1/usage

Returns the screenshot request history for the authenticated user. Includes both successful and failed requests, ordered by creation date (newest first). Requires session authentication.

Query Parameters

ParameterTypeDefaultDescription
limitnumber50Number of entries to return
offsetnumber0Number of entries to skip (for pagination)

Response

[
  {
    "id": "scr_abc123def456",
    "url": "https://example.com",
    "status": "completed",
    "durationMs": 2340,
    "errorMessage": null,
    "createdAt": "2026-03-24T15:30:00.000Z"
  },
  {
    "id": "scr_ghi789jkl012",
    "url": "https://broken-site.invalid",
    "status": "failed",
    "durationMs": 5012,
    "errorMessage": "Navigation timeout of 30000ms exceeded",
    "createdAt": "2026-03-24T15:25:00.000Z"
  }
]

Fields

FieldTypeDescription
idstringUnique screenshot identifier
urlstringThe URL that was screenshotted
statusstring"completed" or "failed"
durationMsnumberTime taken in milliseconds
errorMessagestring | nullError description if the screenshot failed
createdAtstringISO 8601 timestamp

Example

curl "https://screenshotapi.to/api/v1/usage?limit=20&offset=0" \
  --cookie "session=your_session_cookie"
const params = new URLSearchParams({ limit: '20', offset: '0' })

const response = await fetch(
  `https://screenshotapi.to/api/v1/usage?${params}`,
  { credentials: 'include' }
)

const logs = await response.json()
logs.forEach(entry => {
  const status = entry.status === 'completed' ? '✓' : '✗'
  console.log(`${status} ${entry.url} (${entry.durationMs}ms)`)
})
import requests

response = requests.get(
    "https://screenshotapi.to/api/v1/usage",
    params={"limit": 20, "offset": 0},
    cookies={"session": "your_session_cookie"}
)

for entry in response.json():
    status = "✓" if entry["status"] == "completed" else "✗"
    print(f"{status} {entry['url']} ({entry['durationMs']}ms)")

Usage Statistics

GET /api/v1/usage/stats

Returns aggregate usage statistics for the authenticated user. Requires session authentication.

Response

{
  "totalScreenshots": 1247,
  "last30Days": 342,
  "failedScreenshots": 18,
  "avgDurationMs": 2156
}

Fields

FieldTypeDescription
totalScreenshotsnumberTotal screenshots taken all time
last30DaysnumberScreenshots taken in the last 30 days
failedScreenshotsnumberTotal failed screenshots all time
avgDurationMsnumberAverage duration for successful screenshots in milliseconds

Example

curl "https://screenshotapi.to/api/v1/usage/stats" \
  --cookie "session=your_session_cookie"
const response = await fetch('https://screenshotapi.to/api/v1/usage/stats', {
  credentials: 'include'
})

const stats = await response.json()
console.log(`Total: ${stats.totalScreenshots}`)
console.log(`Last 30 days: ${stats.last30Days}`)
console.log(`Failed: ${stats.failedScreenshots}`)
console.log(`Avg duration: ${stats.avgDurationMs}ms`)
import requests

response = requests.get(
    "https://screenshotapi.to/api/v1/usage/stats",
    cookies={"session": "your_session_cookie"}
)

stats = response.json()
print(f"Total: {stats['totalScreenshots']}")
print(f"Last 30 days: {stats['last30Days']}")
print(f"Failed: {stats['failedScreenshots']}")
print(f"Avg duration: {stats['avgDurationMs']}ms")

Use Cases

  • Dashboard widgets — Display usage at a glance.
  • Monitoring — Track failure rates and alert on spikes.
  • Cost estimation — Use last30Days to project future credit usage.
  • Performance tracking — Monitor avgDurationMs over time to detect regressions.

On this page