HTTP API - Flexible Client for Prototyping and Automation avatar

HTTP API - Flexible Client for Prototyping and Automation

Pricing

from $0.14 / 1,000 results

Go to Apify Store
HTTP API - Flexible Client for Prototyping and Automation

HTTP API - Flexible Client for Prototyping and Automation

Easily test, integrate, and automate APIs—configure method, headers, query params, body, timeout, and retries, no code or setup required. Ideal for rapid prototyping, endpoint monitoring, workflows, and sales & marketing automation.

Pricing

from $0.14 / 1,000 results

Rating

0.0

(0)

Developer

Superlative

Superlative

Maintained by Community

Actor stats

8

Bookmarked

54

Total users

1

Monthly active users

10 days ago

Last modified

Share

HTTP API

Make HTTP requests to any API endpoint. Supports GET, POST, PUT, PATCH, DELETE with custom headers, query parameters, and request bodies.

What does HTTP API do?

HTTP API lets you call any REST API from your Apify workflows — no code required.

  • All HTTP methods — GET, POST, PUT, PATCH, DELETE
  • Custom headers — Authentication tokens, content types, custom headers
  • Query parameters — Build URLs with dynamic parameters
  • Request bodies — Send JSON, form data, or raw payloads
  • Configurable retries — Automatic retry with exponential backoff
  • Response metadata — Optionally capture timing, headers, and retry info
  • Instant API mode — Sub-second HTTP proxying via Standby server

Why use HTTP API?

Sometimes you need to call an external API as part of a workflow — fetch data, trigger a webhook, or update a record. HTTP API handles that without writing code.

Use cases

  • Webhook triggers — POST to Slack, Discord, or custom webhooks
  • API integrations — Call any REST API that doesn't have a dedicated Apify actor
  • Data fetching — GET data from public APIs to enrich your datasets
  • CRM updates — PUT or PATCH records in HubSpot, Salesforce, or custom systems
  • Testing & debugging — Validate API endpoints before building integrations

How to use HTTP API

  1. Enter the API endpoint URL
  2. Select the HTTP method (GET, POST, etc.)
  3. Add headers and query parameters as needed
  4. Click Start and view the response

Simple GET request

{
"method": "GET",
"endpoint": "https://catfact.ninja/fact"
}

Response:

{
"status": 200,
"statusText": "OK",
"response": { "fact": "Cats make about 100 different sounds.", "length": 37 }
}

POST with headers and body

{
"method": "POST",
"endpoint": "https://postman-echo.com/post",
"headers": [
{ "key": "Content-Type", "value": "application/json" },
{ "key": "Authorization", "value": "Bearer your-token" }
],
"body": "{\"message\":\"Hello from Apify!\"}",
"include_meta": true
}

Standby mode (instant API)

Standby mode keeps a warm container running so you get instant HTTP proxying without cold-start delays. Instead of starting a full Actor run, you POST a JSON body describing the request and get results in milliseconds.

This is ideal for:

  • Clay enrichment steps — single API calls inline
  • Make / n8n HTTP modules — real-time API proxying in workflows
  • MCP agents — AI tools that need instant HTTP access

Standby URL

https://superlativetech--http-api.apify.actor?token=YOUR_API_TOKEN

Or use a Bearer token in the Authorization header instead of the token query parameter.

Simple GET proxy

curl -X POST "https://superlativetech--http-api.apify.actor?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"endpoint": "https://catfact.ninja/fact"}'

POST with headers and body

curl -X POST "https://superlativetech--http-api.apify.actor?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"method": "POST",
"endpoint": "https://postman-echo.com/post",
"headers": {"Content-Type": "application/json", "Authorization": "Bearer your-token"},
"body": "{\"message\":\"Hello from Apify!\"}",
"include_meta": true
}'

Request body parameters

ParameterRequiredDefaultDescription
endpointYesTarget API endpoint URL
methodNoGETHTTP method: GET, POST, PUT, PATCH, DELETE
headersNoHTTP headers as {key: value} or [{key, value}]
querystringNoQuery parameters as {key: value} or [{key, value}]
bodyNoRaw request body (JSON string, form data, etc.)
timeoutSecondsNo30Request timeout in seconds
maxRetriesNo3Retry attempts on network failures
response_headersNofalseInclude response headers in output
include_metaNofalseInclude timing and retry metadata

