HTTP Request Runner: Bulk API Calls, Retries, Proxies avatar

HTTP Request Runner: Bulk API Calls, Retries, Proxies

Pricing

from $2.00 / 1,000 requests

Go to Apify Store
HTTP Request Runner: Bulk API Calls, Retries, Proxies

HTTP Request Runner: Bulk API Calls, Retries, Proxies

HTTP request runner and API request runner: send bulk API calls (GET, POST, PUT, PATCH, DELETE, HEAD) from a list, in parallel, with retries and backoff, optional proxy, per-request headers, body, auth and JSON picking. One dataset row per HTTP request with status, timing and body.

Pricing

from $2.00 / 1,000 requests

Rating

0.0

(0)

Developer

Data Done Right

Data Done Right

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

This HTTP request runner sends a list of API calls for you: bulk API calls with GET, POST, PUT, PATCH, DELETE or HEAD, run in parallel, with automatic retries and backoff, optional proxies, per-request headers, body and auth, and JSON field picking. You get one dataset row per request with the status code, timing, attempts and the response body. Use it as an API request runner for webhooks, data syncs, health checks, API testing and AI agents that need to call an API and get structured results back.

What can you do with an API request runner

  • Bulk API calls from a list. Paste hundreds or thousands of requests, or just a list of URLs for bulk GETs. Up to 50 run at the same time.
  • Retries with exponential backoff. Network errors, timeouts and 429/500/502/503/504 are retried, and a Retry-After header is honored. POST and PATCH are retried only when that is safe (connection errors, 429, 503), so a request is not applied twice.
  • Any method, header, body and auth. JSON, form or raw bodies, query params, bearer tokens, basic auth and API-key headers per request.
  • Secret headers. Put API keys in secretHeaders. They are stored encrypted by Apify, sent with every request, and never logged or written to the dataset (even if the API echoes them back).
  • Pick fields with JSON paths. Return only what you need, for example {"title": "$.title", "ids": "$.items[*].id"}.
  • Proxies. Route calls through Apify Proxy or your own proxies; each retry uses a new IP.
  • Safe by default. Requests to localhost, private networks, link-local and cloud-metadata addresses are blocked, including through DNS tricks and redirects. Redirects are followed manually (up to a limit you set) and re-checked at every hop. Credentials are dropped when a redirect leaves the original host.
  • Never crashes on a bad URL. A failing request becomes a row with an error, and the rest of the batch continues.

How to send bulk API calls

  1. Add your calls to Requests (a JSON array), or paste URLs into Or a list of URLs (bulk GET).
  2. Put tokens in Secret headers, for example {"Authorization": "Bearer YOUR_TOKEN"}.
  3. Optionally set Pick fields from JSON responses, Retries, Concurrency and Proxy.
  4. Run it and download the rows as JSON, CSV or Excel, or read them through the Apify API.

Input example

{
"requests": [
{"url": "https://jsonplaceholder.typicode.com/todos/1", "pick": {"title": "$.title", "completed": "$.completed"}},
{"url": "https://api.example.com/items", "method": "POST", "json": {"name": "demo"}, "id": "create-demo"},
{"url": "https://api.example.com/search", "params": {"q": "apify", "limit": 5}, "auth": {"bearer": "token"}}
],
"urls": ["https://jsonplaceholder.typicode.com/users/1"],
"secretHeaders": {"X-Api-Key": "YOUR_KEY"},
"retries": 3,
"concurrency": 10
}

Each request accepts url, method, headers, params, json / body / form, auth, pick and your own id. A plain URL string also works as a request.

Output

{
"index": 0,
"url": "https://jsonplaceholder.typicode.com/todos/1",
"method": "GET", "statusCode": 200, "ok": true, "durationMs": 374, "attempts": 1,
"finalUrl": "https://jsonplaceholder.typicode.com/todos/1", "redirects": 0,
"contentType": "application/json", "bodyType": "json", "bodySize": 83, "bodyTruncated": false,
"body": {"userId": 1, "id": 1, "title": "delectus aut autem", "completed": false},
"picked": {"title": "delectus aut autem", "completed": false},
"error": null
}
  • ok is true for a 2xx response. error is filled for HTTP errors (HTTP 404), timeouts, network errors, blocked destinations and invalid input.
  • body is parsed JSON when the response is JSON, otherwise text. Binary responses (images, PDFs, archives) return bodyType: "binary" without the content. Bodies larger than Max response body size are cut and marked bodyTruncated.
  • Turn on Include response headers to add responseHeaders to each row.
  • A SUMMARY record in the key-value store counts ok and failed requests and the status codes.

JSON path syntax for picking fields

$.a.b, $.items[0], $.items[-1], $.items[*].id, $.data.*, $.items[1:3] and $..name (any depth). Missing fields return null. Picking works on JSON responses only.

HTTP request API for AI agents and workflows

Call this Actor from the Apify API, Python, JavaScript, Make, Zapier or n8n and use it as a managed HTTP client: your workflow sends a batch of requests and gets one clean result per request, with retries, proxy rotation and safe-network checks handled for you.

Use it in Claude, ChatGPT and Cursor

Connect Apify's MCP server (mcp.apify.com) and your AI assistant can call APIs and read the results itself. For example: "call these 50 endpoints, retry failures, and give me the status and the version field from each." The main input is requests, with urls as a shortcut for bulk GETs.

Use cases

  • API testing and monitoring: hit endpoints on a schedule and check status codes and response times.
  • Bulk data fetching: call a REST API for thousands of IDs without writing a loop.
  • Webhooks and syncs: POST records to your system with retries.
  • Link and status checks: HEAD a list of URLs and collect status codes.
  • AI agents: a safe way to let an agent make HTTP calls.

How much does it cost

Pay per event: $0.0025 per request (request). You are charged once per request, not per retry, and invalid requests (bad input, or a URL written directly as a private or internal address) are free. A hostname that only resolves to a private address, or a redirect into one, is blocked but still counts as a request. 1,000 requests cost about $2.50. Apify Silver plans get 10% off, Gold and higher 20%.

FAQ

How do I send many API requests at once?

Put them in Requests (or paste URLs in the URLs list) and set Concurrency (default 10, up to 50). The Actor runs them in parallel and returns one row per request, with an index that matches your input position.

Is this a Postman or curl-loop alternative?

Yes, for bulk work. Instead of a Postman collection runner or a shell loop around curl, you send a list of requests and get one result row per request, with retries, backoff, optional proxies and picked JSON fields included. You pay per request with no start fee, and there is nothing to host.

Are retries charged?

No. The price is per request. Retries, backoff waits and redirects are included.

Are my API keys safe?

Put them in Secret headers. Apify stores that field encrypted, and the Actor never writes it to the log or the dataset. If an API echoes your key in its response, the value is replaced by ***.

Can it call localhost or internal services?

No. Private networks, localhost, link-local and cloud-metadata addresses are blocked, also after DNS resolution and on every redirect. This keeps the Actor from being used to reach internal infrastructure.

Does it retry POST requests?

Only when it is safe: connection errors, 429 and 503. Turn on Retry POST and PATCH on any failure if your API is idempotent.

What happens when a request fails?

It becomes a row with ok: false and an error. The run continues and still succeeds.

Can it handle large responses?

Responses are cut at Max response body size (1 MB by default, up to 4 MB) and marked bodyTruncated. Binary content is not returned.

Do I need a proxy?

Usually not for APIs. Turn on Proxy when a site blocks datacenter traffic or rate-limits by IP.

  • Google Sheets Import & Export: Apify Data, No Login: send results to a Google Sheet.
  • Slack Notifications: Send Data to Slack, Discord & Email: alert your team when a check fails.