▪ Free plan: 3 websites with daily snapshots, no card required → ▪ ▪ Free plan: 3 websites, no card →

Bulk download

Need all screenshots for a monitor within a date range? You have two options: use the bulk export endpoint (returns a ZIP), or paginate through snapshots and download each file individually. Here's the export approach:

bash
# Export all September screenshots as ZIP (fastest method)
curl -X POST "https://api.snapshotarchive.com/v1/monitors/42/export" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "captured_after=2026-09-01&captured_before=2026-09-30&include=screenshot" \
  -o september-screenshots.zip

For more control (e.g., custom file naming), paginate through the snapshots list and download individually:

python
import os, requests

API_KEY = 'YOUR_API_KEY'
BASE = 'https://api.snapshotarchive.com/v1'
headers = {'Authorization': f'Bearer {API_KEY}', 'Accept': 'application/json'}

os.makedirs('./screenshots', exist_ok=True)
page = 1
while True:
    resp = requests.get(f'{BASE}/monitors/42/snapshots', headers=headers,
        params={'captured_after': '2026-09-01', 'captured_before': '2026-09-30',
                'status': 'completed', 'per_page': 20, 'page': page}).json()

    for snap in resp['data']:
        url = snap['files']['screenshot_url']
        if url:
            img = requests.get(url)
            date = snap['captured_at'][:10]
            with open(f"./screenshots/{date}-{snap['id'][:8]}.png", 'wb') as f:
                f.write(img.content)

    if page >= resp['meta']['last_page']:
        break
    page += 1
Respect rate limits. Each download counts as an API request. For large archives, the ZIP export endpoint is more efficient.