HTTP API - Flexible Client for Prototyping and Automation
Pricing
from $0.14 / 1,000 results
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
Actor stats
8
Bookmarked
54
Total users
1
Monthly active users
10 days ago
Last modified
Categories
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
- Enter the API endpoint URL
- Select the HTTP method (GET, POST, etc.)
- Add headers and query parameters as needed
- 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
| Parameter | Required | Default | Description |
|---|---|---|---|
endpoint | Yes | — | Target API endpoint URL |
method | No | GET | HTTP method: GET, POST, PUT, PATCH, DELETE |
headers | No | — | HTTP headers as {key: value} or [{key, value}] |
querystring | No | — | Query parameters as {key: value} or [{key, value}] |
body | No | — | Raw request body (JSON string, form data, etc.) |
timeoutSeconds | No | 30 | Request timeout in seconds |
maxRetries | No | 3 | Retry attempts on network failures |
response_headers | No | false | Include response headers in output |
include_meta | No | false | Include 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
| Code | Cause |
|---|---|
| 400 | Missing endpoint, invalid JSON request body, or invalid JSON in body field |
| 405 | Non-POST request |
| 502 | Target 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:
| Requests | Cost |
|---|---|
| 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
| Parameter | Type | Default | Description |
|---|---|---|---|
endpoint | string | — | API endpoint URL (required) |
method | string | GET | HTTP method: GET, POST, PUT, PATCH, DELETE |
querystring | array/object | — | Query parameters as [{key, value}] or {key: value} |
headers | array/object | — | HTTP headers as [{key, value}] or {key: value} |
body | string | — | Raw request body (JSON string, form data, etc.) |
timeoutSeconds | integer | 30 | Request timeout in seconds |
maxRetries | integer | 3 | Retry attempts on network failures |
response_headers | boolean | false | Include response headers in output |
include_meta | boolean | false | Include 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/jsonis 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 }}
| Field | Description |
|---|---|
status | HTTP status code |
statusText | HTTP status text (e.g., "OK", "Not Found") |
response | Parsed response body |
headers | Response headers (if response_headers: true) |
meta | Timing 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 ApifyClientclient = 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().itemsprint(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:
- Supernet Domain Health — Email reputation audit: SPF, DKIM, DMARC, blacklists, SSL, and 0-100 scoring
- Supernet DNS Lookup — Retrieve DNS records for any domain
Data Cleaning:
- Superclean Company Names — Normalize company names for CRM and outreach
- Superclean Job Titles — Standardize job titles for lead scoring
- Superclean Person Names — Clean and format person names
- Superclean Product Names — Normalize product and brand names
- Superclean Places — Parse and standardize location strings
- Superclean URLs — Clean and normalize URLs
- Superclean Phone Numbers — Format and validate phone numbers
Built by Superlative