Features Full Page Screenshot Wait for Selector & Delay Block Cookie Banners Custom Viewport & Device Website to PDF HTML to Image Dark Mode Image Format & Quality MCP Server Webhook Pricing Docs Blog Log In Sign Up

Zapier Screenshot API — Automate Captures Without Code

Vitalii Holben Vitalii Holben

The Zapier screenshot API connection gives any team automated web page captures without writing a line of code. Marketing wants competitor screenshots every Monday morning? Sales needs prospect website snapshots when new leads land in a spreadsheet? Normally that means setting up a Node.js server, installing Puppeteer, managing headless Chrome in Docker. For a non-technical team, that's a wall.

Zapier removes it. You wire a trigger (a schedule, a new row in Google Sheets, a form submission) to the ScreenshotRun API through Zapier's built-in Webhooks action, and captures start flowing without touching a terminal.

How the Zapier screenshot API connection works

There's no dedicated ScreenshotRun app in the Zapier marketplace. You don't need one. The built-in Webhooks by Zapier action sends a GET request straight to our endpoint. Paste the URL, add your API key as a header, pick your parameters. Zapier handles scheduling, retries, and error logging on its end.

The request under the hood:

GET https://api.screenshotrun.com/v1/screenshots/capture?url=https://example.com&format=png&width=1280&full_page=true

Authorization: Bearer YOUR_API_KEY

Standard HTTP GET. No SDK, no library, no package.json. Zapier's webhook action assembles this request from form fields you fill in. That's the entire technical layer between you and a screenshot.

Set up your first Zapier website screenshot

From zero to a working Zap in about five minutes. You'll need a ScreenshotRun API key (grab one free from the dashboard, no credit card required).

Step 1. Create a new Zap. Pick any trigger. For testing, "Schedule by Zapier" set to daily or hourly works well.

Step 2. Add an action step. Search for Webhooks by Zapier. In the "Choose event" dropdown, pick Custom Request, then click Continue.

Step 3. Configure the request:

  • Method: GET
  • URL: https://api.screenshotrun.com/v1/screenshots/capture?url=https://example.com&format=png&width=1280
  • Headers: set the key to Authorization and the value to Bearer YOUR_API_KEY

Replace https://example.com with the site you want to capture. Dynamic values work here too: if a Google Sheets row contains a URL, drag that field right into the URL parameter.

Step 4. Test the step. Zapier sends the request and you'll get back image bytes by default. Most downstream Zapier steps (Google Drive upload, email attachment) can handle image data directly. If you need structured metadata instead, add response_type=json to the query string and you'll receive a JSON response with a links.image URL you can pass around.

Step 5. Add a follow-up action. Save the screenshot to Google Drive, post it in a Slack channel, attach it to an Airtable record, or email it. The links.image URL from the JSON response works as a direct link in any step that accepts a URL.

Turn the Zap on. Done.

Five ways to automate website screenshots with Zapier

These aren't hypothetical. Each maps to a pattern we've seen users actually build.

1. Daily competitor monitoring to Slack

Schedule trigger fires at 9 AM. Webhooks by Zapier hits the API with your competitor's homepage URL. Next step posts the screenshot to a #competitor-intel Slack channel. Your team sees what changed overnight without opening a browser.

We ran something like this internally, tracking five competitor landing pages. Caught a pricing drop we would have completely missed without the daily capture. That alone paid for the setup time ten times over. If you're doing this for structured competitor monitoring, there's a deeper guide on that page.

2. New Google Sheets row triggers a screenshot saved to Drive

Your sales team fills in a "URL" column with prospect websites. The New Spreadsheet Row trigger fires, Webhooks grabs that URL and sends it to the API. Second action: upload the screenshot to a shared Drive folder.

Drop a URL into the sheet, and a couple minutes later there's a full-page screenshot sitting in Drive. No tab-switching, no manual captures.

3. Form submission captures the page automatically

When someone submits a bug report or onboarding form with a website URL, Zapier fires immediately. The webhook captures that exact page. Third step attaches the screenshot to a Notion page, Trello card, or support email.

This one saves a surprising amount of back-and-forth. Instead of "can you send a screenshot?" followed by "which page?" followed by "can you try again, that image was blurry?", your support team gets pixel-perfect visual context from the first touch.

4. Weekly visual status report by email

Every Friday at 5 PM, this Zap grabs full-page screenshots of your key pages (homepage, pricing, product page) and emails them to your team or client. Agencies love it. Clients get a visual progress update every week, automatically, and nobody has to open a browser to grab screenshots by hand.

5. New blog post becomes its own OG image

