PrompteryxBeta
    ⌘K
    PlatformSupport
    Menu
    IntroductionInstall Desktop & extensionQuick StartPlatform Overview
    OverviewWhat you can makeAI Browser Agent in the chatModels and AutoConnectorsSchedulesProjectsExplore and publishingShare linksMemory and SkillsPersonal agent (beta)Welcome, settings and skinsPlans, credits and top-upsPrompteryx DesktopGroups (pilot)Phone app (early access)
    OverviewCreating WorkflowsTesting & DebuggingScheduling
    OverviewGetting StartedCommandsRecordingSettingsStructured OutputParallel AgentsTips & Best Practices
    OverviewInstallationSidebar AgentUsing Attached FilesExecute on Current TabExporting to Visual Studio
    Overview
    OverviewOpen PageClickClick CoordinatesFillExtract TextScreenshotWaitPress KeyFocus ElementBlur ElementSelect TextHighlight ElementSet ViewportGet Bounding BoxScrollHoverSelect OptionAssertionsCookiesEvaluate JavaScriptExample Workflows
    OverviewPrompteryx Browser AgentOpenAI
    OverviewSchedule TriggerWebhook Trigger
    OverviewGoogle SheetsGoogle CalendarConnect Hub (3,000+ apps)Example Workflows
    AI Vision SettingsChrome Automation ProfilesCloud BrowserBrowser Profiles & Persistent ContextVideo RecordingExecution LogsSharing & CollaborationEdit History
    Selectors GuideVariables
    Start hereGet an API keyRun the AI browser agentDrive a cloud browserRun workflows from anywhereUse connected apps (Connect Hub)SDK (TypeScript)CLIMCP for AI assistants
    REST APIWebhooksMCP toolsCloud Browser APICloud Browser quickstartMigrate from Browserbasen8nZapierMake.com

    Need help? Contact Support

    1. Documentation
    2. Nodes
    3. Browser Actions
    4. Check Captcha

    Check CAPTCHA Node

    Browser Node

    Passive observer for the auto-CAPTCHA flow. Detects whether a CAPTCHA widget is on the page and waits for the background auto-solver to finish before continuing.

    When to use this node

    Use Check CAPTCHA when Auto-CAPTCHA is ON in your Cloud Browser settings (it's on by default). Prompteryx's runtime quietly solves any reCAPTCHA v2, hCaptcha, or Cloudflare Turnstile widget it sees on a page, but that solve runs asynchronously — if your workflow tries to click "Submit" right after the CAPTCHA appears, it can race the solver and submit an empty form.

    This node fixes that race. Drop it in just before any form-submit step that follows a page with a CAPTCHA. It waits for a valid token to appear in the page's hidden response field, then succeeds; downstream nodes then run knowing the solve is done.

    On your own Chrome (through Prompteryx Desktop), the same setting makes Prompteryx solve a CAPTCHA right after each Open Page navigation, before the next node runs. There is no background solver there for a CAPTCHA that appears later (for example after a click) — use Solve CAPTCHA for those.

    Does NOT spend a CAPTCHA solve
    Check CAPTCHA is passive — it never calls the solver itself, so it doesn't bill against your monthly CAPTCHA allowance or top-up balance. The actual solve is performed by the background auto-CAPTCHA loop, which DOES bill once per solve. If Auto-CAPTCHA is OFF, use the Solve CAPTCHA node instead — that one actively pays for and performs the solve.

    Parameters

    Parameters
    Configuration options for this node
    When CAPTCHA found but unsolved
    Enum

    wait → block this node until a token appears or the timeout hits (recommended). fail → throw an error so the workflow branches via the failed-node handler. continue → succeed anyway; downstream logic inspects the boolean outputs.

    Default: wait
    Wait timeout (ms)
    Number

    Only used in 'wait' mode. 2Captcha solves take 20–60s; on the cloud, allow extra time for the background auto-solver to pick the CAPTCHA up. The node exits early as soon as a token is detected, so a generous timeout is free if it isn't needed.

    Default: 120000
    Detected flag variable
    String

    Variable name to store the 'was a CAPTCHA present?' boolean.

    Default: captchaDetected
    Solved flag variable
    String

    Variable name to store the 'did the auto-solver inject a valid token?' boolean.

    Default: captchaSolved

    Outputs

    detected: boolean — was a supported CAPTCHA widget on the page?

    solved: boolean — has the auto-solver injected a token recently?

    type: 'recaptcha' | 'hcaptcha' | 'turnstile' | null

    waitedMs: number — wall-clock spent in this node

    No visual confirmation on the page

    The CAPTCHA widget never shows a green tick

    When a token is injected programmatically (which is how all third-party CAPTCHA solvers work, including ours), the reCAPTCHA / hCaptcha / Turnstile widget does NOT update its visual state — no green checkmark, no "verified" label. The token is written directly to the hidden form field that the page reads on submit.

    This is normal and expected. To confirm a solve, look at the node's output (solved: true) or perform the form submit and observe whether the server accepts it. The page UI is not a reliable indicator.

    Typical workflow

    Form on a CAPTCHA-protected page
    Open → fill → solve via auto-CAPTCHA → wait → submit
    1. Open Page → navigate to the form (auto-CAPTCHA fires in the background).
    2. Fill → first name, last name, email, etc.
    3. Check CAPTCHA → wait for the auto-solver to put a token in g-recaptcha-response.
    4. Click → press the submit button. By the time this runs, the token is in place.

    Why does this sometimes take 60–90 seconds?

    2Captcha-bound, not Prompteryx-bound

    The wait time is determined almost entirely by the upstream solver. 2Captcha (the third-party human-in-the-loop solver Prompteryx routes through) typically returns a reCAPTCHA v2 solution in 20–60 seconds. On top of that, the cloud auto-CAPTCHA loop has its own polling interval before it picks up a freshly-rendered CAPTCHA — total wall-clock can land at 60–90s in normal operation.

    If you need predictable timing (e.g. you're measuring workflow latency for SLAs), use Solve CAPTCHA instead. It synchronously calls the solver from the current step rather than waiting for the background loop.

    Best practices

    Place this node BEFORE the form submit, not after
    The node exists to prevent races between auto-CAPTCHA and your submit step. Putting it after the submit defeats the point — by then the form has already been sent without a token (or with an old one).
    Pair with onUnsolved='fail' for critical flows
    For workflows where submitting without a solve is unacceptable (paid signups, transactional emails), set the node to fail instead of continue. Wire a failed-node handler to retry or alert. The default 'wait' is right for casual scrapers; 'fail' is right for production.

    Related Documentation

    Solve CAPTCHA Node

    Active solver — pays for and performs the solve synchronously

    Cloud Browser

    Where the background auto-CAPTCHA runs