Response format

Success — same shape as batch output:

{
"status": 200,
"statusText": "OK",
"response": { "fact": "Cats make about 100 different sounds.", "length": 37 }
}

Error responses

CodeCause
400Missing endpoint, invalid JSON request body, or invalid JSON in body field
405Non-POST request
502Target endpoint unreachable after all retries

HTTP errors from the target (4xx/5xx) are returned in the response with status code 200 — consistent with batch mode.

How many requests can you make?

Each Actor run makes one HTTP request. For batch requests, run the Actor multiple times or use it within a larger workflow.

How much will it cost you?

This Actor uses pay-per-result pricing:

RequestsCost
1,000$0.20
10,000$2.00
100,000$20.00

Volume discounts apply automatically:

  • Bronze (100+ items): $0.18/1K
  • Silver (1,000+ items): $0.16/1K
  • Gold (10,000+ items): $0.14/1K

Input parameters

ParameterTypeDefaultDescription
endpointstringAPI endpoint URL (required)
methodstringGETHTTP method: GET, POST, PUT, PATCH, DELETE
querystringarray/objectQuery parameters as [{key, value}] or {key: value}
headersarray/objectHTTP headers as [{key, value}] or {key: value}
bodystringRaw request body (JSON string, form data, etc.)
timeoutSecondsinteger30Request timeout in seconds
maxRetriesinteger3Retry attempts on network failures
response_headersbooleanfalseInclude response headers in output
include_metabooleanfalseInclude timing and retry metadata

During the Actor run

The Actor makes the HTTP request and captures the response. If the request fails due to network issues, it retries with exponential backoff up to maxRetries times.

  • HTTP errors (4xx/5xx) — Returned in the dataset with status code; does not fail the Actor
  • Network failures — Retried automatically; fails only after all retries exhausted
  • Invalid JSON body — Fails fast if Content-Type: application/json is set with invalid JSON

Output format

Each run produces one record in the dataset:

{
"status": 200,
"statusText": "OK",
"response": { "data": "..." },
"headers": { "content-type": "application/json" },
"meta": { "requestTimestamp": "2026-01-29T12:00:00.000Z", "durationMs": 123, "attempts": 1 }
}
FieldDescription
statusHTTP status code
statusTextHTTP status text (e.g., "OK", "Not Found")
responseParsed response body
headersResponse headers (if response_headers: true)
metaTiming and retry info (if include_meta: true)

Integrations

HTTP API works with any tool that can call Apify Actors:

  • Clay — Call APIs as part of your enrichment workflow
  • Make — Use the Apify module to make HTTP requests
  • Zapier — Trigger API calls from your Zaps
  • n8n — Self-hosted workflow automation

Using HTTP API with the Apify API

The Apify API gives you programmatic access to run Actors, retrieve results, and manage datasets.

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('superlativetech/http-api').call({
method: 'GET',
endpoint: 'https://api.example.com/data',
headers: [{ key: 'Authorization', value: 'Bearer token' }]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].response);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('superlativetech/http-api').call(run_input={
'method': 'GET',
'endpoint': 'https://api.example.com/data',
'headers': [{'key': 'Authorization', 'value': 'Bearer token'}]
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[0]['response'])

Check out the Apify API reference for full details, or click the API tab above for more code examples.

Your feedback

We're always improving our Actors. If you have feature requests, find a bug, or need help with a specific use case, please open an issue in the Actor's Issues tab.

When Apify asks to share your run data with us, we encourage you to opt in — it's the fastest way for us to spot edge cases and improve results. Sharing is completely optional (you can toggle it anytime under Account Settings → Privacy), and shared runs are automatically deleted by Apify based on your plan's data retention period. We only use shared data to debug issues and improve this Actor.

Leave a review

If HTTP API helps with your workflows, please leave a review. Your feedback helps other users discover the tool and helps us understand what's working well.


More from Superlative

Network Intelligence:

Data Cleaning:

Built by Superlative