Skip to content

Guide · Make and Zapier

Zapier and Make web scraping: HTTP steps and iterators

Zapier and Make.com web scraping for public pages: the generic HTTP step, looping over a URL list, rate limits, failure routing and a comparison with n8n.

Guide

This article was drafted with AI assistance from the sources listed below and edited and published by Teneo Labs. Disclosure: this site is run by Teneo Labs, the company behind Live Web Data API, which this article mentions.

Page collection in three automation tools
CriterionMakeZapiern8n
Generic HTTP stepHTTP > Make a requestWebhooks by Zapier > Custom RequestHTTP Request node
Loop over a listIteratorLooping by ZapierOne item per URL, Loop Over Items
PacingSleep module, schedulingDelay by ZapierBatching option, Wait node
Route failuresFilters, Router, error handlersFilter, PathsIF node, error output
Plan noteOperations count per module runWebhooks not on Free planSelf-host or Cloud plans

Make and Zapier are not scraping tools. They are glue: a trigger, a few steps, an output. That is exactly why they work well for collecting a known list of public pages, as long as the page fetch itself is one clean HTTP call. This guide covers that call in both tools, how each one loops over a list, where each one fails quietly, and how they compare with n8n.

Make: HTTP > Make a request

Make's HTTP app has a generic Make a request module. For a fetch API that returns page content as JSON, the settings are:

Field (HTTP → Make a request)Value
Authentication typeAPI key (stored in a keychain), or No authentication plus a header
URLthe /v1/contents endpoint from the docs
MethodPOST
HeadersAuthorization = Bearer YOUR_KEY
Body content typeapplication/JSON
Body input methodJSON string
Body content{"urls": ["{{1.url}}"]}
Parse responseYes

With Parse response on, later modules can map statuses[].status, statuses[].error.tag and results[].markdown directly. The exact copy-paste values are in the no-code recipes.

Zapier: Webhooks by Zapier > Custom Request

Zapier's Webhooks by Zapier app offers GET, POST and PUT events plus Custom Request. It is not available on the Free plan, and Zapier caps action payloads at 5 MB.

Field (Custom Request)Value
MethodPOST
URLthe /v1/contents endpoint from the docs
Data Pass-Through?False
Data{"urls": ["https://example.com/changelog"]}
HeadersAuthorization = Bearer YOUR_KEY, Content-Type = application/json

The JSON response becomes fields you can use in the next step. Keep the page short with "text": {"maxCharacters": 8000} if the next step is a model or a Sheets cell, which has its own size limit.

Lists and rate limits

Both tools run one module per item, and both will happily send requests faster than an API allows.

In Make, the URL list usually arrives as an array: rows from Google Sheets > Search Rows, records from Airtable, or a text field split into lines. Put an Iterator in front of the HTTP module. Make's docs describe it as a module that "converts an array into a series of bundles", so each URL becomes its own bundle and its own request. To stay under a rate limit, add the Tools > Sleep module after the HTTP module, or split a long list across several scheduled runs.

In Zapier, a Zap normally handles one trigger event at a time. For a list in a single run, use Looping by Zapier on line items or text, then the Custom Request. Pacing is coarser: Delay by Zapier or, more simply, one Zap run per row (a "New or Updated Spreadsheet Row" trigger) so Zapier's own queue spreads the calls out.

Either way, check your rate limit with GET /v1/account before a large run. Sending 10 URLs in one request is allowed and counts as 10 against the rate limit, which counts URLs, not requests, so batching URLs does not make a job faster than your plan allows.

Routing failures

Failed pages come back inside a 200 response with statuses[0].status set to error. Both tools treat that as success unless you look.

  • Make: add a Filter after the HTTP module (statuses[].status equal to success) on the main path, and a Router branch for errors that writes the URL and error.tag to an error sheet. For request-level failures (429, 402), attach an error handler to the HTTP module: Break to retry later, or Ignore to skip and log.
  • Zapier: add a Filter step that only continues on success, or use Paths to send errors to a separate row. Zapier's Zap history marks the run as successful either way, so the error row is your only record.

What to retry follows the same policy as every guide on this site: retry 429, 5xx and CRAWL_LIVECRAWL_TIMEOUT up to 3 times with backoff, retry no other per-URL error in the same run, and stop the scenario or Zap on 402, 401 or 403. Never retry RESTRICTED_TARGET. The full table is in the retry rules for URL lists. Failed pages cost 0 credits, but every retry still costs a Make operation or a Zapier task.

Choosing a platform

QuestionMakeZapiern8n
Long lists (hundreds of URLs)Workable with Iterator and schedulingAwkward; one run per row is easiestBest fit, with sub-workflows
Branching on statusRouter and filtersPaths and filtersIF node and error output
What you pay per pageOperations per module runTasks per action stepExecutions (Cloud) or your server
Self-hostingNoNoYes
Easiest for a non-developerVisual, data-heavySimplest for linear flowsMost settings to learn

A practical rule: if the job is "for each new row, fetch one page and summarize it", Zapier is fine. If it is "every morning, fetch 300 pages and route failures", use Make or n8n. If it is thousands of pages, a plain script is cheaper and easier to debug; see scrape a list of URLs.

What this means for your workflow

  • Use the generic HTTP step in both tools; native apps are announced as coming soon.
  • Turn lists into one item per URL: Iterator in Make, one run per row or Looping by Zapier in Zapier.
  • Pace calls below your rate limit and count operations or tasks per page before you schedule.
  • Filter on statuses[0].status; log every error tag to a separate sheet.
  • Move to n8n or a script when the list grows past what one run handles comfortably.

Frequently asked questions

Can Zapier scrape a website?

Zapier can call any HTTP endpoint with Webhooks by Zapier, which is not available on the Free plan. Point a Custom Request at a fetch API that returns page text and use the response fields in later steps. Zapier has no built-in HTML parser, so a fetch API that returns Markdown or text saves a Code step.

How do I scrape a list of URLs in Make?

Get the list as an array (from Google Sheets, Airtable or a text field), put an Iterator before the HTTP module so each URL becomes its own bundle, and keep the pace within your rate limit. Add a filter on the status field after the HTTP module.

Make, Zapier or n8n: which is best for web scraping workflows?

For a short list and simple steps, any of them works. Make handles arrays and branching well and counts operations per module run. Zapier is easiest for linear flows but looping is more limited. n8n can be self-hosted and is the most flexible for long lists and error routing.

Is there a native Make or Zapier app for Live Web Data API?

Not yet. Native integrations are announced as coming soon. Until then, use Make's HTTP > Make a request module or Zapier's Webhooks by Zapier > Custom Request, as shown here.

Sources

  1. HTTP app (Make docs) (Documentation)
  2. Iterator (Make Help Center) (Documentation)
  3. Send webhooks in Zaps (Zapier Help) (Documentation)
  4. Zap limits (Zapier Help) (Documentation)