Bulk HTTP Request — API Calls, JSON & Headers avatar

Bulk HTTP Request — API Calls, JSON & Headers

Pricing

from $0.70 / 1,000 http request answereds

Go to Apify Store
Bulk HTTP Request — API Calls, JSON & Headers

Bulk HTTP Request — API Calls, JSON & Headers

Send a list of HTTP requests (GET, POST, PUT, PATCH, DELETE) in one run: one row per request with status, response headers, parsed JSON or text body and timing. $1.00 per 1,000 requests answered + $0.001/run.

Pricing

from $0.70 / 1,000 http request answereds

Rating

0.0

(0)

Developer

Tagada Data

Tagada Data

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Bulk HTTP Request: API calls from a list, JSON and headers

Send many HTTP requests in one run and get one dataset row per request: status, response headers, the body as parsed JSON (or text), timing and redirects. Built for no-code and automation work (Clay, n8n, Make, Zapier, spreadsheets) where you have a list of ids or URLs and an API to call for each.

What you get per request

fieldmeaning
label, method, urlyour input, so rows match your records
finalUrl, redirectswhere the request ended after redirects, and how many hops
status, statusText, okthe HTTP answer (ok = 2xx)
headersresponse headers as an object
jsonthe body as real data when the response is JSON (parseJson on)
textthe body as text otherwise (or when parseJson is off)
contentType, bytes, truncatedbody type, bytes read, and true when it was cut at maxBodyKb
timingMs, attemptstime to the full body, and tries used
error, errorMessagea named reason when no HTTP answer came back (see below)

Request headers are never copied into the output.

Input

  • Requests: a list of {url, method, headers, body, label} objects. Only url is required. An object body is sent as JSON.
  • URLs: a plain list that shares the Method, Headers and Body fields. Both lists can be used together (up to 10,000 requests per run).
  • Method: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS (default GET).
  • Follow redirects (default on, max 10 hops), timeout per request (default 30 s), retries (default 1), concurrency (default 5, max 20), parse JSON (default on), max stored body (default 1,024 KB).

Retries happen only after a network error, HTTP 429 or a 5xx answer, with back-off; a Retry-After header is honoured up to 10 s. Other 4xx answers are never retried. A retried POST can reach the server twice, so set Retries to 0 for calls that must not repeat.

Errors you can see in a row (no HTTP answer)

TIMEOUT, DNS_ERROR, CONNECTION_REFUSED, CONNECTION_RESET, TLS_ERROR, NETWORK_ERROR, TOO_MANY_REDIRECTS, SSRF_REFUSED, SCHEME_NOT_ALLOWED, INVALID_URL, INVALID_ROW. These rows are free.

Safety

  • Public addresses only. A request whose host resolves to a private, loopback, link-local or cloud-metadata address (127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16, ::1, fc00::/7, fe80::/10, 0.0.0.0 and similar) is refused with SSRF_REFUSED, checked after DNS resolution and again on every redirect hop. Only http and https are allowed.
  • Secrets stay out of the log. Authorization, Cookie, *key*, *token* and similar header values are masked in logs, and URLs are logged without their query string.
  • Requests go out directly from the Apify platform. There is no proxy option.

Pricing

Pay per event, we pay the compute:

  • $1.00 per 1,000 requests that got an HTTP answer (any status code, including 404 and 500: you got an answer). Cheaper on higher Apify plans.
  • $0.001 per run.
  • Not charged: network failures, timeouts, refused private addresses, invalid rows.

If the run's charge limit is reached the run stops cleanly, says so in its status message, and the rows already delivered are kept.

Run status

The run ends with a message such as DELIVERED: 18 of 20 request(s) answered: 15 x 2xx, 3 x 4xx; the 2 that got no answer were not charged. A run where every request failed at network level ends FAILED with the reason; invalid input ends SUCCEEDED with an Input error: ... message and no request is sent.

Example

{
"method": "GET",
"headers": { "Accept": "application/json" },
"urls": [
"https://jsonplaceholder.typicode.com/todos/1",
"https://jsonplaceholder.typicode.com/todos/2"
]
}

Limits: responses are read up to maxBodyKb; binary content types (images, PDFs, archives) are counted in bytes but not stored. No cookies are kept between requests. Use only on services you are allowed to call.