Zapier

Connect ScreenshotFreeAPI to 6,000+ apps via Zapier. Use the native REST Hook trigger to receive screenshot completions, or use the HTTP action to capture inside any Zap.

What you can build

  • Screenshot every new row URL in Google Sheets → save PNG to Google Drive
  • Capture a webpage when a form is submitted → attach to CRM contact
  • Monitor competitor pages on a schedule → post screenshot to Slack
  • Take app store screenshots when Airtable gets a new record → attach to the record

Before you begin

You need a ScreenshotFreeAPI account, your API key (for capture requests), and your dashboard session token (for registering the webhook subscription below — these are two different credentials). You also need a Zapier account — the free plan works for this integration.

Option A: REST Hook trigger (recommended)

ScreenshotFreeAPI supports Zapier's REST Hooks pattern. Zapier registers a webhook URL with the API; the API pushes the completion event to Zapier when the job finishes. No polling loop needed.

Setup steps in Zapier:

  1. Create a new Zap → Trigger: "Webhooks by Zapier" → "Catch Hook"
  2. Copy the Zapier webhook URL (e.g. https://hooks.zapier.com/hooks/catch/…)
  3. Register it with ScreenshotFreeAPI using the curl command below
  4. Submit a test screenshot job — Zapier shows the incoming payload
  5. Map jobId and resultUrl to your next step — fetch resultUrl with your API key to get the screenshot
Register Zapier webhook
1# This call is authenticated with your DASHBOARD SESSION TOKEN (JWT from 2# POST /auth/token after logging in) — NOT your API key. The API key is only 3# used for /screenshots/* and /jobs/* capture endpoints. 4curl -X POST https://api.screenshotfreeapi.com/integrations/zapier/subscribe \ 5 -H "Authorization: Bearer $SCREENSHOTFREEAPI_SESSION_TOKEN" \ 6 -H "Content-Type: application/json" \ 7 -d '{ 8 "triggerEvent": "job.completed", 9 "targetUrl": "https://hooks.zapier.com/hooks/catch/123456/abcdef/", 10 "label": "Zapier" 11 }' 12 13# Response — save signingSecret, it's shown once and needed to verify deliveries 14{ 15 "id": "sub_abc123", 16 "triggerEvent": "job.completed", 17 "targetUrl": "https://hooks.zapier.com/...", 18 "active": true, 19 "signingSecret": "whsec_..." 20}

The payload Zapier receives when a job completes:

Completion payload
1// Zapier receives this payload when a job completes (flat shape, no nesting): 2{ 3 "event": "job.completed", 4 "jobId": "job_web_7a91bcd3", 5 "type": "WEB", 6 "status": "completed", 7 "resultUrl": "/jobs/job_web_7a91bcd3/result", 8 "timestamp": "2026-06-03T09:21:04Z" 9} 10 11// resultUrl is a RELATIVE path — fetch it against the API base URL with your 12// API key (not the session token) to get the actual screenshot: 13// GET https://api.screenshotfreeapi.com/jobs/job_web_7a91bcd3/result 14// Authorization: Bearer <your sfa_... API key> 15// 16// Every delivery includes an X-ScreenshotFree-Signature header: 17// t=<unix_ts>,v1=<hex_hmac_sha256 of "{timestamp}.{rawBody}" using your signingSecret> 18// Verify it before trusting the payload — see the SDK pages for verification code.

Option B: Submit via HTTP action

In your Zap, add a Webhooks by Zapier action set to POST, URL https://api.screenshotfreeapi.com/screenshots/web, with header Authorization: Bearer YOUR_KEY and JSON body. The response includes a jobId you can use in subsequent steps or store for later lookup.

Zapier actions have a 30-second timeout. Because screenshots are async, the HTTP action returns the jobId immediately — not the screenshot URL. Use Option A (webhook trigger) to receive the result without polling.