Batch Screenshot a List of URLs From a Google Sheet
Keep your URLs in a Google Sheet and capture the whole list in one parallel pass — with Zapier's native Rendex Submit Batch action. Send the column, get a Batch ID, poll with Get Batch Status, and store the finished images. No per-URL loop, no code. (Batch is a Rendex Starter-plan feature.)
Last updated 2026-07-21
The Problem
Screenshotting one URL in a Zap is easy; screenshotting a list of them is where no-code stalls. Zapier has no clean native loop, so people end up firing the trigger once per row, hitting task limits and rate caps, and waiting for dozens of sequential captures to crawl through. The alternatives — a custom script with a queue, or a bulk screenshot tool bolted on — are exactly the infrastructure a Zapier user is trying to avoid.
The Solution
Rendex's native Submit Batch action takes the whole list at once. Gather the URL column from your Google Sheet into a newline-separated list, hand it to the action, and Rendex captures every page in parallel and returns a Batch ID instantly — no fan-out, no loop step. The Get Batch Status search then polls that ID until the results are ready, and you file the images to Drive, a sheet, or Slack. It's no-code and runs on a schedule. Note that batch is a Rendex Starter-plan feature — the free tier is single-render — with a per-batch cap that scales by plan (Starter 25, Pro 100, Enterprise 500 URLs), separate from your Zapier plan.
How the Workflow Runs
Gather URLs
Schedule by Zapier fires, and a Google Sheets step collects the URL column into a newline-separated list.
Rendex — Submit Batch
The native action sends the whole list in one call. Rendex captures them in parallel and returns a Batch ID immediately — no per-URL loop to build in Zapier.
Poll + store
The Get Batch Status search checks the Batch ID until it's complete, then you file the finished images to Drive, a sheet, or Slack.
Input → Rendered Output

Rendered by Rendex
What You Need
- A Rendex API key on a paid plan — batch is a Starter+ feature (Starter 25 URLs per batch, Pro 100, Enterprise 500); the free tier is single-render and returns a 403 on batch.
- A Zapier account with the Rendex app connected (search "Rendex" in the app directory, add your key once).
- A Google Sheet (or Airtable) holding the URL list, plus a step to collect the column into a newline-separated list.
- A destination for the finished images: Google Drive, a sheet, or Slack — reached after the Get Batch Status search reports complete.
What This Recipe Uses
Native Submit Batch action
No per-URL loop and no custom webhook — the Rendex Submit Batch action takes a whole newline-separated list and captures every page in parallel, returning one Batch ID.
Parallel capture, submit-then-poll
The action returns the Batch ID immediately (nothing to wait on in the step); the Get Batch Status search then polls that ID until the results are ready — so a big list never blocks the Zap.
Get Batch Status search
Check progress and pull the finished results by Batch ID with the built-in search — put it in a short poll or a delayed follow-up Zap, then file the images downstream.
Plan-aware limits, clear errors
Batch is a Rendex Basic+ feature with a per-batch cap by plan (25 / 100 / 500). Over the limit or on a free key, Rendex returns a clear 403 PLAN_UPGRADE_REQUIRED rather than failing silently.
Build It
# Zapier — action config (no code). Batch = Rendex Basic+.
Trigger: Schedule by Zapier — Every Day
Step: Google Sheets — Lookup Spreadsheet Rows (get the URL column)
Action: Rendex — Submit Batch
URLs: {{ Sheets: URLs (one per line) }}
Output Format: PNG
Full Page: true
=> returns Batch ID
Action: Rendex — Get Batch Status (search — poll the Batch ID)
Batch ID: {{ Rendex: Batch ID }}
Next: Google Drive — Upload File(s) for each finished result# Submit Batch posts the list with shared defaults and returns a Batch ID.
curl -X POST https://api.rendex.dev/v1/screenshot/batch \
-H "Authorization: Bearer rdx_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://a.example.com",
"https://b.example.com",
"https://c.example.com"
],
"defaults": { "format": "png", "fullPage": true }
}'
# => { "data": { "batchId": "batch_...", "status": "processing", "totalJobs": 3 } }
#
# Then the Get Batch Status search polls GET /v1/batches/{batchId} until done.
# Batch is a Starter+ feature; a free key or an over-limit list (Starter 25,
# Pro 100, Enterprise 500) returns 403 PLAN_UPGRADE_REQUIRED.100 free API calls/month — no credit card required. Get your API key and start building.
Reach for this whenever the thing you need pictures of is a whole list, not one page — a competitive set you snapshot weekly, every landing page before a launch, a portfolio of client sites for a monthly report. The reason to batch instead of looping is throughput and simplicity: one Submit Batch call captures the entire set in parallel and hands back a single Batch ID, so you skip Zapier's awkward per-row fan-out and the task-count and rate-limit problems that come with it. The pattern is submit-then-poll: the action returns immediately with the Batch ID (nothing to wait on in the step), and the Get Batch Status search — which you can put in a short polling loop or a delayed second Zap — reports progress and the finished results. From there it's ordinary delivery: file the images to a dated Drive folder, write URLs back to the sheet, or post a summary to Slack. Two honest constraints: batch is a Rendex Starter-plan feature (the free tier does single renders and returns a 403 upgrade error), and the number of URLs per batch is capped by plan — 25 on Starter, 100 on Pro, 500 on Enterprise — separate from whatever Zapier plan you're on. For a recurring set inside those limits, it turns a spreadsheet column into a folder of screenshots on a schedule.