Navigation & Interaction
Logic & Flow Control
Data & Variables
Advanced Actions
Basic Actions
Click
Click
- Selector: The CSS selector of the target element (e.g.,
#btn,.link). - Wait: Optional delay (in seconds) after clicking.
Type
Type
- Selector: The target input (e.g.,
input[name="q"]). - Value: The text to type. Can include
{$variables}. - Mode:
Replace(clears existing text) orAppend(adds to end).
Wait
Wait
- Value: Duration in seconds (e.g.,
2.5).
Wait for Selector (wait_selector)
Wait for Selector (wait_selector)
- Selector: The element to wait for.
- Value: Timeout in seconds (default: 30).
Press (press)
Press (press)
Enter, Tab, or Escape.- Key: The key name (e.g.,
Enter,Tab,Escape,ArrowDown). - Selector: (Optional) Focus this element before pressing.
Scroll
Scroll
- Selector: (Optional) The element to scroll. If empty, scrolls the window.
- Value: Pixels to scroll (e.g.,
500) or specific commands (bottom,top).
Hover
Hover
- Selector: The target element.
Logic & Flow Control
If / else / end
If / else / end
- Condition: A JavaScript expression (e.g.,
exists('.error')). - Selector: (Structured mode) Target element.
- Operator:
equals,contains,exists, etc.
While / end
While / end
- Condition: Same as
if. - Value: (Optional) Max iterations to prevent infinite loops.
For Each / end
For Each / end
- Selector: The elements to iterate (e.g.,
.product-item). - Var Name: Variable to store the current element index/data.
Repeat N / end
Repeat N / end
- Value: Number of repetitions.
Data & Variables
Set Variable (set)
Set Variable (set)
- Var Name: The variable to update (e.g.,
counter). - Value: The new value (can be a JS expression).
CSV (csv)
CSV (csv)
- Value: The CSV text to parse. If left blank, it will attempt to use the output of the previous block (
block.output).
Merge (merge)
Merge (merge)
- Value: Comma-separated list of values or variables to merge (e.g.,
items, extraItems, {$block.output}). - Target Variable: (Optional) The name of a new or existing variable to store the merged result (e.g.,
allItems).
Get Content (get_content)
Get Content (get_content)
- Selector: (Optional) A CSS selector targeting the element to read. If empty, the full page text is returned.
- Store In Variable: (Optional) A variable name to store the extracted text for use in later blocks.
innerText of the matched element (or document.body when no selector is provided). If the selector matches no element, the result is null.Example — store the main article text in a variable:{$articleText} contains the visible text of the .article-body element.Advanced Actions
JavaScript (javascript)
JavaScript (javascript)
- Value: The JS code (e.g.,
return document.title;). - Output: The return value is stored in
block.outputfor subsequent steps.
Screenshot
Screenshot
- Value: (Optional) Filename suffix.
- Selector: (Optional) Capture only this element.
Stop Task
Stop Task
- Value: Exit status (e.g.,
success,failure).
Wait for Downloads (wait_downloads)
Wait for Downloads (wait_downloads)
- Value: Timeout in seconds.
Upload (upload)
Upload (upload)
- Selector: Target file input, file chooser trigger, or compatible drop target.
- Cabinet ID: (Optional) Cabinet to read from. If omitted, the task’s Cabinet is used, then the default Cabinet.
- Mark As Uploaded: (Optional) Mark the item uploaded immediately after attaching it.
Finalize Uploads (finalize_uploads)
Finalize Uploads (finalize_uploads)
On Error (on_error)
On Error (on_error)
HTTP Request (http_request)
HTTP Request (http_request)
- Method:
GET,POST,PUT,PATCH, orDELETE. - URL: The target endpoint. Supports
{$variables}for dynamic URLs. - Headers: (Optional) A JSON object of request headers (e.g.,
{"Authorization": "Bearer {$token}"}). - Body: (Optional, shown for POST/PUT/PATCH/DELETE) The request payload, typically JSON.
- Store Response In Variable: (Optional) A variable name to store the parsed response for use in later blocks.
ALLOW_PRIVATE_NETWORKS environment variable is enabled. See Security for details.{$apiResponse} contains the parsed JSON response.Start Task (start)
Start Task (start)
- Task: The ID of the task to run.
Solve Captcha (solve_captcha)
Solve Captcha (solve_captcha)
- Captcha Type: (Optional) One of
recaptcha_v2,recaptcha_v3,hcaptcha, orturnstile. If empty, the type is auto-detected from the page. - Selector: (Optional) A CSS selector scoping the search to a specific container (for example, the widget’s iframe wrapper). If empty, the whole page is scanned.
- Store In Variable: (Optional) A variable name to store solve metadata (
{ success, challenge, duration, provider, model?, device?, attempts }). - Timeout: (Optional) Terminal deadline in milliseconds. Defaults to
120000. Image challenges usually take over a minute. Provider errors are returned immediately rather than being reported as timeouts.
SKIP_LOCAL_CAPTCHA_MODEL=true to disable the local route entirely.Example — solve a reCAPTCHA v2 widget and store the result:solve_captcha blocks through the flow — it runs the same detection pass after the initial task navigation and after every navigate, click, and type, and no-ops when no challenge is present. See CAPTCHA Solving for the full setup, environment variables, and the auto-solve toggle.Wait for Captcha (wait_captcha)
Wait for Captcha (wait_captcha)
- Captcha Type: (Optional) One of
recaptcha_v2,recaptcha_v3,hcaptcha, orturnstile. If empty, the block waits for the first ready challenge of any supported type. - Container Selector: (Optional) A CSS selector scoping the search to a specific container. If empty, the whole page is scanned.
- Timeout: (Optional) Deadline in milliseconds. Defaults to
120000. If no ready challenge appears before the deadline, the block errors withwait_captcha: no ready CAPTCHA found within <timeout>ms, which an On Error block can catch. - Store Result In Variable: (Optional) A variable name to store
{ ready, challenge, duration, siteKey? }.
Do Nothing (do_nothing)
Do Nothing (do_nothing)
if or on_error branch when you explicitly want the branch to fall through without side effects.The block takes no configuration. It logs Do nothing and completes successfully. The aliases noop and pass behave the same way.Example — placeholder inside an if branch: