2Captcha Solver
Pricing
Pay per usage
2Captcha Solver
Solves Turnstile, reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise and normal image captchas via the official 2Captcha API.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Mark
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
Official Apify Actor wrapper around the 2Captcha API. Solve Cloudflare Turnstile, reCAPTCHA v2 / v3 / Enterprise and normal image (text) captchas directly from your scrapers, automations, and workflows running on the Apify platform — no SDK integration required.
This Actor is maintained by 2Captcha, the original captcha-solving service.
What it does
You give the Actor:
- Your 2Captcha API key (created in the 2Captcha dashboard),
- The captcha type you want to solve,
- The relevant parameters for that type (URL + sitekey, or a base64 image),
- Optionally a proxy configuration (Apify Proxy or your own list).
The Actor sends the task to 2Captcha's createTask endpoint, polls getTaskResult every 5 seconds, and stores the resulting token / text in the default dataset together with the task metadata. Total wait time is capped at 5 minutes per run.
Supported captcha types
captchaType | 2Captcha task type | What goes into token |
|---|---|---|
turnstile | TurnstileTaskProxyless / TurnstileTask | Cloudflare Turnstile token |
recaptchaV2 | RecaptchaV2TaskProxyless / RecaptchaV2Task | g-recaptcha-response |
recaptchaV3 | RecaptchaV3TaskProxyless (always proxyless) | g-recaptcha-response |
recaptchaEnterprise | RecaptchaV2EnterpriseTaskProxyless / RecaptchaV2EnterpriseTask | g-recaptcha-response |
normal | ImageToTextTask | The text recognized in the image |
Input
All input fields are configured through a clean UI on the Apify console.
| Field | Type | Required | Description |
|---|---|---|---|
apiKey | string (secret) | yes | Your 2Captcha API key. Encrypted on the platform. |
captchaType | enum | yes | One of turnstile, recaptchaV2, recaptchaV3, recaptchaEnterprise, normal. |
url | string | for non-normal | Full URL of the page where the captcha appears. |
sitekey | string | for non-normal | The captcha sitekey rendered on that page. |
action | string | optional | Used for recaptchaV3 / recaptchaEnterprise. Defaults to verify. |
minScore | string | optional | reCAPTCHA v3 minimum score, 0.1–0.9. Defaults to 0.3. |
base64 | string | for normal | Base64-encoded captcha image. |
proxyConfiguration | object | optional | Apify Proxy or a custom proxy list. Forwarded to 2Captcha so the captcha is solved from your IP. Ignored for recaptchaV3 and normal. |
Output
A single record is pushed to the default dataset on success:
{"taskId": 82540839253,"captchaType": "recaptchaV2","token": "0cAFcWeA7eb...rAvhcSPdb0N6mv1CeaPkbPDeQqaNM4Glu...","cost": "0.16","ip": "171.97.52.200","solveCount": 3,"createTime": 1777352791,"endTime": 1777352832,"solvedAt": "2026-04-28T05:07:13.294Z"}
If 2Captcha returns an error (errorId !== 0) or the task is still processing after 300 seconds, the run finishes with a clear failure message in the run status.
Pricing
- You pay 2Captcha for every successfully solved captcha. See 2Captcha pricing — typical rates are around
$2.99/1000for reCAPTCHA v2 and$0.50/1000for normal image captchas. Failed solves are not charged. - You also pay Apify for the compute units used by this Actor (very small — most runs finish in 5–60 seconds).
Examples
reCAPTCHA v2
{"apiKey": "YOUR_2CAPTCHA_API_KEY","captchaType": "recaptchaV2","url": "https://www.google.com/recaptcha/api2/demo","sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"}
Cloudflare Turnstile
{"apiKey": "YOUR_2CAPTCHA_API_KEY","captchaType": "turnstile","url": "https://target-site.example/login","sitekey": "0xABCDEFGH..."}
reCAPTCHA v3
{"apiKey": "YOUR_2CAPTCHA_API_KEY","captchaType": "recaptchaV3","url": "https://target-site.example/checkout","sitekey": "6Lc...","action": "checkout","minScore": "0.7"}
Normal image captcha
{"apiKey": "YOUR_2CAPTCHA_API_KEY","captchaType": "normal","base64": "iVBORw0KGgoAAAANSUhEUgAAA..."}
With Apify Proxy (for IP-bound captchas)
{"apiKey": "YOUR_2CAPTCHA_API_KEY","captchaType": "recaptchaV2","url": "https://target-site.example/login","sitekey": "6Lc...","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
When a proxy is supplied for non-recaptchaV3 / non-normal captchas, the Actor parses the proxy URL and forwards proxyType / proxyAddress / proxyPort / proxyLogin / proxyPassword to 2Captcha, switching the task type from *Proxyless to the proxied variant automatically.
Calling this Actor from your own scraper
The standard Apify pattern: call this Actor from any Apify SDK / API client and read its dataset.
import { Actor } from 'apify';const run = await Actor.call('two-captcha/two-captcha-solver', {apiKey: process.env.TWOCAPTCHA_API_KEY,captchaType: 'recaptchaV2',url: 'https://target-site.example/login',sitekey: '6Lc...',});const { items } = await Actor.openDataset(run.defaultDatasetId).then(d => d.getData());const token = items[0].token;
Limits and notes
- Each run solves one captcha. For high-volume usage, call the Actor in parallel from your scraper.
- The polling timeout is 300 seconds per task. Most reCAPTCHA v2 / Turnstile / normal captchas resolve in well under 60 seconds.
- The
softIdof every request is set to5656(2Captcha partner ID). - The full source is open and runs as a transparent thin wrapper — no captured input data, no proxying through third-party services.
Support
- 2Captcha service questions, billing, balance: support@2captcha.com / Telegram
- Issues with this Actor: open an issue on the Actor's GitHub or contact us through the Apify console.