An RSS trigger or CMS webhook fires when you publish a new post. The API captures that URL at 1200 pixels wide with resize_width=1200&resize_height=630 to get the exact OG image dimensions social platforms expect. Third step pushes the image URL back to your CMS. Your actual rendered page becomes the OG preview image. Skip Canva entirely.

Screenshot API parameters for Zapier workflows

Every parameter goes into the URL query string. In Zapier's webhook config, you can either append them directly to the URL or use the "Query String Params" fields. Same result either way.

ParameterTypeDefaultWhat it does in your Zap
urlstringThe page to capture (accepts dynamic Zapier fields)
formatstringpngpng, jpeg, webp, avif, or pdf
widthinteger1280Browser window width (px)
heightinteger720Browser window height (px)
full_pagebooleanfalseScreenshot the full page, not just the visible area
devicestringdesktopEmulate desktop, mobile, or tablet
dark_modebooleanfalseForce dark color scheme
block_cookiesbooleanfalseStrip GDPR consent overlays
block_adsbooleanfalseHide ad banners and scripts
block_chatsbooleanfalseRemove live chat bubbles
delayinteger0Pause N milliseconds before capturing
selectorstringCrop to one CSS element
resize_widthintegerResize output to exact pixel width

Those thirteen parameters handle most Zapier workflows. The complete API reference covers extras like geolocation, stealth mode, and PDF margins if you need them.

Handling errors and rate limits in Zapier

Zapier retries failed webhook steps automatically, up to three times over a few minutes. If the target site is temporarily down or the API returns a 5xx error, the retry usually sorts it out.

Rate limits (429 responses) get the same treatment. On the free tier you get roughly 6-7 captures per day. If your Zap runs more often than that, a paid plan makes sense. The Starter at $9/month covers 5,000 captures, which handles most Zapier workflows unless you're monitoring hundreds of URLs daily.

One thing to watch: Zapier's webhook action enforces a 30-second timeout. Most screenshots finish in 3-8 seconds, so this rarely matters. But heavy single-page apps with a lot of client-side rendering can take longer. For those edge cases, use the webhook callback parameter. The API sends the finished screenshot to a Zapier Catch Hook URL when it's ready, sidestepping the timeout completely. Honestly, for a 10-URL-a-day workflow, you'll probably never hit this limit.

No-code screenshot automation: Zapier vs custom code

Straight talk: if you're a developer building screenshot capture into a product, write code. Use one of our language integrations (Node.js, Python, PHP, Go, Java, Ruby, cURL) and you get full control over error handling, caching, and retry logic.

Zapier makes sense when:

  • The person setting it up isn't a developer (marketing, sales, ops)
  • You need a workflow running in minutes, not hours
  • Volume is low to moderate: a few dozen to a few hundred captures per day
  • The trigger lives in another SaaS tool and you don't want to build a connector from scratch

Where Zapier gets expensive is volume. Each Zap execution counts against your Zapier plan, and at hundreds of runs per day, that bill grows fast. For bulk processing (50+ URLs in one batch), a script calling the API directly costs less and runs faster.

Zapier + ScreenshotRunCode + ScreenshotRun
Setup time5 minutes15-30 minutes
Technical skillNoneBasic HTTP knowledge
Best forWorkflow triggers (schedule, form, spreadsheet)Product features, batch jobs
Error handlingZapier's built-in retriesCustom logic
Cost at scaleZapier plan + API planAPI plan only
FlexibilityZapier's UI and connectorsAnything HTTP supports

Most teams start with Zapier to validate the workflow, then migrate to code once it becomes a core product feature. Both use the same API endpoint, so switching over means changing the HTTP caller, nothing else.

Automate website screenshots with Zapier

Connect your first Zap to the ScreenshotRun API in under five minutes. The free tier covers 200 monthly captures with no credit card, more than enough to test every workflow on this page.

Get Your Free API Key

Frequently asked questions

No. Zapier's Webhooks module sends a GET request to the ScreenshotRun API on your behalf. You configure the URL, paste your API key, and Zapier handles the rest — no code required.
Not yet. Use the built-in Webhooks by Zapier action with Custom Request. It works with any API, including ScreenshotRun, without installing additional apps.
Zapier enforces a 30-second timeout on webhook calls. Most screenshots finish in 3-8 seconds. For heavy pages, use the webhook_url parameter so ScreenshotRun sends the result to a Zapier Catch Hook URL asynchronously.
Yes. Add full_page=true to the request URL in your Zap. ScreenshotRun scrolls the entire page and returns one tall image. You can combine this with parameters like format, width, and dark_mode.
Use the New Spreadsheet Row trigger in Google Sheets. In the Webhooks step, drag the URL field from the trigger into the url parameter of the request. Zapier automatically substitutes the value from each new row.