Zapier web scraping — scrape a site, route into a Zap
DiffHook handles the scraping and the diff. Your Zap receives a signed webhook with the extracted text and the raw HTML fragment every time the page changes — no Code step, no third-party scraping add-on.
Teams normally scrape into Zapier with Schedule by Zapier + Webhooks GET + Code by Zapier + some Formatter gymnastics. That stack is fragile: Zapier truncates response bodies above 6MB, regex in a Code step ages badly, and every poll burns a task. DiffHook moves the fetch, rendering, and diff outside Zapier — the Zap only receives real changes and already-extracted fields.
Workflow
Scrape into Zapier in 5 steps
Standard Catch Hook trigger. No Code step, no premium app, no response-size surprises.
Start a Zap with a Catch Hook
Pick Webhooks by Zapier → Catch Hook. Zapier hands you a unique URL — this becomes the delivery destination in DiffHook.
Describe the scrape in a DiffHook monitor
Set type to html_css, supply the URL and the CSS selector that isolates the element you care about. Add include_html: true when the Zap needs the raw markup as well as the extracted text.
Register the monitor with the Catch Hook
POST to /v1/monitors with the scrape config, an interval, and the Zapier URL as a webhook delivery. DiffHook takes over polling, caching, and diff detection immediately.
Verify and filter inside Zapier
Add a Filter step that checks the X-DiffHook-Signature header against your signing secret. Optionally filter on the extracted_text or url so one Zap can cover several monitors.
Map fields into downstream actions
Zapier auto-parses the JSON body, so extracted_text, previous_value, current_value, and url are available as named fields. Drop them into a Slack message, a Google Sheets row, or an Airtable record.
API example
Scrape into a Zap, one POST
include_html: true sends the raw HTML fragment alongside the extracted text — useful when the Zap has to parse a list of items.
POST https://api.diffhook.com/v1/monitors
Authorization: Bearer $DIFFHOOK_API_KEY
Content-Type: application/json
{
"type": "html_css",
"url": "https://directory.example.com/listings",
"css_selector": "article.listing",
"include_html": true,
"interval_seconds": 900,
"deliveries": [
{
"type": "webhook",
"url": "https://hooks.zapier.com/hooks/catch/000000/scrape123/"
}
]
}Importable workflow
Copy a ready-made Zap
Template Zap includes the Catch Hook, the signature-check Filter, a Formatter step that cleans up the text, and a Slack destination. Import, paste your keys, publish.
FAQ
Zapier web scraping — common questions
Do I need Code by Zapier to handle the scraped payload?
Can DiffHook scrape JavaScript-rendered pages for my Zap?
What about pagination and infinite scroll?
How do I avoid duplicate Zap runs when the diff is tiny?
Is there a limit on the scraped payload size?
Related workflows
Also great with DiffHook
Zapier webhook
Bare-bones change-to-Zap pattern — same Catch Hook, no HTML scraping side.
n8n web scraping
Prefer self-hosted automation? Same DiffHook monitor, n8n webhook as the destination.
Make.com web scraping
Low-code alternative to Zapier with similar webhook ergonomics. Same DiffHook payload.
n8n + Playwright
Playwright-rendered scraping for JS-heavy sites, routed into n8n workflows.
n8n + Puppeteer
Puppeteer-rendered scraping — sometimes gets past bot protection where Playwright doesn't.
Replace a scraping script
Migrating a cron + scraper? See what the managed monitor looks like compared side-by-side.
Scrape into Zapier without touching Code by Zapier
Managed scraper, extracted text + raw HTML, HMAC-signed Catch Hooks, free tier. One POST to get going.