HTTP Request Builder avatar

HTTP Request Builder

Pricing

from $0.50 / 1,000 http requests

Go to Apify Store
HTTP Request Builder

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é

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

8 days ago

Last modified

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

📄 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

  1. Choose a request form. Select Request details for named fields or cURL commands for one complete command per request.
  2. 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.
  3. Set an optional status check. Add expected status codes when you want the result to show whether the response matched those codes.
  4. 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

FieldTypeWhat it does
requestInputTypestringSelects requestDetails for named request fields or curlCommands for one cURL command per request.
requestsarray of objectsAdds structured HTTP or HTTPS requests. Each object must include url; the form permits up to 1,000 objects.
requests[].idstring, optionalYour ID for the request. It is returned so you can match the row to your input.
requests[].methodstringHTTP method for the request. The default is GET.
requests[].urlstringPublic HTTP or HTTPS URL to request.
requests[].headersobject, optionalJSON object of header names and text values to send.
requests[].queryParametersobject, optionalJSON object of query names and values to add to the request URL.
requests[].bodystring, optionalRequest body text, such as JSON text for a POST request.
requests[].expectedStatusCodesarray of integers, optionalHTTP status codes that this request should return. Leave it empty when you want the status reported without this check.
curlCommandsarray of objectsAdds one complete cURL command for each request. The form permits up to 1,000 commands.
curlCommands[].idstring, optionalYour ID for the cURL request. It is returned so you can match the row to your input.
curlCommands[].commandstringComplete 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

FieldTypeWhat it does
datasetURL stringLinks to the dataset with the request result rows.

Dataset row

FieldTypeWhat it does
requestIndexintegerPosition of the request in the selected input array, starting at 0.
requestIdstring, optionalID provided for the request so you can match the row to your input.
methodstringHTTP method used for the request.
requestedUrlURL stringURL sent before any redirects.
outcomestringFinal request outcome: success or failure. When expected status codes are set, it reflects that check.
statusCodeintegerHTTP status code returned by the endpoint.
finalUrlURL stringURL of the response after redirects.
redirectUrlsarray of URL strings, optionalURLs visited during redirects, in order.
responseHeadersobject, optionalHeaders returned with the response.
responseHeaders.<header>stringValue returned for a response header.
contentTypestring, optionalContent type returned by the endpoint.
responseBodystring, optionalResponse content as text when it can be returned inline.
parsedJsonobject, array, string, number, or boolean, optionalResponse content parsed as JSON when the content is valid JSON.
responseBodyUrlURL string, optionalURL for the full response content when it is not returned inline.
elapsedMsintegerTime spent on the request in milliseconds.
attemptCountintegerNumber 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 🫡

Made with ❤️ by Maxime Dupré