SE Home
Help
  • Documentation
  • Help centre
SEScrape Engine

Getting started

DocumentationQuickstartAuthenticationPlayground

Extracting data

Selecting valuesTransformsLists & tablesPage dataAI extractionMCP server

Fetching pages

Custom requestsTimeouts & redirectsCachingAutomatic retriesFallback strategies

Browsers & actions

BrowsersActionsRecipesScreenshots & PDFStored files

Getting past blocks

Anti-bot protectionCaptchasProxiesFingerprintsSessions

Workflows

Multi-step requestsVariablesPaginationBatchCrawlingTemplatesSchedules & monitoringAsync jobs & webhooksExport to S3, Sheets, databases & webhooks

Account & billing

CreditsSecretsPlansLimitsLogs & request idsNotificationsAccountAffiliate programmeHelp centre

Reference

POST /scrapeGET /sessions/:idGET /browsersGET /proxies/countriesGET /healthErrors
Documentation

Getting started

DocumentationQuickstartAuthenticationPlayground

Extracting data

Selecting valuesTransformsLists & tablesPage dataAI extractionMCP server

Fetching pages

Custom requestsTimeouts & redirectsCachingAutomatic retriesFallback strategies

Browsers & actions

BrowsersActionsRecipesScreenshots & PDFStored files

Getting past blocks

Anti-bot protectionCaptchasProxiesFingerprintsSessions

Workflows

Multi-step requestsVariablesPaginationBatchCrawlingTemplatesSchedules & monitoringAsync jobs & webhooksExport to S3, Sheets, databases & webhooks

Account & billing

CreditsSecretsPlansLimitsLogs & request idsNotificationsAccountAffiliate programmeHelp centre

Reference

POST /scrapeGET /sessions/:idGET /browsersGET /proxies/countriesGET /healthErrors

Captchas

reCAPTCHA, Cloudflare Turnstile, hCaptcha and image captchas solved in the page, with or without a browser, billed only when solved.

A captcha in the way of a form or a page? Add solve_captcha to the actions, before the click that submits. The API finds the captcha on the page, has it solved, and hands the answer to the page as if a visitor had ticked it:

"options": {
  "browser": true,
  "actions": [
    { "fill": "#email", "value": "[email protected]" },
    { "solve_captcha": true },
    { "click": "button[type=submit]" }
  ]
}

It works in a browser, and often without one (below). Solving takes 10 to 60 seconds, up to 2 minutes, whatever the timeout: that limit applies to loading pages, not to captchas.

Supported captchas

The type is detected on the page; nothing to configure. Each captcha solved costs the credits below, the solve time is the service's live average:

A captcha that couldn't be solved costs nothing.

Automatically, without an action

"solve_captchas": true solves the captchas a page shows by itself, no solve_captcha action needed: when the page loads, and again once the actions are done. Challenge pages ("Verify you are human", sliders, Cloudflare's "Just a moment…") are handled the same way: solved, then the page's own reload into the site is awaited.

Actions

Data

It needs a browser. With an anti-bot escalation, the stronger browser it switches to solves them too. Each captcha solved is billed, as with the action; a page without captcha costs nothing more. The response's warnings say what was solved.

Without a browser

Many forms put their captcha in the HTML itself (<div class="g-recaptcha" data-sitekey="…">). Then no browser is needed: the token is solved the same way and added to the form, and the click on its submit button sends it, like a browser would.

"options": {
  "actions": [
    { "fill": "#email", "value": "[email protected]" },
    { "solve_captcha": true },
    { "click": "button[type=submit]" }
  ]
}

It's cheaper and faster than a browser, but it only sees what the HTML has: a captcha added by JavaScript, an image captcha, or a site that checks the token with its own scripts needs a browser. With no captcha in the HTML, the action says so and costs nothing.

Image captchas

A picture of distorted text next to a field: found on the page when its image or field mentions "captcha", or named:

{ "solve_captcha": { "image": "#captcha-img", "input": "#captcha-code" } }

Try it on the demo page (it needs an account with credits: every solve is paid to the solving service, demo pages included):

Actions

Data

The picture is read by the solving service first; when it can't, by the AI model, which looks at the picture. The text is typed into the field, then submit the form with a click. It needs a browser: the picture is taken from the page as you see it.

Sliders, image grids and puzzles

Some captchas want a gesture: slide a piece into its slot, pick every picture with a bus, turn an object upright. The AI model solves them like a visitor: it looks at the page, then clicks, drags or types, and looks again until the captcha passes (12 tries at most). It takes over on its own when the solving service can't solve a captcha, or when the page shows a challenge the service doesn't know; "ai": true uses it straight away:

{ "solve_captcha": { "ai": true } }

Actions

Data

It needs a browser, takes 20 to 90 seconds, and costs more than the other captchas (several model calls with screenshots); it's billed only when solved. Sites that make every attempt harder for robots (reCAPTCHA's image grids on a datacenter IP) may never let it through: a residential proxy helps.

reCAPTCHA v3

reCAPTCHA v3 has no checkbox: the site asks Google for a score in the background, for an action it names. Give that action, and the score you need if the site is strict:

{ "solve_captcha": { "action": "login", "min_score": 0.7 } }
PropertyDefaultDescription
action—The action the site passes to grecaptcha.execute (look for it in the page's scripts)
min_score0.70.3, 0.7 or 0.9

The site's own calls to grecaptcha.execute() then return the solved token.

Wait, then continue on the same page

With steps, "continue": true keeps working on the page the previous step left, in the same browser tab: read the page, solve its captcha, then read what it unlocked.

{
  "target_url": "https://example.com/search",
  "options": { "browser": true },
  "steps": [
    { "name": "before", "fields": { "title": "h1" } },
    {
      "continue": true,
      "fields": { "results": { "selector": ".result", "multiple": true } },
      "options": { "actions": [{ "solve_captcha": true }, { "click": "#search" }, { "wait_for": ".result", "timeout": 30000 }] }
    }
  ]
}

In the response

The action says what it found and how long it took, and captchas lists every captcha of the page with its type and time:

"actions": [
  { "action": "solve_captcha", "status": "done", "detail": "recaptcha_v2 solved in 22.7s" },
  { "action": "click", "status": "done" }
],
"captchas": [{ "type": "recaptcha_v2", "ok": true, "ms": 22671, "solver": "service" }]
  • No captcha on the page: the action is done with "no captcha found on the page", and nothing is billed.
  • Not solved: the request fails with ACTION_FAILED, unless the action is "optional": true.

Always billed once solved

A captcha is paid for as soon as it's solved. If the request then fails (a later action, a timeout), the captcha is still billed: the failed request's error lists it in captchas.

When you stop waiting (the playground's Stop button, a closed connection, a client timeout), the request stops on our side too: the browser closes and nothing else runs. A captcha not sent to the solving service yet costs nothing. One already sent can't be called back: it's awaited, and billed if it comes back solved. An AI solve stopped half-way is billed too, because its model calls were already paid for. The request's error is 499 CANCELLED.

On this page

  • Supported captchas
  • Automatically, without an action
  • Without a browser
  • Image captchas
  • Sliders, image grids and puzzles
  • reCAPTCHA v3
  • Wait, then continue on the same page
  • In the response
  • Always billed once solved