Captcha solver API
Service is a human-powered and AI recognition service. Service provides low prices and high accuracy for bypass CAPTCHAs. The service workers human labor for recognition tasks and can recognize any captcha readable by a human. The service supports recognition of various captcha types, including Google reCAPTCHA, FunCaptcha, Cloudflare bypass (Cloudflare Turnstile, Cloudflare Challenge), and others. Discover seamless automatic captcha solving with AI-powered auto web unblock technology!
-
You send a captcha on service
-
Server stores your captcha and returns you the ID of your request
-
Service solves the captcha and sends the answer back to service
-
You are sending a request to a server using the ID to get the answer
-
Easy Integration
Comprehensive API documentation and ready-to-use libraries make integration a breeze. We offer libraries for popular programming languages, with new ones continuously added to expand support.
-
Cheap
Service combines AI and human solvers, offering the most cheap bypass service.
-
Reliability
With 99.99% uptime, our API is trusted by over 100 companies daily, ensuring you have uninterrupted service whenever you need it.
-
Browser Extension
Solve CAPTCHAs automatically in the background without coding knowledge. Ideal for non-technical users and perfect for those using Puppeteer for automation.
| Solutions | Price per 1000 | Speed |
|---|---|---|
|
|
Price per 1000 $0.35 | Speed 5 sec. |
|
|
Price per 1000 $2.99 - $50 | Speed 27 sec. |
|
|
Price per 1000 $0.8 | Speed 11 sec. |
|
|
Price per 1000 $0.8 | Speed 12 sec. |
SOLVECAPTCHA.com API
SolveCaptcha is a human-powered image and CAPTCHA recognition service. SolveCaptcha's main purpose is solving your CAPTCHAs in a quick an accurate way by human employees, but the service is not limited only to CAPTCHA solving. You can convert to text any image that a human can recognize.
Introduction
We provide an API that allows you to automate the process and integrate your software with our service.
There are few simple steps to solve your captcha or recognize the image:
- Send your image or captcha to our server.
- Get the ID of your task.
- Start a cycle that checks if your task is completed.
- Get the result.
Rates
Our rates depend on type of captcha that you want to solve and the method used. Rate for image captcha also depends on current service load.
| Type of captcha/method | Rate per 1000 | Description |
|
Image Captcha
Text Captcha |
$0.35 | The rate is flexible and depends on current load of the service. You can see current rate and limit max rate in your account settings. |
| Big Captcha | $1 | Big captcha is an image that has sum of height and width more than 400px. The method is the same as for Image Captcha. |
|
Grid method Canvas method ClickCaptcha |
$1.2 | The rate applies to any captcha where you need to click images. |
| RotateCaptcha | $0.5 | The rate applies to any captcha where you need to rotate images. |
| reCAPTCHA V2 | $0.55 | The rate applies to Google's reCAPTCHA V2 solved via token. |
| reCAPTCHA V3 | $0.8 | The rate applies to reCAPTCHA V3 solved via token. |
| Cloudflare Turnstile | $0.8 | The rate applies to Cloudflare Turnstile solved via token. |
| FunCaptcha | $2.99 - $50 | The rate applies to FunCaptcha solved via token. |
|
GeeTest GeeTest v4 |
$0.8 | The rate applies to Geetest and Geetest V4 solved via token. |
Solving Captchas
The process of solving captchas with SolveCaptcha is really easy and it's mostly the same for all types of captchas:
-
Get your API key from
your account settings page. Each user is given a unique authentication token, we call
it API key. It's a 32-characters string that looks like:
1abc234de56fab7c89012d34e56fa7b8This key will be used for all your requests to our server. -
Submit a HTTP POST request to our API URL:
https://api.solvecaptcha.com/in.phpwith parameters corresponding to the type of your captcha.
Server will return captcha ID or an error code if something gone wrong. - Make a timeout: 20 seconds for reCAPTCHA, 5 seconds for other types of captchas.
-
Submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.
If captcha is already solved server will return the answer in format corresponding to the type of your captcha.
By default answers are returned as plain text like: OK|Your answer. But answer can also be returned as JSON {"status":1,"request":"TEXT"} if json parameter is used.
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code.
Image Captcha
Image Captcha is an image that contains distorted but human-readable text. To solve the captcha user have to type the text from the image.
To solve the captcha with our service you have to submit the
image with HTTP POST request to our API URL:
https://api.solvecaptcha.com/in.php
Server accepts images in multipart or
base64 format.
Multipart sample form
YOUR_APIKEY is Your API key.
Base64 sample form
YOUR_APIKEY is your API key.
BASE64_FILE is base64-encoded image body.
You can provide additional parameters with your request to define what kind of captcha you're sending and to help workers to solve your captcha correctly. You can find the full list of parameters in the table below.
If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
If something gone wrong server will return an error. See Error Handling chapter for the list of errors.
Make a 5 seconds timeout and submit a HTTP GET request to our
API URL:
https://api.solvecaptcha.com/res.php providing the
captcha ID. The list of parameters is in the
table below.
If everything is fine and your captcha is solved server will return the answer as plain text, like: OK|TEXT or as JSON {"status":1,"request":"TEXT"} if json parameter was used.
Otherwise server will return CAPCHA_NOT_READY that means that your captcha is not solved yet. Just repeat your request in 5 seconds.
If something gone wrong server will return an error. See Error Handling chapter for the list of errors.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| POST parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes |
post - defines that you're sending an image with
multipart form base64 - defines that you're sending a base64 encoded image |
| phrase | Integer Default: 0 |
No |
0 - captcha contains one word 1 - captcha contains two or more words |
| regsense | Integer Default: 0 |
No |
0 - captcha in not case sensitive 1 - captcha is case sensitive |
| numeric | Integer Default: 0 |
No |
0 - not specified 1 - captcha contains only numbers 2 - captcha contains only letters 3 - captcha contains only numbers OR only letters 4 - captcha contains both numbers AND letters |
| calc | Integer Default: 0 |
No |
0 - not specified 1 - captcha requires calculation (like type the result 4 + 8 = ) |
| min_len | Integer Default: 0 |
No |
0 - not specified 1..20 - minimal number of symbols in captcha |
| max_len | Integer Default: 0 |
No |
0 - not specified 1..20 - maximal number of symbols in captcha |
| language | Integer Default: 0 |
No |
0 - not specified 1 - Cyrillic captcha 2 - Latin captcha |
| textinstructions |
String Max 140 characters Encoding: UTF-8 |
No |
Text will be shown to worker to help him to solve the
captcha correctly. For example: type red symbols only. |
| imginstructions | Image Max 100x100px, 25 kB |
No |
Image will be shown to worker to help him to solve the
captcha correctly. Server accepts images from multipart form or base64-encoded. |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the answer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled res.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
Text Captcha
Text Captcha is a type of captcha that is represented as text and doesn't contain images. Usually you have to answer a question to pass the verification.
For example: "If tomorrow is Saturday, what day is today?".
To solve text captcha with our service you have to submit the
text as a value of textcaptcha parameter with HTTP
POST request to our API URL:
https://api.solvecaptcha.com/in.php
Sample form for Text Captcha
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form method="post" action="https://api.solvecaptcha.com/in.php" enctype="multipart/form-data" accept-charset="UTF-8">
Your key:
<input type="text" name="key" value="YOUR_APIKEY">
<input type="text" name="textcaptcha" value="If tomorrow is Saturday, what day is today?">
<input type="submit" value="Send and get the ID">
</form>
</body>
</html>
YOUR_APIKEY is your API key.
You can provide additional parameters with your request to tell us more about your captcha and to help workers to solve it correctly. You can find the full list of parameters in the table below.
If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
If something gone wrong server will return an error. See Error Handling chapter for the list of errors.
Make a 5 seconds timeout and submit a GET request to our API
URL:
https://api.solvecaptcha.com/res.php providing the
captcha ID. The list of parameters is in the
table below.
If everything is fine and your captcha is solved server will return the answer as plain text, like: OK|TEXT or as JSON {"status":1,"request":"TEXT"} if json parameter was used.
Otherwise server will return CAPCHA_NOT_READY that means that your captcha is not solved yet. Just repeat your request in 5 seconds.
If something gone wrong server will return an error. See Error Handling chapter for the list of errors.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| POST parameter | Type | Required | Description |
| key | String | Yes | your API key |
| language | Integer Default: 0 |
No |
0 - not specified 1 - Cyrillic (Russian) captcha 2 - Latin captcha |
| lang | String | No | Language code. See the list of supported languages. |
| textcaptcha |
String Max 140 characters Encoding: UTF-8 |
Yes |
Text will be shown to worker to help him to solve the
captcha correctly. For example: type red symbols only. |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the answer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled res.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
reCAPTCHA V2
reCAPTCHA V2 also known as I'm not a robot reCAPTCHA is a very popular type of captcha that looks like this:
![]()
Solving reCAPTCHA V2 with our new method is pretty simple:
-
Look at the element's code at the page where you found reCAPTCHA.
-
Find a link that begins with www.google.com/recaptcha/api2/anchor or find data-sitekey parameter.
-
Copy the value of k parameter of the link (or value of data-sitekey parameter).
-
Submit a HTTP GET or POST request to our API URL:
https://api.solvecaptcha.com/in.phpwith method set to userrecaptcha and provide the value found on previous step as value for googlekey and full page URL as value for pageurl. Sending proxies is not obligatory ar the moment but it's recommended.
You can find the full list of parameters in the table below.Request URL example:
https://api.solvecaptcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=userrecaptcha&googlekey=6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-&pageurl=http://mysite.com/page/with/recaptcha?appear=1&here=now
-
If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
Otherwise server will return an error code. -
Make a 15-20 seconds timeout then submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.
The full list of parameters is in the table below.If captcha is already solved server will respond in plain text or JSON and return the answer token that looks like:
03AHJ_Vuve5Asa4koK3KSMyUkCq0vUFCR5Im4CwB7PzO3dCxIo11i53epEraq-uBO5mVm2XRikL8iKOWr0aG50sCuej9bXx5qcviUGSm4iK4NC_Q88flavWhaTXSh0VxoihBwBjXxwXuJZ-WGN5Sy4dtUl2wbpMqAj8Zwup1vyCaQJWFvRjYGWJ_TQBKTXNB5CCOgncqLetmJ6B6Cos7qoQyaB8ZzBOTGf5KSP6e-K9niYs772f53Oof6aJeSUDNjiKG9gN3FTrdwKwdnAwEYX-F37sI_vLB1Zs8NQo0PObHYy0b0sf7WSLkzzcIgW9GR0FwcCCm1P8lB-50GQHPEBJUHNnhJyDzwRoRAkVzrf7UkV8wKCdTwrrWqiYDgbrzURfHc2ESsp020MicJTasSiXmNRgryt-gf50q5BMkiRH7osm4DoUgsjc_XyQiEmQmxl5sqZP7aKsaE-EM00x59XsPzD3m3YI6SRCFRUevSyumBd7KmXE8VuzIO9lgnnbka4-eZynZa6vbB9cO3QjLH0xSG3-egcplD1uLGh79wC34RF49Ui3eHwua4S9XHpH6YBe7gXzz6_mv-o-fxrOuphwfrtwvvi2FGfpTexWvxhqWICMFTTjFBCEGEgj7_IFWEKirXW2RTZCVF0Gid7EtIsoEeZkPbrcUISGmgtiJkJ_KojuKwImF0G0CsTlxYTOU2sPsd5o1JDt65wGniQR2IZufnPbbK76Yh_KI2DY4cUxMfcb2fAXcFMc9dcpHg6f9wBXhUtFYTu6pi5LhhGuhpkiGcv6vWYNxMrpWJW_pV7q8mPilwkAP-zw5MJxkgijl2wDMpM-UUQ_k37FVtf-ndbQAIPG7S469doZMmb5IZYgvcB4ojqCW3Vz6Q
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code.
-
Locate the element with id g-recaptcha-response and make it visible deleting display:none parameter.
Please note: sometimes content on the page is generated dynamically and you will not see this element in html source.
In such cases you have to explore javascript code that generates the content. "Inspect" option in Google Chrome can help in that.As an alternative you can just use javascript to set the value of g-recaptcha-response field:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN_FROM_SOLVECAPTCHA"; -
An input field will appear on the page. And you just have to paste the answer token to that field and submit the form.
Congratulations, you've passed the recaptcha
reCAPTCHA Callback
Sometimes there's no submit button and a callback function is used isntead of this. The function is executed when reCAPTCHA is solved.
Callback function is usually defined in
data-callback parameter of reCAPTCHA, for
example:
data-callback="myCallbackFunction"
Or sometimes it's defined as callback parameter
of grecaptcha.render function, for example:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});
Also there's another way to find the callback function - open javascript console of your browser and explore reCAPTCHA configuration object:
___grecaptcha_cfg.clients[0].aa.l.callback
Note that aa.l may change and there can be multiple clients so you have to check clients[1], clients[2] too.
Finally all you have to do is to call that function:
myCallbackFunction();
Or even this way:
___grecaptcha_cfg.clients[0].aa.l.callback();
Sometimes it is required to provide an argument and in most cases you should put the token there. For example:
myCallbackFunction('TOKEN');
Invisible reCAPTCHA V2
reCAPTCHA V2 also has an invisible version.
You can check how it looks like here: https://www.google.com/recaptcha/api2/demo?invisible=true
Also recently we noticed some changes in invisible reCAPTCHA algorithms on few websites and added new parameterinvisible=1that should be used for invisible reCAPTCHA.
Read more about invisible reCAPTCHA below.
Invisible reCAPTCHA is located on a DIV layer positioned -10 000 px from top that makes it invisible for user.
reCAPTCHA is activated on page load or on user's actions like click somewhere or submit a form - that depends on the website. If user’s cookies are good enough then he will just pass it automatically without any additional action. Otherwise user will see standard reCAPTCHA form with a challenge.
In most cases when challenge is completed a callback function is executed. You can read more about callback here.
If you are still not sure - there are few ways to determine
that reCAPTCHA is in invisible mode:
- You don't see "I'm not a robot" checkbox on the page but getting recaptcha challenge when making some actions there
-
reCAPTCHA's iframe link contains parameter
size=invisible -
reCAPTCHA's configuration object contains parameter size
that is set to invisible, for example
___grecaptcha_cfg.clients[0].aa.l.sizeis equal toinvisible
How to bypass invisible reCAPTCHA in browser?
Method 1: using javascript:
- Change the value of g-recaptcha-response element to the answer token you received from our server:
document.getElementById("g-recaptcha-response").innerHTML="TOKEN_FROM_SOLVECAPTCHA";
Execute the action that needs to be performed on the page after solving reCAPTCHA.
Usually there's a form that should be submitted and you need to identify the form by id or name or any other attribute and then submit the form. Here are few examples:
document.getElementById("recaptcha-demo-form").submit(); //by id "recaptcha-demo-form"
document.getElementsByName("myFormName")[0].submit(); //by element name "myFormName"
document.getElementsByClassName("example").submit(); //by class name "example"
Or sometimes there's a callback function executed when reCAPTCHA is solved.
Callback function is usually defined in
data-callback parameter of reCAPTCHA, for
example:
data-callback="myCallbackFunction"
Or sometimes it's defined as callback parameter
of grecaptcha.render function, for example:
grecaptcha.render('example', {
'sitekey' : 'someSitekey',
'callback' : myCallbackFunction,
'theme' : 'dark'
});
And all you have to do is to call that function:
myCallbackFunction();
Method 2: changing HTML:
- Cut the div containing reCAPTCHA from page body.
Where %g-recaptcha-response% - is an answer token you’ve got from our service.
Press the button to submit the form with g-recaptcha-response and all other form data to the website.
List of GET/POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes | userrecaptcha - defines that you're sending a reCAPTCHA V2 with new method |
| googlekey | String | Yes | Value of k or data-sitekey parameter you found on page |
| pageurl | String | Yes | Full URL of the page where you see the reCAPTCHA |
| domain | String Default: google.com |
No | Domain used to load the captcha: google.com or recaptcha.net |
| invisible | Integer Default: 0 |
No | 1 - means that reCAPTCHA is invisible. 0 - normal reCAPTCHA. |
| data-s | String | No | Value of data-s parameter you found on page. Curenttly applicable for Google Search and other Google services. |
| userAgent | String | No | Your userAgent that will be passed to our worker and used to solve the captcha. |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| proxy | String | No |
Format: login:[email protected]:3128 You can find more info about proxies here. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
reCAPTCHA V3
reCAPTCHA V3 is a modern version of Google's CAPTCHA that evaluates the user's "humanity" based on their behavior and does not require any actions from the user.
The new version of reCAPTCHA retains many similarities with reCAPTCHA V2, as its core mechanism remains unchanged. The user receives a token from the reCAPTCHA API, which is then sent in a POST request to the website's server. The server then verifies the token's validity using the reCAPTCHA API.
However, during token verification, the reCAPTCHA API now returns a numerical "humanity" score, ranging from 0.1 to 0.9. Based on this score, the website independently decides how to proceed with processing the request.
Additionally, a new parameter called action has been introduced, allowing different user actions on the website to be processed differently.
During token verification, the reCAPTCHA API returns the name of the action performed by the user.
Instructions for solving reCAPTCHA V3 using our service:
-
Before starting to work with reCAPTCHA V3, ensure that the website uses this specific version. This can be identified by the following signs:
-
Invisibility to the user. reCAPTCHA V3 is completely hidden from the user and does not require tasks such as selecting images or clicking on elements.
-
The website's source code includes the reCAPTCHA API script with a
renderparameter specifying the site's public key (sitekey).
Example:<script src="https://www.google.com/recaptcha/api.js?render=6LfZil0UAAAAAAdm1Dpzsw9q0F11-bmervx9g5fE"> -
In the configuration object
___grecaptcha_cfg, theclientsarray uses an element with the index100000, which can be accessed via___grecaptcha_cfg.clients[100000].
-
-
To bypass reCAPTCHA V3 using our API, you need to define the values for two required parameters:
pageurl - Specify the full URL of the page where reCAPTCHA V3 needs to be solved.
sitekey - It can be found in the HTML code within the
renderparameter when loading theapi.jsfile, in thekparameter inside the URL of the iframe that loads reCAPTCHA, in the JavaScript code via thegrecaptcha.executefunction call, or in the configuration object___grecaptcha_cfg. -
After obtaining all the required parameters, you can send a request to our API.
-
Send an HTTP POST request to our API:
https://api.solvecaptcha.com/in.php
with your personal API key and the method parameter corresponding to your CAPTCHA type, , in this case — userrecaptcha. Also, provide the value you copied earlier in the googlekey parameter. Specify the full URL of the page where you want to solve reCAPTCHA in the pageurl parameter.
A complete list of parameters for the request can be found in the table below.Example of a multipart form for submitting reCAPTCHA V3:
The complete list of parameters for the request can be found in the table below.
Code examples for submitting reCAPTCHA V3 using cURL, Python, JavaScript, and Go are described below.
-
If you have sent a valid request, the server will return the ID of your CAPTCHA as plain text, for example: OK|2122988149, or in JSON format: {"status":1,"request":"2122988149"} if you included the `json` parameter in your request.
-
Wait for 15–20 seconds and send an HTTP GET request to our API:
https://api.solvecaptcha.com/res.phpto retrieve the result.
The complete list of parameters for the request can be found in the table below.If your CAPTCHA has already been solved, the server will return a response as plain text or JSON. The response contains the token. An example of a JSON response:
{ "status": 1, "request": "03AFcWeA5dCJ-2OQqwd0-2IHmBX3ItBl76Z4WGMT-3WxkoYqSKrpU48GZhe4jRk1un_TyFoZ6aYIlPn1J9w6HnPjgRdjWGQbczPsztmMl84sGXgZLWzxhSN0KKpo20G3X5LO66s9NuMOKzXnGB19ddYnDyapbna9vV-dtCNiimX9A6u-f0twWGglQVjsB9dVK6pGAYxnyE-3NMneIpXCV0i163lucSxT1aUDDpTh-0y4gWPFmcQmq58zgOJGOSQNgL2pABFrz7yKq-V0L3bjLDK7FFjiR3lAJ11Ec1t5KDFk6IXtkeWVwS8iSVT6ntb_YhRC9bei-Q5ZUXxt7HQJr9TYBAuc5g_hhsPEFsX7iby7xfnCq9XHY7mxhDE3IWCem-4Hve58_ja39NUGDobrhSxLLairPpTLaod_HispzbnWKy_G1Mb1n30uqVuWkQ3eBDLMjm0huPf0eXaPnGPpEo6rsNj2q4YcxdzxT5pURcPs8X6vpw3ke5R-oVLXK5nkhSeW2BL1euNwlLz0JCIDBeffzhHMZDx3Sydbf4wdtaWB05rp8YijuT1j9ivlV-Xbf7iLGc6rct89mZxbxTmH2QNJW3PeL2SQMunEs9ZXIkkm-3om5uy1ih53MEvYVR9fEiO5my5XL9LNjNtWOL6gjJqlpr4pryonotiW3ukcTHYn6yGTbBwBNcIqG4MT1eQWv4owxsr-Ufbvs_Av5h0snd8RK3lVzMYkXKdIm8oZRD_p4BL1uMMaFLaGorChVuyNelC_D1Wyh2I27GbD-NXhsfajZ1NyFfNXqJO1RGccfkiIl4hYpl2rD4G5b9sqWWmX_U4WVNBT5yHouiJJiFlBAnPukecSacVyfyKj1HeA3G8qTrYUOpElNQ9tOX1E9LDneJ6vvNdsb1w6jnMxSr1zevJS29CvwYOw0K--Y18XAJByMFLMs36jRCEdlntEOPumAyoDzjRpGj9riQ" }If your CAPTCHA has not yet been solved, the server will return the code CAPCHA_NOT_READY. In this case, repeat your request after 5 seconds.
Example of a request URL:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&json=1&id=248734 -
Use the received token on the target page.
The best way to understand how to do this is to observe the requests sent to the website when you interact with it as a regular visitor. Most browsers make this easy using the developer console, typically under the "Network" tab.
The token is usually sent in the parameters of a POST request. It could be
g-recaptcha-responseas in reCAPTCHA V2,g-recaptcha-response-100000, or another parameter. Therefore, carefully review the request parameters to identify how the token is transmitted, and then construct a similar request. -
After using the token on the website and determining whether it worked or not, you can inform us about it. This helps us collect and analyze statistics for this type of CAPTCHA to optimize our solving algorithms further.
More details about submitting reports can be found in the response report section.
List of parameters for POST requests to https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes | userrecaptcha — defines that you're sending a reCAPTCHA |
| version | String | Yes | v3 — defines that you're sending a reCAPTCHA V3 |
| googlekey | String | Yes | Value of sitekey parameter you found on page |
| pageurl | String | Yes | Full URL of the page where you see the reCAPTCHA |
| domain | String Default: google.com |
No | Domain used to load the captcha: google.com or recaptcha.net |
| action | String Default: verify |
No | Value of action parameter you found on page |
| min_score | Integer Default: 0.4 |
No | The score needed for resolution. Currently it's almost impossible to get token with score higher than 0.3 |
| header_acao | Integer Default: 0 |
No |
0 — disabled 1 — enabled. If enabled in.php will include Access-Control-Allow-Origin:*: header in the response.
Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 — server will send the response as plain text 1 — tells the server to send the response as JSON |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| Parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get — get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| header_acao | Integer Default: 0 |
No |
0 — disabled 1 — enabled. If enabled res.php will include Access-Control-Allow-Origin:* header in the response.
Used for cross-domain AJAX requests in web applications.
|
| json | Integer Default: 0 |
No |
0 — server will send the response as plain text 1 — tells the server to send the response as JSON |
Code examples for send reCAPTCHA V3:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="YOUR_API_KEY"' \
--form 'method="userrecaptcha"' \
--form 'version="v3"' \
--form 'googlekey="6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu"' \
--form 'pageurl="http://mysite.com/page/containing/recaptcha"' \
--form 'domain="www.recaptcha.net"' \
--form 'action="test"' \
--form 'min_score="0.5"' \
--form 'soft_id="1234"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': 'YOUR_API_KEY',
'method': 'userrecaptcha',
'version': 'v3',
'googlekey': '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
'pageurl': 'http://mysite.com/page/containing/recaptcha',
'domain': 'www.recaptcha.net',
'action': 'test',
'min_score': '0.5',
'soft_id': '1234',
'json': '1'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': 'YOUR_API_KEY',
'method': 'userrecaptcha',
'version': 'v3',
'googlekey': '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
'pageurl': 'https://mysite.com/page/containing/recaptcha-v3',
'domain': 'www.recaptcha.net',
'action': 'test',
'min_score': '0.5',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "YOUR_API_KEY")
_ = writer.WriteField("method", "userrecaptcha")
_ = writer.WriteField("version", "v3")
_ = writer.WriteField("googlekey", "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu")
_ = writer.WriteField("pageurl", "http://mysite.com/page/containing/recaptcha")
_ = writer.WriteField("domain", "www.recaptcha.net")
_ = writer.WriteField("action", "test")
_ = writer.WriteField("min_score", "0.5")
_ = writer.WriteField("soft_id", "1234")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
reCAPTCHA Enterprise
reCAPTCHA Enterprise is the latest type of CAPTCHA from Google, combining the capabilities of V2 and V3. It also allows website administrators to inform Google about whether they believe the user interacting with the site after solving the CAPTCHA is a bot or a human.
How to Use Our Service to Solve reCAPTCHA Enterprise
- Identify the sitekey and other parameters. Depending on the CAPTCHA configuration on the website, it may include an action parameter, similar to V3, and may also require a min_score.
-
Send an HTTP GET or POST request to our API at:
https://api.solvecaptcha.com/in.phpExample URL request:
https://api.solvecaptcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=userrecaptcha&googlekey=6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u&pageurl=https://example.com/page/with/recaptcha-v2-enterprise&enterprise=1&action=verify&json=1
A full list of request parameters can be found in the table below.
Code examples for submitting reCAPTCHA V2 Enterprise and reCAPTCHA V3 Enterprise using cURL, Python, JavaScript (Node.js), and Go are provided below.
- Retrieve the ID of the created CAPTCHA.
-
Request the solution result from
https://api.solvecaptcha.com/res.phpExample URL request:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&json=1&id=2122988149
- Use the received token on the website. The method of applying the token depends on the specific web resource and the requests it performs. There is no universal algorithm for this.
- If, after using the token, it becomes clear whether it worked or not, you can notify us. If the CAPTCHA was not successfully solved, send a reportbad. If the CAPTCHA was successfully solved, send a reportgood.
List of GET/POST Request Parameters for https://api.solvecaptcha.com/in.php
| POST Parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes | userrecaptcha — specifies that you are solving a reCAPTCHA |
| googlekey | String | Yes | The value of the sitekey parameter that you found in the website's code |
| pageurl | String | Yes | The full URL of the page where you are solving the reCAPTCHA |
| version | String | No |
reCAPTCHA version: v2 — indicates that this is reCAPTCHA V2 v3 — indicates that this is reCAPTCHA V3 Default: V2 |
| enterprise | Number Default: 0 |
No | 1 — indicates that this is reCAPTCHA Enterprise |
| domain | String Default: google.com |
No | The domain used to load reCAPTCHA, which can be either recaptcha.net or google.com. |
| invisible | Number Default: 0 |
No | 1 — indicates that the site uses an invisible reCAPTCHA. 0 — regular reCAPTCHA. |
| action | String Default: verify |
No | The value of the action parameter that you found in the website's code |
| min_score | Number Default: 0.4 |
No | Required score value. The recommended range is from 0.3 to 0.9. |
| data-s | String | No | The data-s parameter found on the page represents a value used for processing requests in Google's search engine and other company services. |
| cookies | String | No |
Your cookies that will be used by the worker to solve the CAPTCHA.
In the CAPTCHA response, we will return the worker's cookies, but only when using json=1. Format: KEY:Value, separator - semicolon, for example: KEY1:Value1;KEY2:Value2;You can use an extended cookie submission method, which is described in detail in the cookies section. |
| userAgent | String | No | Sets your userAgent for the worker |
| proxy | String | No |
Format: username:[email protected]:3128 More information about proxies can be found here. |
| proxytype | String | No | Type of your proxy server: HTTP, HTTPS, SOCKS4, SOCKS5. |
| header_acao | Number Default: 0 |
No |
0 — disabled 1 — enabled If enabled, in.php will add the header
Access-Control-Allow-Origin:* in the response.Used for cross-domain AJAX requests from web applications. |
| json | Number Default: 0 |
No |
0 — the server will return a response as plain text 1 — the server will return a response in JSON format |
List of GET/POST Parameters for https://api.solvecaptcha.com/res.php
| GET Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| action | String | Yes | get — retrieve the CAPTCHA response |
| id | Number | Yes | The CAPTCHA ID received from in.php. |
| json | Number Default: 0 |
No |
0 — the server will return a response as plain text 1 — the server will return a response in JSON format |
| header_acao | Number Default: 0 |
No |
0 — disabled 1 — enabled If enabled, in.php will add the
Access-Control-Allow-Origin:* header to the response. Used for cross-domain AJAX requests from web applications. |
Code examples for sending reCAPTCHA V2 Enterprise:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="1abc234de56fab7c89012d34e56fa7b8"' \
--form 'method="userrecaptcha"' \
--form 'googlekey="6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"' \
--form 'pageurl="https://mysite.com/page/containing/recaptcha-v2-enterprise"' \
--form 'enterprise="1"' \
--form 'userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"' \
--form 'cookies="KEY1:Value1;KEY2:Value2;"' \
--form 'data-s="data-s_example_value"' \
--form 'invisible="0"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': '1abc234de56fab7c89012d34e56fa7b8',
'method': 'userrecaptcha',
'googlekey': '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
'pageurl': 'https://mysite.com/page/containing/recaptcha-v2-enterprise',
'enterprise': '1',
'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'cookies': 'KEY1:Value1;KEY2:Value2;',
'data-s': 'data-s_example_value',
'invisible': '0',
'json': '1'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': '1abc234de56fab7c89012d34e56fa7b8',
'method': 'userrecaptcha',
'googlekey': '6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
'pageurl': 'https://mysite.com/page/containing/recaptcha-v2-enterprise',
'enterprise': '1',
'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'cookies': 'KEY1:Value1;KEY2:Value2;',
'data-s': 'data-s_example_value',
'invisible': '0',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "1abc234de56fab7c89012d34e56fa7b8")
_ = writer.WriteField("method", "userrecaptcha")
_ = writer.WriteField("googlekey", "6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u")
_ = writer.WriteField("pageurl", "https://mysite.com/page/containing/recaptcha-v2-enterprise")
_ = writer.WriteField("enterprise", "1")
_ = writer.WriteField("userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
_ = writer.WriteField("cookies", "KEY1:Value1;KEY2:Value2;")
_ = writer.WriteField("data-s", "data-s_example_value")
_ = writer.WriteField("invisible", "0")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Code examples for sending reCAPTCHA V3 Enterprise:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="1abc234de56fab7c89012d34e56fa7b8"' \
--form 'method="userrecaptcha"' \
--form 'googlekey="6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b"' \
--form 'pageurl="https://mysite.com/page/containing/recaptcha-v3-enterprise"' \
--form 'version="v3"' \
--form 'enterprise="1"' \
--form 'action="demo_action"' \
--form 'min_score="0.5"' \
--form 'domain="www.recaptcha.net"' \
--form 'userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"' \
--form 'cookies="KEY1:Value1;KEY2:Value2;"' \
--form 'data-s="data-s_example_value"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': '1abc234de56fab7c89012d34e56fa7b8',
'method': 'userrecaptcha',
'googlekey': '6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b',
'pageurl': 'https://mysite.com/page/containing/recaptcha-v3-enterprise',
'version': 'v3',
'enterprise': '1',
'action': 'demo_action',
'min_score': '0.5',
'domain': 'www.recaptcha.net',
'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'cookies': 'KEY1:Value1;KEY2:Value2;',
'data-s': 'data-s_example_value',
'json': '1'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': '1abc234de56fab7c89012d34e56fa7b8',
'method': 'userrecaptcha',
'googlekey': '6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b',
'pageurl': 'https://mysite.com/page/containing/recaptcha-v3-enterprise',
'version': 'v3',
'enterprise': '1',
'action': 'demo_action',
'min_score': '0.5',
'domain': 'www.recaptcha.net',
'userAgent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
'cookies': 'KEY1:Value1;KEY2:Value2;',
'data-s': 'data-s_example_value',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "1abc234de56fab7c89012d34e56fa7b8")
_ = writer.WriteField("method", "userrecaptcha")
_ = writer.WriteField("googlekey", "6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b")
_ = writer.WriteField("pageurl", "https://mysite.com/page/containing/recaptcha-v3-enterprise")
_ = writer.WriteField("version", "v3")
_ = writer.WriteField("enterprise", "1")
_ = writer.WriteField("action", "demo_action")
_ = writer.WriteField("min_score", "0.5")
_ = writer.WriteField("domain", "www.recaptcha.net")
_ = writer.WriteField("userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
_ = writer.WriteField("cookies", "KEY1:Value1;KEY2:Value2;")
_ = writer.WriteField("data-s", "data-s_example_value")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Cloudflare Turnstile
Cloudflare Turnstile is a CAPTCHA system developed by Cloudflare designed to protect web forms and pages from automated submissions or malicious activity.
Turnstile is used in two scenarios:
-
As a standalone CAPTCHA widget embedded on a webpage to safeguard forms against automated submissions.
In this setup, the sitekey is retrieved and sent to the API alongside the full page URL.
The resulting token is then added to the
cf-turnstile-responseandg-recaptcha-responsefields before form submission. Optionally, a callback can be defined in theturnstile.rendermethod. -
On Cloudflare-proxied websites where the Turnstile Challenge page appears.
In this case, specific parameters (
cData,chlPageData, andaction) must be extracted, along with the User-Agent value provided by the API.
Standalone Turnstile captcha
Request example:
https://mysite.com/in.php?method=turnstile&key=YOUR_API_KEY&sitekey=0x4AAAAAAAVrOwQWPlm3Bnr5&pageurl=https%3A%2F%2Fmysite.com%2Fregister&json=1
Code examples for submitting Cloudflare Turnstile using cURL, Python, JavaScript, and Go are described below.
Response example:
{
"status": 1,
"request": "74327409378"
}
The returned ID can be used to retrieve the CAPTCHA solution by sending a request to the res.php endpoint of the API.
Turnstile captcha on Cloudflare Challenge pages
To bypass the Turnstile CAPTCHA on Cloudflare Challenge pages, you must include the following additional parameters in your request:
action: The action parameter value extracted from the page.data: The cData value passed to theturnstile.rendermethod or defined in thedata-cdataattribute.pagedata: ThechlPageDatavalue passed to theturnstile.rendermethod.
How to extract the required parameters
To extract the required parameters, you can redefine the turnstile.render method to capture the parameters passed to it during execution. This involves injecting JavaScript code into the page before the Turnstile widget is initialized. Below is an example of how to achieve this:
const i = setInterval(() => {
if (window.turnstile) {
clearInterval(i);
window.turnstile.render = (a, b) => {
let p = {
method: "turnstile",
key: "YOUR_API_KEY",
sitekey: b.sitekey,
pageurl: window.location.href,
data: b.cData,
pagedata: b.chlPageData,
action: b.action,
userAgent: navigator.userAgent,
json: 1
};
console.log(JSON.stringify(p));
window.tsCallback = b.callback;
return 'foo';
};
}
}, 50);
Request example:
https://api.solvecaptcha.com/in.php?key=YOUR_API_KEY&method=turnstile&sitekey=0x0AAAAAAADnPIDROzbs0Aaj&data=7fab0000b0e0ff00&pagedata=3gAFo2...0ME1UVT0=&pageurl=https://mysite.com/&action=managed&json=1
Response example:
{
"status": 1,
"request": "74327409378"
}
Use the returned ID to request the result from res.php endpoint of our API:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=74327409378&json=1
Result example:
{
"status": 1,
"request": "0.4uMMZZdSfsVM8...610cd090",
"useragent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
}
List of GET/POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | Your API key |
| method | String | Yes | turnstile - defines that you're sending Cloudflare Turnstile |
| sitekey | String | Yes | Value of sitekey parameter you found on the page |
| pageurl | String | Yes | Full URL of the page where you see the captcha |
| action | String | No* | Value of optional action parameter you found on the page, can be defined in data-action attribute or passed to turnstile.render call |
| data | String | No* | The value of cData passed to turnstile.render call. Also can be defined in data-cdata attribute |
| pagedata | String | No* | The value of chlPageData passed to turnstile.render call |
| header_acao | Integer Default: 0 |
No | 0 - disabled 1 - enabled. If enabled, in.php will include Access-Control-Allow-Origin: * header in the response. Used for cross-domain AJAX requests in web applications. Also supported by res.php. |
| json | Integer Default: 0 |
No | 0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| proxy | String | No | Format: login:[email protected]:3128You can find more info about proxies here. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
* - parameters required to bypass Turnstile on Cloudflare Challenge pages
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | Your API key |
| action | String | Yes | get - get the answer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No | 0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
Code examples for send Cloudflare Turnstile:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="YOUR_API_KEY"' \
--form 'method="turnstile"' \
--form 'sitekey="0x1AAAAAAAAkg0s2VIOD34y5"' \
--form 'pageurl="https://mysite.com/register"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': 'YOUR_API_KEY',
'method': 'turnstile',
'sitekey': '0x1AAAAAAAAkg0s2VIOD34y5',
'pageurl': 'https://mysite.com/register',
'json': '1'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': 'YOUR_API_KEY',
'method': 'turnstile',
'sitekey': '0x4AAAAAAAPMtoL-SSuvUpPf',
'pageurl': 'https://mysite.com/page/containing/cloudflare-turnstile',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "YOUR_API_KEY")
_ = writer.WriteField("method", "turnstile")
_ = writer.WriteField("sitekey", "0x1AAAAAAAAkg0s2VIOD34y5")
_ = writer.WriteField("pageurl", "https://mysite.com/register")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Amazon captcha
Amazon captcha, also known as AWS WAF captcha, is a component of the system provided by Amazon AWS.
To bypass the captcha, you need to collect the following parameters from the challenged page:
sitekey- value of thekeyparameter in the page sourceiv- value of theivparameter in the page sourcecontext- value of thecontextparameter in the page sourcechallenge_script- the URL of thechallenge.jsscriptcaptcha_script- the URL of thecaptcha.jsscriptpageurl- the full URL of the page where the CAPTCHA challenge was presented
Request Example POST https://api.solvecaptcha.com/in.php
{
"key": "YOUR_API_KEY",
"method": "amazon_waf",
"sitekey": "XXXXX",
"pageurl": "https://non-existent-example.execute-api.us-east-1.amazonaws.com/latest",
"context": "XXXXX",
"challenge_script": "https://XXXXX.token.awswaf.com/XXXXX.js",
"captcha_script": "https://XXXXX.captcha.awswaf.com/XXXXX/captcha.js",
"iv": "XXXXX",
"json": 1
}
If the request is successful, the response will look like this:
{
"status": 1,
"request": "XXXXX"
}
If the request fails, an error code will be returned instead.
Retrieving the Result
Wait 15–20 seconds, then send a request to GET https://api.solvecaptcha.com/res.php
Solved CAPTCHA Response
If the CAPTCHA has been solved:
{
"status": 1,
"request": {
"captcha_voucher": "XXXXX",
"existing_token": "XXXXX"
}
}
CAPTCHA Not Ready
If the CAPTCHA is still being solved:
{
"status": 0,
"request": "CAPCHA_NOT_READY"
}
Try again in 5 seconds.
Error Handling
If something goes wrong, the server will return an error code. Refer to the error list for details.
Parameter Reference
List of POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | Yes | Your API key |
| method | string | Yes | Must be amazon_waf |
| sitekey | string | Yes | Value of key from the CAPTCHA page |
| iv | string | Yes | Value of iv from the CAPTCHA page |
| context | string | Yes | Value of context from the CAPTCHA page |
| pageurl | string | Yes | Full URL of the page where the CAPTCHA appears |
| challenge_script | string | No | Full URL to challenge.js |
| captcha_script | string | No | Full URL to captcha.js |
| header_acao | integer | No | 1 to include CORS headers in response (default: 0) |
| json | integer | No | 1 for JSON response, 0 for plain text (default) |
| proxy | string | No | Format: login:password@host:port |
| proxytype | string | No | One of: HTTP, HTTPS, SOCKS4, SOCKS5 |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | string | Yes | Your API key |
| action | string | Yes | Must be get |
| id | integer | Yes | CAPTCHA ID received from the in.php response |
| json | integer | No | 1 for JSON response, 0 for plain text (default) |
GET example:
https://api.solvecaptcha.com/res.php?key=XXXXX&action=get&id=XXXXX
Cutcaptcha
Token-based method for automated solving of Cutcaptcha.
The token received must be set as the value attribute of the input#cap_token element and/or passed to the callback function.
Method specification
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | cutcaptcha |
| misery_key | String | Yes | The value of CUTCAPTCHA_MISERY_KEY variable defined on page |
| api_key | String | Yes | The value of data-apikey attribute of iframe's body. Also the name of javascript file included on the page |
| pageurl | String | Yes | Full URL of the page where you solve the captcha |
| proxy | String | No | Your proxy: login:[email protected]:3128 You can find more info about proxies here |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5 |
| json | Number | No | Set to 1 to get the response as JSON. Default: 0 |
| soft_id | Number | No | ID of software developer. Developers who integrated their software with 2Captcha get reward: 10% of spendings of their software users |
Request example POST https://api.solvecaptcha.com/in.php
{
"key": "YOUR_API_KEY",
"method": "cutcaptcha",
"misery_key": "c73e1d4a92b6f80c5d1a7e6b34f2c918ab05d7e4",
"api_key": "K7d42QPx",
"pageurl": "https://example.cc/foo/bar.html",
"json": 1
}
Request will return the id of your captcha. Use it to get the result.
Getting the result POST https://api.solvecaptcha.com/res.php
{
"key": "YOUR_API_KEY",
"action": "get",
"id": 2122988149,
"json": 1
}
Result example
{
"status": 1,
"request": "Qx7L9kRtJm2aBBbWvHdP4FNy6TSuC8eZ"
}
Using the token
Use the returned token as a value for input with id = cap_token, then submit it's parent form, for example:
document.querySelector('input#cap_token').value = 'Qx7L9kRtJm2aBBbWvHdP4FNy6TSuC8eZ';
document.querySelector('form').submit();
If there's a callback function defined, you can call it passing the token as argument:
capResponseCallback('Qx7L9kRtJm2aBBbWvHdP4FNy6TSuC8eZ');
Lemin Captcha
Lemin is a Puzzle captcha. To solve Lemin:
-
Find the value of captcha_id parameter in the source code of the page or in the script source link that looks like:
https://api.leminnow.com/captcha/v1/cropped/CROPPED_7f3d9a1_c8b5e4a1d7f9036b2a1e5c4d9f7a0b3c/js.Also find the root part of the script URL, for example:
https://api.leminnow.com/and use it inapi_serverparameter.And finally find the id of parent div element of the captcha script tag and use the id as value for
div_idparameter. -
Submit a HTTP GET or POST request to our API URL:
https://solvecaptcha.com/in.phpwith method set to lemin and provide the values found on previous step as captcha_id, div_id and api_server and the full page URL as value for pageurl. You can find the full list of parameters in the table below.Request example:
{ "key": "9f4b28d6e7c1a53b80d94e2f6ab3c7d1", "method": "lemin", "captcha_id": "CROPPED_7a9c4e2_f6b13c9d8a7e4b2c1d5f90a6e3b7c4d2", "div_id": "lemin-cropped-captcha", "api_server": "https://api.leminnow.com/", "pageurl": "https://solvecaptcha.com/demo/lemin", "json": 1 } -
If everything is fine server will return the ID of your captcha
{ "status": 1, "request": "2115617653" }Otherwise server will return an error code.
-
Make a 15-20 seconds timeout then submit a HTTP GET request to our API URL:
https://solvecaptcha.com/res.phpto get the result. The full list of parameters is in the table below.If captcha is already solved server will respond in JSON and return the answer containing the following values:
answer,challenge_id{ "answer": "0x0xdkx0x0xctx0xbxb7x0xmxblx0xwx83x0x2tx65x0x3hx6vx0x25x5nx0x2qx2dx0x48x27x0x4ex3qx0x4ax1hx0x55x21x0x5fx21x0x5fx1qx0x55x1qx0x55x1hx0x55x17x0x55xvx0x5fxvx0x5fxmx0x5fxbx0x5fx0x_?_gAAAAABm7P3fd9qRXbLxTqnv6pYHJRU_zfE8HtpZDVrjkcwfPBlme19KJXrUNW_SgACN57VY_TZKEH28yQdRkatuYGjbVIsB4pzf6qA5dW7J-QgKRM2sCYpXOgBzFsNVdYB_dqPLWFGr", "challenge_id": "7c82a9f4-6d31-4e8b-9c7a-2f6d5b91a4e3" }If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds.
If something went wrong server will return an error code.
-
Use the values returned in your request to the target website passing them in the corresponding request fields:
answerchallenge_id
List of GET/POST request parameters for https://solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | lemin - defines that you're sending Lemin |
| captcha_id | String | Yes | Value of captcha_id parameter you found on page |
| div_id | String | No | The id of captcha parent div element |
| api_server | String | No | The domain part of script URL you found on page. Default value: https://api.leminnow.com/ |
| pageurl | String | Yes | Full URL of the page where you see the captcha |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include Access-Control-Allow-Origin:* header in the response.Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| soft_id | Integer | No | ID of software developer. Developers who integrated their software with 2Captcha get reward: 10% of spendings of their software users. |
| proxy | String | No |
Format: login:[email protected]:3128 You can find more info about proxies here. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
List of GET request parameters for https://solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
MTCaptcha
Token-based method for automated solving of MTCaptcha.
Method specification
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | mt_captcha |
| sitekey | String | Yes | The value of sitekey parameter found on the page |
| pageurl | String | Yes | Full URL of the page where you solve the captcha |
| proxy | String | No |
Your proxy: login:[email protected]:3128 You can find more info about proxies here |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5 |
| json | Number | No | Set to 1 to get the response as JSON. Default: 0 |
| soft_id | Number | No | ID of software developer. Developers who integrated their software with 2Captcha get reward: 10% of spendings of their software users |
Request example
Endpoint: https://solvecaptcha.com/in.php
Method: POST
{
"key": "YOUR_API_KEY",
"method": "mt_captcha",
"sitekey": "MTPublic-KzqLY1cKH",
"pageurl": "https://solvecaptcha.com/demo/mtcaptcha",
"json": 1
}
Request will return the id of your captcha. Use it to get the result.
Getting the result
Request example
Endpoint: https://solvecaptcha.com/res.php
Method: POST
{
"key": "YOUR_API_KEY",
"action": "get",
"id": 1984783152,
"json": 1
}
Result example
{
"status": 1,
"request": "v1(b3d91ac7,9ab4d2e..7f1c9a6b3d4e,Q7k2Lp9)"
}
Friendly Captcha
Token-based method for automated solving of Friendly Captcha.
The token received must be set as the value attribute of the input#cap_token element and/or passed to the callback function.
Important: To successfully use the received token, the captcha widget must not be loaded on the page. To do this, you need to abort request to
/friendlycaptcha/...module.min.json the page. When the captcha widget is already loaded on the page, there is a high probability that the received token will not work.
Method specification
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | friendly_captcha |
| sitekey | String | Yes | The value of data-apikey attribute of captcha's div element on page. |
| pageurl | String | Yes | Full URL of the page where you solve the captcha |
| version | String | No | Friendly Captcha version. v1 — Friendly Captcha V1. v2 — Friendly Captcha V2. Default: v1. See the official Friendly Captcha documentation for more details on version differences. |
| module_script | String | No | URL of the Friendly Captcha script with the type="module" attribute, found on the captcha page. |
| nomodule_script | String | No | URL of the Friendly Captcha script with the nomodule attribute, found on the captcha page. |
| proxy | String | No | Your proxy: login:[email protected]:3128 You can find more info about proxies here |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5 |
| json | Number | No | Set to 1 to get the response as JSON. Default: 0 |
| soft_id | Number | No | ID of software developer. Developers who integrated their software with our service get reward: 10% of spendings of their software users |
Request example POST https://api.solvecaptcha.com/in.php
Friendly Captcha V1:
{
"key": "YOUR_API_KEY",
"method": "friendly_captcha",
"sitekey": "7KXMD4TQ9PL8RW",
"pageurl": "https://example.com",
"version": "v1",
"module_script": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.module.min.js",
"nomodule_script": "https://cdn.example.com/static/js/friendly-challenge/@0.9.1/widget.js",
"json": 1
}
Friendly Captcha V2:
{
"key": "YOUR_API_KEY",
"method": "friendly_captcha",
"sitekey": "7KXMD4TQ9PL8RW",
"pageurl": "https://example.com",
"version": "v2",
"module_script": "https://cdn.example.com/v2/widget.module.min.js",
"nomodule_script": "https://cdn.example.com/v2/widget.js",
"json": 1
}
Request will return the id of your captcha. Use it to get the result.
Getting the result
Request example POST https://api.solvecaptcha.com/in.php
{
"key": "YOUR_API_KEY",
"action": "get",
"id": "2112373961",
"json": 1
}
Result example
{
"status": 1,
"request": "c3e9a7d5f1b2486fae7c93d2ab41e8f0.Q7K2L...BBBBBB.BhEF",
}
Using the token
Use the returned token as a value for input with name = frc-captcha-solution, then submit it's parent form, for example:
document.querySelector('input.frc-captcha-solution').value = 'c3e9a7d5f1b2486fae7c93d2ab41e8f0.Q7K2L...BBBBBB.BhEF';
document.querySelector('form').submit();
Please note, that form name can be customized with data-solution-field-name attribute, then you need to use the name set as the attribute's value.
If there's a callback function defined, you can call it passing the token as argument. For example, if data-callback="doneCallback" you should run it as:
doneCallback('c3e9a7d5f1b2486fae7c93d2ab41e8f0.Q7K2L...BBBBBB.BhEF');
Geetest
Geetest is a type of captcha where you have to move a piece of a puzzle or select some figures in the order.
To solve Geetest captcha with our service you have to:
-
Find the following Geetest captcha parameters on the target website (usually you can find them inside
initGeetestfunction).gt- public website key (static)challenge- dynamic challenge keyapi_server- API domain (optional)
-
Submit an HTTP GET or POST request to our API URL:
https://api.solvecaptcha.com/in.phpwith method set togeetest, providing values found in the previous step in your request as values for corresponding request parameters and also the full page URL as the value forpageurl.You can find the full list of parameters in the table below.
Request URL example:
https://api.solvecaptcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=geetest>=f1ab2cdefa3456789012345b6c78d90e&challenge=12345678abc90123d45678ef90123a456b&api_server=api-na.geetest.com&pageurl=https://www.site.com/page/&json=1Code examples for submitting GeeTest captcha using cURL, Python, JavaScript, and Go are described below.
-
If everything is fine, the server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON
{"status":1,"request":"2122988149"}if thejsonparameter was used. Otherwise, the server will return an error code. -
Make a 15-20 second timeout, then submit an HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result. The full list of parameters is in the table below.If the captcha is already solved, the server will return the response in JSON. The response contains three values:
challenge,validate, andseccode:{ "status": 1, "request": { "geetest_challenge": "6983fe8d9b791f70ed9d6aa09a0aa3587t", "geetest_validate": "40cfb50a44cead6fc8464858a805b1b3", "geetest_seccode": "40cfb50a44cead6fc8464858a805b1b3|jordan" } }If the captcha is not solved yet, the server will return CAPCHA_NOT_READY. Repeat your request in 5 seconds.
If something went wrong, the server will return an error code.
-
Use the values received from our API to submit your request to the target website, placing the values into the corresponding request fields:
geetest_challengegeetest_validategeetest_seccode
Important: you should get a new challenge value for each request to our API. Once captcha was loaded on the page the challenge value becomes invalid. You should inspect requests made to the website when the page is loaded to identify a request that gets a new challenge value. Then you should make such a request each time to get a valid challenge value.
List of GET/POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | geetest - defines that you're sending a Geetest captcha |
| gt | String | Yes | Value of gt parameter you found on the target website |
| challenge | String | Yes | Value of challenge parameter you found on the target website |
| api_server | String | No | Value of api_server parameter you found on the target website |
| offline | Number Default: 0 |
No | Set to 1 if offline: true is used in initGeetest. |
| new_captcha | Number Default: 0 |
No | Set to 1 if new_captcha: true is used in initGeetest. |
| pageurl | String | Yes | Full URL of the page where you see Geetest captcha |
| header_acao | Integer Default: 0 |
No | Set to 1 to include Access-Control-Allow-Origin:* header. |
| json | Integer Default: 0 |
No | 0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
| proxy | String | No | Proxy format: login:[email protected]:3128. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
| userAgent | String | No | Your userAgent used to solve the captcha. |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| action | String | Yes | get - get the answer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 1 |
No | Always returns JSON for Geetest captcha. |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
Code examples for send GeeTest captcha:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="YOUR_API_KEY"' \
--form 'method="geetest"' \
--form 'gt="f1ab2cdefa3456789012345b6c78d90e"' \
--form 'challenge="12345678abc90123d45678ef90123a456b"' \
--form 'api_server="api-na.geetest.com"' \
--form 'pageurl="https://www.site.com/page/"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': 'YOUR_API_KEY',
'method': 'geetest',
'gt': 'f1ab2cdefa3456789012345b6c78d90e',
'challenge': '12345678abc90123d45678ef90123a456b',
'api_server': 'api-na.geetest.com',
'pageurl': 'https://www.site.com/page/'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': 'YOUR_API_KEY',
'method': 'geetest',
'gt': 'f1ab2cdefa3456789012345b6c78d90e',
'challenge': '12345678abc90123d45678ef90123a456b',
'api_server': 'api-na.geetest.com',
'pageurl': 'https://www.site.com/page/'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "YOUR_API_KEY")
_ = writer.WriteField("method", "geetest")
_ = writer.WriteField("gt", "f1ab2cdefa3456789012345b6c78d90e")
_ = writer.WriteField("challenge", "12345678abc90123d45678ef90123a456b")
_ = writer.WriteField("api_server", "api-na.geetest.com")
_ = writer.WriteField("pageurl", "https://www.site.com/page/")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Geetest v4 captcha
Geetest v4 is a new version of puzzle challenge, but you still have to move a piece of a puzzle to bypass it.
To solve Geetest v4 captcha with our service you need to:
-
Find the
captcha_idvalue in the page HTML source. Normally, you will find the value inside a script tag that includes Geetest v4 JavaScript code on the page. -
Submit an HTTP GET or POST request to our API URL:
https://api.solvecaptcha.com/in.phpwith method set to geetest_v4, providing thecaptcha_idfound on the page and full page URL as value for pageurl.Request URL example:
https://api.solvecaptcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=geetest_v4&captcha_id=f1ab2cdefa3456789012345b6c78d90e&&pageurl=https://www.site.com/page/Code examples for submitting GeeTest V4 captch using cURL, Python, JavaScript, and Go are described below.
-
If everything is fine, the server will return the ID of your captcha as plain text, like:
OK|2122988149or as JSON:{"status":1,"request":"2122988149"}if thejsonparameter was used. Otherwise, the server will return an error code. -
Make a 15-20 seconds timeout, then submit an HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.If captcha is already solved, the server will return the response in JSON:
{ "status": 1, "request": { "captcha_id": "e391447fd421dc634644d5a2ee9c73", "lot_number": "4ba5ab728db764e2a46qe083d4d663gd3f", "pass_token": "f29234g3e8f3ad20f12cd0d5ece03g3g6hd9424e9e6704e7h814c8de8j84r4", "gen_time": "1838256089", "captcha_output": "Sf3_je5GyO2g4V8m431BLIM4F5uK2webJdbXSntSbtTKUry4r6hGVQ3I2YzRBgBkGi4oJ9Xwu9w6WWKeY4mi1Oxc8qZxMlwJVvsVF2YZG2taOYHNA5UyOK6fk32sGRdq8gmypf-Fl9XOsvhtnGUi9xxN4CW7lj2VLMSdF_659SuVtfHtzdc3CcGSn1Z1k0SrtOsXZ_i7t9EEDciH-rcgTZz6hI-EFEbajage3Nbv0-33sODjdbk6MwmExDEGcm8hhQNYKQbbgF8rCNlxjk9wwkx63Up3s3-R8uDmcLHTM3BwW2SbccZzGjZW8rrPoC41qMNxPExMxipPldr0AQ7Z0-LTk61HmXZTmhYN9tbYwksfbgvck9l9bnhg5ddO7j8lKwYZbO1Hzjs85g6g7T053fyZe05WmClzNZ9F8g_sgMT2XTrhJXu_h67d4" } }If captcha is not solved yet, the server will return
CAPCHA_NOT_READY. Repeat your request in 5 seconds.If something went wrong, the server will return an error code.
- Use the values received from our API to submit your request to the target website the same way it is done when you bypass the captcha manually.
List of GET/POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | Your API key |
| method | String | Yes | geetest_v4 - defines that you're sending the Geetest v4 captcha |
| captcha_id | String | Yes | Value of captcha_id parameter you found on the target website |
| pageurl | String | Yes | Full URL of the page where you see Geetest captcha |
| risk_type | String | No | The risk_type parameter value is included in the CAPTCHA loading request. It’s dynamic, valid for a single use, and has an expiration time. |
| header_acao | Integer (Default: 0) |
No | 0 - disabled, 1 - enabled. If enabled, in.php will include Access-Control-Allow-Origin: * header in the response. |
| json | Integer (Default: 0) |
No | 0 - plain text response, 1 - JSON response |
| proxy | String | No |
Proxy format: login:[email protected]:3128.You can find more info about proxies here. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | Your API key |
| action | String | Yes | get - get the answer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php |
| json | Integer (Default: 1) |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
Code examples for send GeeTest V4 captcha:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="YOUR_API_KEY"' \
--form 'method="geetest_v4"' \
--form 'captcha_id="e392e1d7fd421dc63325744d5a2b9c73"' \
--form 'pageurl="https://www.site.com/page/"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': 'YOUR_API_KEY',
'method': 'geetest_v4',
'captcha_id': 'e392e1d7fd421dc63325744d5a2b9c73',
'pageurl': 'https://www.site.com/page/',
'json': '1'}
files=[
]
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': 'YOUR_API_KEY',
'method': 'geetest_v4',
'captcha_id': 'e392e1d7fd421dc63325744d5a2b9c73',
'pageurl': 'https://www.site.com/page/',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "YOUR_API_KEY")
_ = writer.WriteField("method", "geetest_v4")
_ = writer.WriteField("captcha_id", "e392e1d7fd421dc63325744d5a2b9c73")
_ = writer.WriteField("pageurl", "https://www.site.com/page/")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
FunCaptcha
Now we provide a method to solve FunCaptcha with a token.
The method is pretty simple:
-
You need to locate public key of FunCaptcha. There are two ways to find it: you can locate funcaptcha's div element and check the value of
data-pkeyparameter parameter or you can find the input element with namefc-tokenand then extract the key indicated afterpkfrom the value of this element. -
Submit a HTTP GET or POST request to our API URL:
https://api.solvecaptcha.com/in.phpwith method set to funcaptcha and provide the value found on previous step as value for publickey and full page URL as value for pageurl. Sending proxies is not obligatory ar the moment but it's recommended.
You can find the full list of parameters in the table below.Request URL example:
https://api.solvecaptcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=funcaptcha&publickey=12AB34CD-56F7-AB8C-9D01-2EF3456789A0&pageurl=http://mysite.com/page/with/funcaptcha/
-
If everything is fine server will return the ID of your captcha as plain text, like: OK|2122988149 or as JSON {"status":1,"request":"2122988149"} if json parameter was used.
Otherwise server will return an error code. -
Make a 10-20 seconds timeout then submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.
The full list of parameters is in the table below.If captha is already solved server will respond in plain text or JSON and return the answer token that looks like:
3084f4a302b176cd7.96368058|r=ap-southeast-1|guitextcolor=%23FDD531|metabgclr=%23FFFFFF|metaiconclr=%23202122|meta=3|lang=en|pk=12AB34CD-56F7-AB8C-9D01-2EF3456789A0|cdn_url=https://cdn.funcaptcha.com/fc|surl=https://funcaptcha.com
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code.
-
Locate the element with id fc-token and put the token into value of this element.
Please note: if you use nojs=1 parameter API will return just first part of token string like this: 3084f4a302b176cd7.96368058|r=ap-southeast-1 and you got to build the full string using the original value of fc-token
-
Do the rest what you need to do on the website: submit a form or click on a button or something else.
List of GET/POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes | funcaptcha – defines that you're sending a FunCaptcha using the token method |
| publickey | String | Yes | Value of pk or data-pkey parameter found in the page source |
| surl | String | No | Value of surl parameter found in the page source |
| data | String | No |
Custom data to pass to FunCaptcha. Example: data[blob]=stringValue
|
| pageurl | String | Yes | Full URL of the page where you see the FunCaptcha |
| userAgent | String | No | Tells us to use your user-agent value |
| header_acao | Integer Default: 0 |
No |
0 – disabled 1 – enabled If enabled, in.php will include Access-Control-Allow-Origin:* in the response.Used for cross-domain AJAX requests in web apps. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 – server will respond with plain text 1 – server will respond in JSON format |
| proxy | String | No |
Format: login:[email protected]:3128 You can find more info about proxies here. |
| proxytype | String | No | Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
Code examples for send FunCaptcha:
cURL
curl --location 'https://api.solvecaptcha.com/in.php' \
--form 'key="YOUR_API_KEY"' \
--form 'method="funcaptcha"' \
--form 'publickey="A8C45173-7FGA-5DFF-7130-P27HFM194E10"' \
--form 'surl="https://blizzard-api.arkoselabs.com"' \
--form 'data="{\"blob\":\"59GUybcGVCPYwwTt...kc9GEVDZNVj5Q==\"}"' \
--form 'pageurl="https://www.site.com/page/"' \
--form 'userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"' \
--form 'json="1"'
Python
import requests
url = "https://api.solvecaptcha.com/in.php"
payload = {'key': 'YOUR_API_KEY',
'method': 'funcaptcha',
'publickey': 'A8C45173-7FGA-5DFF-7130-P27HFM194E10',
'surl': 'https://blizzard-api.arkoselabs.com',
'data': '{"blob":"59GUybcGVCPYwwTt...kc9GEVDZNVj5Q=="}',
'pageurl': 'https://www.site.com/page/',
'userAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
'json': '1'}
headers = {}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.text)
JavaScript (Node.js)
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://api.solvecaptcha.com/in.php',
'headers': {
},
formData: {
'key': 'YOUR_API_KEY',
'method': 'funcaptcha',
'publickey': 'A8C45173-7FGA-5DFF-7130-P27HFM194E10',
'surl': 'https://blizzard-api.arkoselabs.com',
'data': '{"blob":"59GUybcGVCPYwwTt...kc9GEVDZNVj5Q=="}',
'pageurl': 'https://www.site.com/page/',
'userAgent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36',
'json': '1'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
Go
package main
import (
"fmt"
"bytes"
"mime/multipart"
"net/http"
"io"
)
func main() {
url := "https://api.solvecaptcha.com/in.php"
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("key", "YOUR_API_KEY")
_ = writer.WriteField("method", "funcaptcha")
_ = writer.WriteField("publickey", "A8C45173-7FGA-5DFF-7130-P27HFM194E10")
_ = writer.WriteField("surl", "https://blizzard-api.arkoselabs.com")
_ = writer.WriteField("data", "{\"blob\":\"59GUybcGVCPYwwTt...kc9GEVDZNVj5Q==\"}")
_ = writer.WriteField("pageurl", "https://www.site.com/page/")
_ = writer.WriteField("userAgent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36")
_ = writer.WriteField("json", "1")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Grid method
Solving reCAPTCHA V2 with that old method is less accurate and more compex. So we recommend to use the new method. But the old method is cheaper and we still support it.
We can solve recaptchas with different grids like 3x3, 2x4, 4x4.
Also you can solve reCAPTCHA V2 with ClickCaptcha method if it's more suitable for you.
And of course we support reCAPTCHA V2 challenges when you have to select around an object or few objects. Read more here.
To solve the reCAPTCHA V2 you have to:
-
Click on initial reCAPTCHA's checkbox. You will get a set of images and an instruction that tells you what to click. Actually it's one image with the grid on it.
-
Optionally: determine the grid and define it in your request with recaptchacols and recaptcharows parameters.
If not defined we'll check the size of the image. If it's 300x300px we put 3x3 grid on it. If the size is different we put 4x4 grid. -
Submit a HTTP POST request to our API URL:
https://api.solvecaptcha.com/in.phpproviding recaptcha parameter set to 1.Server accepts images in multipart or base64 format. You have to send only the image set without the grid and blue box.
Also you can provide instructions as an image using imginstructions parameter. For more info please check the full list of parameters in the table below.
-
Server will return captcha ID or an error code if something gone wrong.
-
Make a 5 seconds timeout and submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.If captha is already solved server will return the answer with numbers of grid cells that you need to click like: OK|click:3/8/9/.
Grid cells are numbered starting from number 1 from left to right from top to bottom. If the grid contain more than 9 cells, letters a-g are used for cells 10-16.
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code.
You simulate clicks on cells from the answer.
Canvas method
In case when reCAPTCHA challenge is to select around object you can pass canvas parameter set to 1.
Server will return the result in the following format: canvas:x,y,x,y,x,y;x,y,x,y,x,y;
Where each pair of x and y are coordinates of points you need to click to select an area around object. If there are more than one area, coordininates of areas will be separated by semicolon.
For example:
canvas:5,5,3,91,93,90,90,7,8,6; - one area
canvas:5,5,3,91,93,90,90,7,8,6;208,211,208,287,294,294,293,209,207,210;
- two areas
Point 0,0 is top left corner
of the image.
You need to click on these points one by one to pass the challenge.
Multipart sample form for reCAPTCHA V2 old method
YOUR_APIKEY is Your API key.
Base64 sample form for reCAPTCHA V2 old method
YOUR_APIKEY is your API key.
BASE64_RECAPTCHA_FILE is base64-encoded image body of reCAPTCHA V2.
BASE64_INSTRUCTION_FILE is base64-encoded image body of image with instruction.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| POST parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes |
post - defines that you're sending an image with
multipart form base64 - defines that you're sending a base64 encoded image |
| recaptcha | Integer | Yes | 1 - defines that you're sending recatcha as image |
| canvas |
Integer Default: 0 |
No | 1 - defines that you want to use canvas method |
| file | File | Yes* | Captcha image file. * - required if you submit image as a file (method=post) |
| body | String | Yes* | Base64-encoded captcha image * - required if you submit image as Base64-encoded string (method=base64) |
| textinstructions |
String Max 140 characters Endcoding: UTF-8 |
Yes |
Text with instruction for solving reCAPTCHA. For example: select images with trees. Not required if you're sending instruction as an image with imginstructions. |
| imginstructions | Image Max 100x100px, 25 kB |
Yes |
Image with instruction for solving reCAPTCHA. Not required if you're sending instruction as text with textinstructions. |
| recaptcharows | Integer | No | Number of rows in reCAPTCHA grid. |
| recaptchacols | Integer | No | Number of columns in reCAPTCHA grid. |
| can_no_answer | Integer Default: 0 |
No |
0 - not specified 1 - possibly there's no images that fit the instruction. Set the value to 1 only if it's possible that there's no images matching to the instruction. We'll provide a button "No matching images" to worker and you will receive No_matching_images as answer. |
| language | Integer Default: 0 |
No |
0 - not specified 1 - Cyrillic captcha 2 - Latin captcha |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Please note: you have to send the reCAPTCHA image itself, not its screenshot. And you dont have to combine that image with anything you like, just send it as is.
Max size for reCAPTCHA image is 100 kB.
Max size for imginstructions is 25 kB.
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
ClickCaptcha
This method allows you to solve any captcha that requires clicking on images, like Shapchat's Ghost Captcha, reCAPTCHA V2, ASIRRA, etc.
To solve any ClickCaptcha you have to:
-
Get an image and an instruction that tells you what to click.
-
Submit a HTTP POST request to our API URL:
https://api.solvecaptcha.com/in.phpproviding coordinatescaptcha parameter set to 1.
Server accepts images in multipart or base64 format.file File Yes* Captcha image file.
* - required if you submit image as a file (method=post)body String Yes* Base64-encoded captcha image
* - required if you submit image as Base64-encoded string (method=base64)You can provide an instruction as text using textinstructions parameter, but it's not obligatory if the instruction is already indicated on the image.
The full list of parameters is in the table below.
-
Server will return captcha ID or an error code if something gone wrong.
-
Make a 5 seconds timeout and submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.If captha is already solved server will return the answer with coordinates of points where you have to click, for example: OK|coordinate:x=39,y=59;x=252,y=72. Where the point with x=0,y=0 is the upper left corner of the image.
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code.
-
You simulate clicks on coordinates from the answer.
Multipart sample form for ClickCaptcha
YOUR_APIKEY is Your API key.
Base64 sample form for ClickCaptcha
YOUR_APIKEY is your API key.
BASE64_CLICKCAPTCHA_FILE is base64-encoded image body of ClickCaptcha.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| POST parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes |
post - defines that you're sending an image with
multipart form base64 - defines that you're sending a base64 encoded image |
| coordinatescaptcha | Integer | Yes | 1 - defines that you're sending recatcha as image |
| textinstructions |
String Max 140 characters Endcoding: UTF-8 |
Yes |
Text with instruction for solving ClickCaptcha. For example: click on images with ghosts. Not required if the image already contains the instruction. |
| imginstructions |
Image Max 400x150px, 100 kB |
Yes | Image with instruction for solving reCAPTCHA. Not required if you're sending instruction as text with textinstructions. |
| min_clicks |
Integer Default: 1 |
No | The minimum number of clicks to perform on the image |
| max_clicks | Integer | No | The maximum number of clicks that can be performed on the image |
| language | Integer Default: 0 |
No |
0 - not specified 1 - Cyrillic captcha 2 - Latin captcha |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in the
response.Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
RotateCaptcha
RotateCaptcha is a type of captcha where you have to rotate images to solve it. The most popular is FunCaptcha.
To solve RotateCaptcha you have to:
-
Get an image or several images that should be rotated.
-
Optionally: determine the angle for one rotation step and provide it as a value for angle parameter.
If not defined we'll use the default value for FunCaptcha: 40 degrees.The full list of parameters is in the table below.
-
Submit images to our server with HTTP POST request to our API URL:
https://api.solvecaptcha.com/in.phpsetting method parameter to rotatecaptcha. Server accepts images only in multipart format.Server will return captcha ID or an error code if something gone wrong.
-
Make a 5 seconds timeout and submit a HTTP GET request to our API URL:
https://api.solvecaptcha.com/res.phpto get the result.If captha is already solved server will return the answer with angles for each image like: OK|40|200|-120.
Positive values mean that images should be rotated clockwise.
Negative values mean that images should be rotated counter-clockwise.If captcha is not solved yet server will return CAPCHA_NOT_READY result. Retry your request after 5 seconds.
If something gone wrong server will return an error code. -
Rotate images to given angles to solve your RotateCaptcha.
Sample form for RotateCaptcha
YOUR_APIKEY is your API key.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| POST parameter | Type | Required | Description |
| key | String | Yes | your API key |
| method | String | Yes |
Captcha solving method. rotatecaptcha - defines that you're sending RotateCaptcha |
| angle |
Integer Default: 40 |
No |
Angle for one rotation step in degrees. If not defined we'll use the default value for FunCaptcha: 40 degrees. |
| file | Image | Yes* | Image to rotate in multipart format. * - required if you submit image as a file |
| body | Image | Yes* |
Image to rotate in base64 format. * - required if you submit image as a base64 |
| header_acao | Integer Default: 0 |
No |
0 - disabled 1 - enabled. If enabled in.php will include
Access-Control-Allow-Origin:* header in
the response.Used for cross-domain AJAX requests in web applications. Also supported by res.php.
|
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes | get - get the asnwer for your captcha |
| id | Integer | Yes | ID of captcha returned by in.php. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Request URL example:
https://api.solvecaptcha.com/res.php?key=1abc234de56fab7c89012d34e56fa7b8&action=get&id=2122988149
CaptchaFox
A token-based method for automatically solving CaptchaFox captchas through SolveCaptcha.
Method specification
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | SolveCaptcha API key |
| method | String | Yes | captchafox |
| sitekey | String | Yes | The value of the sitekey parameter found on the page or captured in network requests. |
| pageurl | String | Yes | The full URL of the page containing the captcha. |
| proxy | String | Yes | Your proxy in the format: login:[email protected]:3128 (Learn more) |
| proxytype | String | Yes | Proxy type: HTTP, HTTPS, SOCKS4, SOCKS5 |
| useragent | String | Yes | The User-Agent of the browser used to access the page with the captcha. |
| json | Integer | No | Pass 1 to receive the response in JSON format. Default: 0 |
| api_server | String | No | Default: https://cdn.captchafox.com/. Depending on the parameter value, the token format changes — it will be prefixed with MAM_. For this, you need to set the server URL to: https://s.uicdn.com/mampkg/@mamdev/core.frontend.libs.captchafox/Two different APIs return two different tokens. Choose the one you need. |
Request Example POST https://api.solvecaptcha.com/in.php
Form data parameters:
key=YOUR_API_KEY
method=captchafox
sitekey=XXXXX
pageurl=https://mysite.com/page/with/captcha-fox
proxy=login:[email protected]:8080
proxytype=http
useragent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36
json=1
or as a query string:
https://api.solvecaptcha.com/in.php?key=YOUR_API_KEY&method=captchafox&sitekey=XXXXX&pageurl=https://mysite.com/page/with/captcha-fox&proxy=login:[email protected]:8080&proxytype=http&useragent=Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/115.0.0.0%20Safari/537.36&json=1
The request will return the ID of your captcha task, which should be used to retrieve the solution.
Get task result
Request example
POST https://api.solvecaptcha.com/res.php
Form data parameters:
key=YOUR_API_KEY
action=get
id=XXXXX
json=1
or as a query string:
https://api.solvecaptcha.com/res.php?key=YOUR_API_KEY&action=get&id=XXXXX&json=1
Response example
{
"status": 1,
"request": "XXXXX"
}
Temu Captcha
Method for solving Temu CAPTCHA using a CAPTCHA image.
Image-based method method specification
We use the body (image in base64 format) and parts (images of the response parts that need to be moved) that you send us.
You need to get all the images and convert them to base64 format.
List of POST request parameters for https://api.solvecaptcha.com/in.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| key | String | Yes | your API key |
| method | String | Yes | temuimage |
| body | String | Yes | The main base64-encoded captcha image. |
| part1 | String | Yes | The part of puzzle |
| part2 | String | Yes | The part of puzzle |
| part3 | String | Yes | The part of puzzle |
| json | Integer | No | Set to 1 to get the response as JSON. Default: 0 |
Request example POST https://api.solvecaptcha.com/in.php
{
"key": "YOUR_API_KEY",
"method": "temuimage",
"body": "data:image/png;base64,iVBORw0KG...",
"part1": "data:image/png;base64,iVBORw0KG...",
"part2": "data:image/png;base64,iVBORw0KG...",
"part3": "data:image/png;base64,iVBORw0KG...",
"json": 1
}
The query will return the ID of your captcha, which should be used to get the result.
Getting the result
Request example GET https://api.solvecaptcha.com/res.php
{
"key": "YOUR_API_KEY",
"action": "get",
"id": 2122988149,
"json": 1
}
Result example
{
"cost": "0.0012",
"createTime": 1754563182,
"endTime": 1754563190,
"errorId": 0,
"ip": "46.53.232.76",
"solution": {
"coordinates": [
{
"x": 155,
"y": 358
},
{
"x": 152,
"y": 153
},
{
"x": 251,
"y": 333
}
]
},
"solveCount": 1,
"status": "ready"
}
Use the received coordinates to position the image pieces correctly.
Language support
Our API allows you to specify the captcha language using the lang parameter. Each worker in our system declares the languages they can read. When you submit a captcha with the lang parameter, the task is routed to workers who support that language. This makes it possible to solve captchas in non-Latin and non-Cyrillic scripts, such as Chinese or Vietnamese.
The list of supported languages is provided in the table below.
Language code (lang value) |
Language |
|---|---|
| en | English |
| ru | Russian |
| es | Spanish |
| pt | Portuguese |
| uk | Ukrainian |
| vi | Vietnamese |
| fr | French |
| id | Indonesian |
| ar | Arab |
| ja | Japanese |
| tr | Turkish |
| de | German |
| zh | Chinese |
| fil | Philippine |
| pl | Polish |
| th | Thai |
| it | Italian |
| nl | Nederlands (Dutch) |
| sk | Slovak |
| bg | Bulgarian |
| ro | Romanian |
| hu | Hungarian (Magyar) |
| ko | Korean |
| cs | Czech |
| az | Azerbaijani |
| fa | Persian (Farsi) |
| bn | Bengali |
| el | Greek |
| lt | Lithuanian |
| lv | Latvian |
| sv | Swedish |
| sr | Serbian |
| hr | Croatian |
| he | Hebrew |
| hi | Hindi |
| nb | Norwegian |
| sl | Slovenian |
| da | Danish |
| uz | Uzbek |
| fi | Finnish |
| ca | Catalan |
| ka | Georgian |
| ms | Malay |
| te | Telugu |
| et | Estonian |
| ml | Malayalam |
| be | Belorussian |
| kk | Kazakh |
| mr | Marathi |
| ne | Nepali |
| my | Burmese |
| bs | Bosnian |
| hy | Armenian |
| mk | Macedonian |
| pa | Punjabi (Punjabi) |
Error Handling
It's very important to use proper error handling in your code to avoid suspension of your account and service interruption.
Normally if something is wrong with your request server will
return an error.
Below you can find tables with lists of errors with
description:
Errors can be returned as plain text or as JSON if you provided json=1 parameter.
In very rare cases server can return an HTML page with error
text like 500 or 502 - please keep it in mind and handle such
cases correctly.
If you received anything that doesn't looks like the answer or
error code - make a 5 seconds timeout and then retry your
request.
List of in.php errors
| Error code | Description | Action |
| ERROR_WRONG_USER_KEY | You've provided key parameter value in incorrect format, it should contain 32 symbols. | Stop sending requests. Check your API key. |
| ERROR_KEY_DOES_NOT_EXIST | The key you've provided does not exists. | Stop sending requests. Check your API key. |
| ERROR_ZERO_BALANCE | You don't have money on your account. | Stop sending requests. Deposit your account to continue solving captchas. |
| ERROR_PAGEURL | pagurl parameter is missing in your request. |
Stop sending requests and change your code to provide
valid pagurl parameter. More info. |
| ERROR_NO_SLOT_AVAILABLE |
You can receive this error in two cases: 1. If you solve reCAPTCHA: the queue of your captchas that are not distributed to workers is too long. Queue limit changes dynamically and depends on total amount of captchas awaiting solution and usually it’s between 50 and 100 captchas. 2. If you solve Image Captcha: your maximum rate for image captchas is lower than current rate on the server. You can change your maximum rate in your account's settings. |
If you received this error, don't try to submit your
request again immediately.
Make 2-3 seconds timeout and then
retry to submit your request. |
| ERROR_ZERO_CAPTCHA_FILESIZE | Image size is less than 100 bytes. | Check the image file. |
| ERROR_TOO_BIG_CAPTCHA_FILESIZE | Image size is more than 100 kB. | Check the image file. |
| ERROR_WRONG_FILE_EXTENSION | Image file has unsupported extension. Accepted extensions: jpg, jpeg, gif, png. | Check the image file. |
| ERROR_IMAGE_TYPE_NOT_SUPPORTED | Server can't recognize image file type. | Check the image file. |
| ERROR_IP_NOT_ALLOWED | The request is sent from the IP that is not on the list of your allowed IPs. | Check the list of your allowed IPs here. |
| IP_BANNED | Your IP address is banned due to many frequent attempts to access the server using wrong authorization keys. | To lift the ban, please, contact our support team. |
| ERROR_CAPTCHAIMAGE_BLOCKED |
You've sent an image that is marked in our database as
unrecognizable. Usually that happens if the website where you found the captcha stopped sending you captchas and started to send "deny access" image. |
Try to override website's limitations. |
| MAX_USER_TURN |
You made more than 60 requests to
in.php within 3 seconds. Your account is banned for 10 seconds. Ban will be lifted automatically. |
Set at least 100 ms timeout between requests to in.php. |
| ERROR: NNNN |
Where NNNN is numeric error code. You exceeded request limit and your account is temporary suspended. |
You should set proper timeouts. Please refer to Request limits for more info. |
List of res.php errors
| Error code | Description | Action |
| CAPCHA_NOT_READY | Your captcha is not solved yet. | Make 5 seconds timeout and repeat your request. |
| ERROR_CAPTCHA_UNSOLVABLE |
We are unable to solve your captcha - three of our
workers were unable solve it or we didn't get an
answer within 90 seconds (300 seconds for reCAPTCHA
V2). We will not charge you for that request. |
You can retry to send your captcha. |
| ERROR_WRONG_USER_KEY | You've provided key parameter value in incorrect format, it should contain 32 symbols. | Stop sending requests. Check your API key. |
| ERROR_KEY_DOES_NOT_EXIST | The key you've provided does not exists. | Stop sending requests. Check your API key. |
| ERROR_WRONG_ID_FORMAT | You've provided captcha ID in wrong format. The ID can contain numbers only. | Check the ID of captcha or your code that gets the ID. |
| ERROR_WRONG_CAPTCHA_ID | You've provided incorrect captcha ID. | Check the ID of captcha or your code that gets the ID. |
| ERROR_BAD_DUPLICATES | Error is returned when 100% accuracy feature is enabled. The error means that max numbers of tries is reached but min number of matches not found. | You can retry to send your captcha again. |
| REPORT_NOT_RECORDED | Error is returned to your complain request if you already complained lots of correctly solved captchas. | Make sure that you're sending complain requests only for incorrectly solved captchas. |
| ERROR: NNNN |
Where NNNN is numeric error code. You exceeded request limit and your account is temporary suspended. |
You should set proper timeouts. Please refer to Request limits for more info. |
Request limits
Please remember and understand that each your request to our API generates multuple requests to our databases. That's why we ask to set proper timeouts for your requests and use proper error handling for cases when server returns an error (error message, http error or html page with error).
For example:
- If server returns ERROR_NO_SLOT_AVAILABLE make a 5 seconds timeout before sending next request.
- If server returns ERROR_ZERO_BALANCE set the timeout to 60 seconds.
- After uploading a captcha wait a least 5 seconds (10-20 for reCAPTCHA) and only then try to get the answer.
- If captcha is not solved yet - retry to get the answer after 5 seconds.
If your timeouts are configured incorrectly your account or IP address will be temporary blocked and server will return an error. See the list of error codes in the table below.
Error codes list for request limitations
| Error code | Blocking time | Blocking reason |
| ERROR: 1001 | 10 minutes | You received 120 ERROR_NO_SLOT_AVAILABLE errors in one minute because your current bid is lower than current bid on the server |
| ERROR: 1002 | 5 minutes | You received 120 ERROR_ZERO_BALANCE errors in one minute because your balance is out |
| ERROR: 1003 | 30 seconds |
You are getting ERROR_NO_SLOT_AVAILABLE because you
are uploading many captchas and server has a long
queue of your captchas that are not distributed to
workers. You received three times more errors than amount of captchas you sent (but not less than 120 errors). Increase the timeout if you see this error. |
| ERROR: 1004 | 10 minutes | Your IP address is blocked because there were 5 requests with incorrect API key from your IP. |
| ERROR: 1005 | 5 minutes |
You are making too many requests to res.php to get
answers. We use the following rule to block your account: R > C * 20 + 1200 Where: R - the amount of your requests C - the amount of captchas you've uploaded That means that you don't have to make more than 20 requests to res.php per each captcha. Please remember that balance request sent to res.php also counts! |
Using proxies
Get the best residential proxies at 2Captcha Proxy 🔥 Just follow the link to get 50% off — available for all SolveCaptcha users!
Proxies can be used to solve reCAPTCHA V2 and FunCaptcha from the same IP address as you load the page.
Using proxies is not obligatory at the moment but in future algorithms of reCAPTCHA and FunCaptcha can be changed and it will be required.
And even now some websites check IP address used for solving reCAPTCHA V2. So we recommend you to be ready for these changes.
If you send us the proxy, we check it's availability trying to
open the website through you proxy, and if we can't do that we
will not use your proxy.
If we're able to use your proxy
- we'll load the reCAPTCHA through it for solving.
We don't have our own proxy servers that we can offer to you so you have to use 3rd-party services or setup your own proxy.
We support the following proxy types: SOCKS4, SOCKS5, HTTP, HTTPS with authentication by IP address or login and password.
If your proxy uses IP authentication you have to add our IP
addresses to the list of allowed IPs of the proxy:
138.201.188.166
Then provide your proxy IP address and port as a value for
proxy parameter.
And the type of your proxy as a value for
proxytype parameter.
If your proxy uses login/password authentication you have to include your credentials in proxy parameter.
POST parameters for proxies
| POST parameter | Type | Required | Description |
| proxy | String | No |
Format for IP authentication: IP_address:PORT Example: proxy=123.123.123.123:3128 Format for login/password authentication: login:password@IP_address:PORT Example: proxy=proxyuser:[email protected]:3128 |
| proxytype | String | No |
Type of your proxy: HTTP, HTTPS, SOCKS4, SOCKS5. Example: proxytype=SOCKS4 |
Cookies Parameter
Our API provides enhanced cookie support for reCAPTCHA V2 and reCAPTCHA V2 Enterprise.
You can submit your own cookies by specifying them in the json_cookies parameter using the format shown below. These cookies will be applied in our worker's browser.
Once the captcha is successfully solved, we will return all cookies set for the google.com domain and the target website specified in the pageurl parameter.
To retrieve the cookies, include the json=1 parameter in your request to res.php.
Cookie format:
{
"json_cookies": [
{
"name": "my-cookie-name-1",
"value": "my-cookie-val-1",
"domain": "example.com",
"hostOnly": true,
"path": "/",
"secure": true,
"httpOnly": false,
"session": false,
"expirationDate": 1665434653,
"sameSite": "strict"
},
{
"name": "my-cookie-name-2",
"value": "my-cookie-val-2",
"domain": ".google.com",
"hostOnly": false,
"path": "/",
"secure": true,
"httpOnly": false,
"session": false,
"expirationDate": 1668015805.8028,
"sameSite": "no_restriction"
}
]
}
Mandatory Properties for Submitted Cookies
When submitting cookies, the following mandatory parameters must be specified:
| Property | Type | Description |
|---|---|---|
domain |
String |
The domain to which the cookie belongs. |
name |
String |
The name of the cookie. |
value |
String |
The content of the cookie. |
secure |
Boolean |
Determines whether the Secure attribute should be set (only for transmission over a secure connection). |
All submitted cookies must include the parameters listed above to be correctly applied in the worker's browser.
Reporting answers
Submitting reports on answers is an optional operation, but it helps improve the accuracy of the service and the quality of solutions. If you find that the captcha answer was incorrect, you can file a complaint about the incorrect answer. Our moderators will review your captcha and the worker's response to determine whether the answer was correct or not. Your complaint will help us block workers who frequently make mistakes.
It is recommended to always submit reports on both incorrect and correct answers to enhance the accuracy of the service.
reportbad
Use reportbad if the captcha answer was rejected by the website.
Submitting reportbad requests helps the system identify workers with a high
error rate and block them, thereby improving service quality.
reportgood
Use reportgood if the captcha solution was successfully accepted by the website. This helps improve the accuracy of request processing in the future.
Request examples:
ReportBAD:
https://api.solvecaptcha.com/res.php?action=reportbad&id=2122988149&key=1abc234de56fab7c89012d34e56fa7b8
ReportGOOD:
https://api.solvecaptcha.com/res.php?action=reportgood&id=2122988149&key=1abc234de56fab7c89012d34e56fa7b8
Important: Don't try to send reportbad for correctly
solved captchas. If you do so, your account will be banned.
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes |
reportbad - report incorrectly solved captha. reportgood - report correctly solved captha. |
| id | String | Yes | ID captha. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
Server will return OK_REPORT_RECORDED response to your request. Or an error code if something gone wrong.
If you're getting too many incorrectly solved captchas you may provide additional parameters with your captcha to help wokers to solve it correctly
Additional methods
You can also get some additional information with our API,
like balance, current rate, etc.
Please check available parameters in the table below.
List of GET request parameters for https://api.solvecaptcha.com/res.php
| GET parameter | Type | Required | Description |
| key | String | Yes | your API key |
| action | String | Yes |
getbalance - get your balance get - get answers for multiple captchas with one request. Requires ids parameter. |
| ids | String | - | Comma separated IDs of your captchas. |
| json | Integer Default: 0 |
No |
0 - server will send the response as plain text 1 - tells the server to send the response as JSON |
API FAQ
What is API and what do I need it for?API service defines a set of request messages that you can use to send your CAPTCHA, get it solved and get the response message.
Where can I find detail on the API functions?You can find the description here (https://solvecaptcha.com/api-description).
Where can I find my key?You can find the KEY here (https://solvecaptcha.com/setting)
How do I add captcha KEY to AllSubmitter? In the settings there is an antigate.com standard field.Input your SolveCaptcha.com KEY into the field, than correct hosts file:
- Usually this file can be found at
C:\Windows\System32\drivers\etc\ - Open it in any text editor, i.e. notepad
- Add a string below -
89.108.73.200 antigate.com - Save the file
To check that hosts is edited correctly enter antigate.com – you should be redirected to solvecaptcha.com. If this is the case you can run AllSubmitter.
I cannot figure out why it doesn’t work. How can I send you my traffic dump?- Download and install CommView
- Launch it and go to the "rules" tab choose "simple rules/ip-addresses"
- Click the "Enable rules for IP-adresses" checkbox
- On the right side select "capture" and "any direction" and add 89.108.73.200 (our server address)
- You’ve set up the rules, now you have to select the right adapter (your network hardware) on the right side of "play" like button.
- Press the "play" like button to start capturing.
- Start your soft, wait until the "current connection" tab will display captured files
- After that stop the capturing process and save them menu/file/save as
- Send those files to us at [email protected]
Refunds for incorrect recognition
We have a feature which allows you to return your funds if you were charged for incorrect image recognition. If you want to use it please read the details.
Requirements for the client:-
You need to file a complaint for incorrect image recognition. Please use the reportbad function by sending us a similar request:
http://solvecaptcha.com/res.php?key=YOUR_API_KEY&action=reportbad&id=CAPTCHA_IDwhere YOUR_API_KEY – your API key, CAPTCHA_ID – id of incorrectly recognized captcha
You can also use the "incorrect recognition" button in the interface on the uploaded images page
-
File the complaint in no more than 15 minutes after the image has been uploaded. After that the complaint will be rejected by the server.
All complaints are processed by humans with extensive captcha solving experience (10000+ solved captchas), moderators decide in whose favor the complaint is resolved, by using this rule:
In workers’ favor:- If recognition is correct
- If the image can be decoded in more than one way (number 0 or letter O, capitol I or lowercase I, etc.)
- If it’s an obvious mistake
- Your list of complaints and corresponding images is available at complaints page
- If the customer has sent more than 50 complaints during last 24 hours and more than 50% were resolved in worker’s favor than we suspend receiving his complaints for 24 hours.
- Because all complaints are processed by humans there is a non-zero mistake probability. Moderator can make mistake in anybody’s favor. We deal with that by assigning more than one moderator to one complaint. If decisions by a particular moderator often differs from decisions by other moderators then he is blocked.
Rule clarifications
Why all complaints are checked by moderators?Unfortunately there can be situations in which the image is recognized correctly, but has failed the test by some unrelated reason and customer issues a complaint.
Why can we decline to refund the customer, in the controversial situations when captcha is recognized incorrectly?Image recognition is a rather demanding labor. That’s why if the worker made an effort to recognize the image correctly and he didn’t succeed because the image can be interpreted in more than one way we come from the concept that any work should be paid for and if the worker got unlucky after making an effort he should still get paid.
Why can complaint feature be suspended?Moderators’ work is paid for and we don’t charge clients for incorrect complaints this means that at times we pay workers more than we charge our customers. This is why we have to block customers who abuse the complaint feature by issuing too many incorrect complaints.
How can I contest moderation?We receive from 3 to 7 million images daily. Some are recognized incorrectly and moderation is requested for 100000 to 200000 images. Moderation results can disappoint both our workers and customers so we constantly improve moderation quality control and moderation quality both. Complex inside algorhytms and simple user interface on the outside is what allows us to process such incredible number of images online and monitor all incoming complaints at such a reasonable price for the customer. In case of the incorrect moderation you cannot contest it, because percent of such situations is minimal and the cost of one recognition is incomparably lower than cost of the time it takes employee to correct it. Please don’t write us about incorrect moderation.
FAQ
For Customer - API
What is API and what do I need it for?
API service defines a set of request messages that you can use to send your CAPTCHA, get it solved and get the response message.
Where can I find detail on the API functions?
You can find the description here.
Where can I find my key?
You can find the KEY here.
How do I add captcha KEY to AllSubmitter? In the settings there is an antigate.com standard field.
Input your SolveCaptcha.com KEY into the field, than correct hosts file:
1) Usually this file can be found at C:\Windows\System32\drivers\etc\
2) Open it in any text editor, i.e. notepad
3) Add a string below
89.108.116.21 antigate.com
4) Save the file
To check that hosts is edited correctly enter antigate.com – you should be redirected to solvecaptcha.com
If this is the case you can run AllSubmitter
I cannot figure out why it doesn’t work. How can I send you my traffic dump?
0) Download and install CommView
1) Launch it and go to the "rules" tab choose "simple rules/ip-addresses"
2) Click the "Enable rules for IP-addresses" checkbox
3) On the right side select "capture" and "any direction" and add 89.108.116.21 (our server address)
4) You’ve set up the rules, now you have to select the right adapter (your network hardware) on the right side of "play" like button.
5) Press the "play" like button to start capturing.
6) Start your soft, wait until the "current connection" tab will display captured files
7) After that stop the capturing process and save them menu/file/save as
8) Send those files to us at [email protected] or create new Ticket
Financial issues
Bypassing reCAPTCHA with SolveCaptcha
Google is constantly working on improving its recaptcha algorithm, which naturally encourages us to step up as well.
On websites using this new API, a significant number of users will be able to securely and easily verify they’re human without actually having to solve a CAPTCHA. Instead, with just a single click, they’ll confirm they are not a robot.
– Google Security
Most people don't see this CAPTCHA, especially if logged in with Google. Another big part of users can simply press the check box saying 'I'm not a robot' while the rest receive the test where they have a task of sorting out images. It is supposed that this type of CAPTCHA is much harder to bypass or be hack by automated CAPTCHA solving services.
Not long ago Google updated reCAPTCHA V2 with invisible version. We've added some hints about this type of reCAPTCHA. Please read here.
We at SolveCaptcha offer you 3 alternative methods for dealing with the Google reCAPTCHA V2:
- Our traditional method: bypassing CAPTCHA using a received token.
Features: Higher cost but does not require browser emulation. - Bypassing reCAPTCHA using the Grid method, which requires browser emulation.
Features: Lower cost but requires browser emulation. When solving a CAPTCHA using this method, you don't need to figure out how the token is used on the CAPTCHA page. - Bypassing reCAPTCHA using the ClickCaptcha method, which requires browser emulation.
Features: Lower cost but requires browser emulation. When solving a CAPTCHA using this method, you don't need to figure out how the token is used on the CAPTCHA page.
Main difference between these methods is the need to send your captcha images to us in the traditional method and workers solving your captchas directly at the site right where you need them to.
Which reCAPTCHA solving method should I choose?
The token-based method is easier to implement, and we recommend starting with it. Bypassing reCAPTCHA using the Grid or ClickCaptcha methods is more complex to implement, but it has its advantages. One of the main benefits is that you don't need to figure out how to apply the token on the page. You only need to submit the images and click on the correct squares — after that, the reCAPTCHA script will apply the token automatically.
SolveCaptcha is an automated CAPTCHA braking service with an API that helps webmasters and internet marketers send large amounts of CAPTCHAs to humans that solve them. Most Internet Marketers who have to perform different online tasks manually have already appreciated the comfort of automating online activity with SolveCaptcha. There is no need to have code-writing skills. Basic technical understanding of SEO software is quite enough to start using the service. If you have any questions please see our FAQ or write a ticket to our support.
Captcha recognition
How much does 1000 captcha recognitions cost?
The price depends on the server workload, which is influenced by the number of captchas being submitted, the number of workers available online, and the type of CAPTCHA being solved. The rate is the same for all webmasters at any given moment and typically ranges from $0.30 to $1 per 1000 captchas. You can check the current rate via the API, on the SolveCaptcha settings page, or on the pricing page.
The webmaster can set a maximum rate per CAPTCHA. If the current rate exceeds the limit set by the webmaster, captchas will not be uploaded, and the webmaster will receive the error: :ERROR_NO_SLOT_AVAILABLE:
How is recognition price is formed?
When a low number of solved CAPTCHAs is submitted to the server, the price decreases, and vice versa.
I received ERROR_NO_SLOT_AVAILABLE what does it mean?
That means that current rate on the server is higher than the one you selected in settings.
Reminder: you are charged current rate at the moment you upload images, not the maximum rate from your settings.
If the current rate on the server is higher than yours you will receive ERROR_NO_SLOT_AVAILABLE and your captcha wouldn’t be accepted.
You may also receive the ERROR_NO_SLOT_AVAILABLE error in other cases, which are described in more detail in the "Error Handling" section.
How long is the uploaded CAPTCHA stored on the server, and how long can I send a report on the CAPTCHA recognition result?
From the moment the CAPTCHA is uploaded to the server, it is stored for up to 6 hours. You can receive the answer within 15 minutes. You can also submit a report on the CAPTCHA solving result (reportgood or reportbad) to res.php within 15 minutes.
hosts \ antigate.com
89.108.116.21 anti-captcha.com
Referral
Where do I get my referral link?
You can find it in the Referral tab.
How can I earn money using your referral program?
You can invite people to work with the service. They will be your referrals. Your reward is 10% from everything they earn or spend.
My friend has followed my referral link and registered. I can see him in the list of my referrals.He has earned a certain amount yet I don't see anything on my balance.
Referral commission comes every 24 hours. Check your statistics the next day in the morning.
My referral has registered and put a certain amount on his balance. Several days later, I still do not see any referral commission on my account.
You earn 10% from what your referral earns or spends on solvecaptcha.com, so if your referral is a webmaster, you get your commission once they start spending which means purchasing CAPTCHAs.