HTTP Request Builder
Pricing
from $0.50 / 1,000 http requests
HTTP Request Builder
Build requests for public HTTP or HTTPS endpoints with methods, headers, query parameters, bodies, and expected status codes. Paste cURL commands or submit a batch, then get one result row per request with the status, final URL, response content, timing, and outcome.
Pricing
from $0.50 / 1,000 http requests
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
🧰 Build and test HTTP requests
For developers, QA engineers, and automation builders, HTTP Request Builder sends public HTTP or HTTPS requests and saves one identifiable dataset row for each accepted request. Set the method, URL, headers, query parameters, body, and expected status codes, or paste cURL, then review the status, final URL, response content, timing, and outcome.
Use cases
- Use the HTTP Request Builder Online example to send a structured HTTP request and inspect its result.
- Try API Test Online to check a public API endpoint and review its status and response content.
- Follow the HTTP Post Request Example example to send a POST request with headers and a body.
- Use REST API Test Online to review response status, final URL, and timing for a REST endpoint.
- Open API Test Tool to run an endpoint check with an expected status code.
📄 One result row for each request
Each dataset row keeps the request index, optional ID, method, requested and final URLs, outcome, status, redirect URLs, response headers, content type, body or parsed JSON, a full-body URL when needed, elapsed time, and attempt count. Results include successful and failed request outcomes so each accepted request stays identifiable.
▶️ Send requests and inspect each outcome
- Choose a request form. Select Request details for named fields or cURL commands for one complete command per request.
- Add public requests. Enter one or more public HTTP or HTTPS URLs, or provide cURL commands with the method, URL, headers, query parameters, and body when needed.
- Set an optional status check. Add expected status codes when you want the result to show whether the response matched those codes.
- Review the dataset. Open the output to inspect one identifiable row for each accepted request, including status, final URL, response content, timing, and outcome.
The Actor checks the URLs you submit. It does not crawl a website, discover links, render pages, or run client-side JavaScript.
⚙️ Input
Choose requestDetails or curlCommands in requestInputType, then add at least one entry to the selected array. The public schema permits up to 1,000 entries in either array.
Input fields
| Field | Type | What it does |
|---|---|---|
requestInputType | string | Selects requestDetails for named request fields or curlCommands for one cURL command per request. |
requests | array of objects | Adds structured HTTP or HTTPS requests. Each object must include url; the form permits up to 1,000 objects. |
requests[].id | string, optional | Your ID for the request. It is returned so you can match the row to your input. |
requests[].method | string | HTTP method for the request. The default is GET. |
requests[].url | string | Public HTTP or HTTPS URL to request. |
requests[].headers | object, optional | JSON object of header names and text values to send. |
requests[].queryParameters | object, optional | JSON object of query names and values to add to the request URL. |
requests[].body | string, optional | Request body text, such as JSON text for a POST request. |
requests[].expectedStatusCodes | array of integers, optional | HTTP status codes that this request should return. Leave it empty when you want the status reported without this check. |
curlCommands | array of objects | Adds one complete cURL command for each request. The form permits up to 1,000 commands. |
curlCommands[].id | string, optional | Your ID for the cURL request. It is returned so you can match the row to your input. |
curlCommands[].command | string | Complete cURL command for one HTTP or HTTPS request. |
Input example
This is the smallest successful current-beta default-input run:
{"requestInputType": "requestDetails","requests": [{"method": "GET","url": "https://example.com"}]}
🧾 Output
The run exposes the default dataset through the output link. The dataset contains one row for each accepted request.
Run output
| Field | Type | What it does |
|---|---|---|
dataset | URL string | Links to the dataset with the request result rows. |
Dataset row
| Field | Type | What it does |
|---|---|---|
requestIndex | integer | Position of the request in the selected input array, starting at 0. |
requestId | string, optional | ID provided for the request so you can match the row to your input. |
method | string | HTTP method used for the request. |
requestedUrl | URL string | URL sent before any redirects. |
outcome | string | Final request outcome: success or failure. When expected status codes are set, it reflects that check. |
statusCode | integer | HTTP status code returned by the endpoint. |
finalUrl | URL string | URL of the response after redirects. |
redirectUrls | array of URL strings, optional | URLs visited during redirects, in order. |
responseHeaders | object, optional | Headers returned with the response. |
responseHeaders.<header> | string | Value returned for a response header. |
contentType | string, optional | Content type returned by the endpoint. |
responseBody | string, optional | Response content as text when it can be returned inline. |
parsedJson | object, array, string, number, or boolean, optional | Response content parsed as JSON when the content is valid JSON. |
responseBodyUrl | URL string, optional | URL for the full response content when it is not returned inline. |
elapsedMs | integer | Time spent on the request in milliseconds. |
attemptCount | integer | Number of attempts used before the row was saved. |
Example dataset row
This complete row is from a successful current-beta run:
{"requestIndex": 0,"requestId": "details-json","method": "POST","requestedUrl": "https://httpbin.org/anything?mode=details&values=one&values=two&enabled=true","outcome": "success","statusCode": 200,"finalUrl": "https://httpbin.org/anything?mode=details&values=one&values=two&enabled=true","responseHeaders": {"access-control-allow-credentials": "true","access-control-allow-origin": "*","connection": "keep-alive","content-length": "776","content-type": "application/json","date": "Fri, 25 Sep 2026 07:15:22 GMT","server": "gunicorn/19.9.0"},"contentType": "application/json","responseBody": "{\n \"args\": {\n \"enabled\": \"true\", \n \"mode\": \"details\", \n \"values\": [\n \"one\", \n \"two\"\n ]\n }, \n \"data\": \"{\\\"source\\\":\\\"hosted-qa\\\",\\\"ok\\\":true}\", \n \"files\": {}, \n \"form\": {}, \n \"headers\": {\n \"Accept\": \"*/*\", \n \"Accept-Encoding\": \"br, gzip, deflate\", \n \"Accept-Language\": \"*\", \n \"Content-Length\": \"32\", \n \"Content-Type\": \"application/json\", \n \"Host\": \"httpbin.org\", \n \"Sec-Fetch-Mode\": \"cors\", \n \"User-Agent\": \"undici\", \n \"X-Amzn-Trace-Id\": \"Root=1-6ab61f8a-0c7","parsedJson": {"args": {"enabled": "true","mode": "details","values": ["one","two"]},"data": "{\"source\":\"hosted-qa\",\"ok\":true}","files": {},"form": {},"headers": {"Accept": "*/*","Accept-Encoding": "br, gzip, deflate","Accept-Language": "*","Content-Length": "32","Content-Type": "application/json","Host": "httpbin.org","Sec-Fetch-Mode": "cors","User-Agent": "undici","X-Amzn-Trace-Id": "Root=1-6ab61f8a-0c7cae8a2464270b2f38704d","X-Qa-Header": "hosted-qa"},"json": {"ok": true,"source": "hosted-qa"},"method": "POST","origin": "198.46.176.61","url": "https://httpbin.org/anything?mode=details&values=one&values=two&enabled=true"},"responseBodyUrl": "https://api.apify.com/v2/key-value-stores/bEgxOlkIAgKN5Zkk9/records/HTTP_RESPONSE_0_00ed7311-b780-40c5-8b49-a259e501d6d5","elapsedMs": 525,"attemptCount": 1}
💳 Pricing
This Actor uses pay-per-event pricing. Each submitted HTTP request is charged once, whether it succeeds or fails. See the Store pricing panel for the current rate.
🔌 Integrations
The dataset is available in Apify Console and through the Apify API, so you can read request rows in your own workflow.
❓ FAQ
Can I send a POST request with headers, query parameters, and a body?
Yes. Use Request details to set those fields for one request, or put them in a cURL command.
Can I paste a cURL command from another tool?
Yes. Choose cURL commands and add one complete command for each request.
How does an expected status code check work?
Add one or more codes to expectedStatusCodes. The row still includes the returned statusCode, and outcome shows whether the response matched the codes you supplied.
Can I send a request to a private or authenticated endpoint?
No. Submit a publicly reachable HTTP or HTTPS endpoint. The input schema has no credential fields or private-network setting.
Does this crawl a website or run JavaScript?
No. It sends requests to the URLs you submit. It does not discover links, render pages, or run client-side JavaScript.
What does a failed request row contain?
The row keeps the request index, method, requested URL, outcome, status code when one is returned, final URL, timing, and attempt count. Optional response fields appear when the endpoint returns them.
Can I use the result in a workflow?
Yes. Read the dataset in Apify Console or through the Apify API after the run.
📝 Changelog
v0.0 (25-09-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- JSON Content Checker & Validator - API Testing Tool: Validate public JSON API responses against structural, schema, or content rules.
- Redirect Chain Checker: Trace redirect hops, terminal URLs, and diagnosed issues for public URLs.
- HTTP Request Runner: Bulk API Calls with Retries: Run batch API calls with retries and redirect tracking when you need those features.
- Website Uptime Checker: Check website availability, response time, content type, SSL validity, and redirect chains.
- Send HTTP requests: Send simple GET, POST, PUT, PATCH, or DELETE requests with custom headers, parameters, and bodies.
Made with ❤️ by Maxime Dupré


