How to Solve reCAPTCHA v2/v3 Using CapSolver and n8n

Lucas Mitchell
Automation Engineer
10-Mar-2026

If you've ever tried to automate web interactions, you've almost certainly run into reCAPTCHA โ Google's challenge system that blocks bots from accessing websites. Whether you're building scrapers, testing web applications, or automating repetitive tasks, reCAPTCHA can bring your entire workflow to a halt.
But what if you could build your own reCAPTCHA-solving API โ one that receives a captcha challenge and returns a valid solution, all without writing a single line of traditional code?
In this guide, you'll learn how to combine n8n (a visual workflow automation tool) with CapSolver (an AI-powered captcha solving service) to create powerful API endpoints that solve reCAPTCHA v2, v2 Invisible, and v3 challenges on demand.
What you'll build:
- A reCAPTCHA v2 solver API
- A reCAPTCHA v2 Invisible solver API
- A reCAPTCHA v3 solver API
- Real-world scraping examples that solve captchas, submit tokens to websites, and verify the results
What is reCAPTCHA?
reCAPTCHA is Google's bot detection system used by millions of websites. There are three main versions you'll encounter:
| Feature | reCAPTCHA v2 | reCAPTCHA v2 Invisible | reCAPTCHA v3 |
|---|---|---|---|
| User interaction | Checkbox ("I'm not a robot") + image challenges | No visible checkbox โ triggers automatically | No interaction at all |
| How it works | User must click and possibly solve image puzzles | Runs in the background, only shows challenges if suspicious | Assigns a score (0.0 to 1.0) based on behavior |
| Visibility | Always visible on the page | Hidden until triggered | Completely invisible |
| Common use case | Login forms, sign-ups | Form submissions, checkout pages | Continuous monitoring, scoring user actions |
| Site key visible? | Yes | Yes | Yes |
Understanding which version a website uses is critical โ each one requires slightly different parameters when solving.
Prerequisites
Before getting started, make sure you have the following:
- An n8n instance โ Either self-hosted or n8n Cloud
- A CapSolver account โ Sign up here and get your API key
- The CapSolver n8n node โ Already available as an official node in n8n (no installation needed)
- CapSolver browser extension (optional but recommended) โ For identifying captcha parameters on target websites
Important: Make sure you have sufficient balance in your CapSolver account. reCAPTCHA solving tasks consume credits based on the captcha type.
Setting Up CapSolver in n8n
CapSolver is available as an official integration in n8n โ no community node installation required. You can find it directly in the node panel when building your workflows.
Since it's an official integration, you need to create a credential in n8n so that the CapSolver node can authenticate with your account.
Step 1: Open the Credentials Page
Go to your n8n instance and navigate to Settings โ Credentials. You'll see all your configured credentials here.

Step 2: Create the CapSolver Credential
- Click Create credential (top right)
- Search for "CapSolver" and select CapSolver API
- Enter your API Key โ copy it directly from the CapSolver Dashboard
- Leave Allowed HTTP Request Domains set to
All(default) - Click Save
n8n will automatically test the connection. You should see a green "Connection tested successfully" banner confirming your API key is valid.

Important: Every CapSolver node in your workflows will reference this credential. You only need to create it once โ all your solver workflows will share the same credential.
Now you're ready to build your solver workflows!
How to Identify reCAPTCHA Parameters
Before you can solve a reCAPTCHA, you need to know its parameters โ specifically the websiteURL and websiteKey (also called the site key). The easiest way to find these is using the CapSolver Browser Extension.
Step 1: Install the CapSolver Extension
Download and install the CapSolver extension from the Chrome Web Store or Firefox Add-ons.
Step 2: Open the CAPTCHA Detector
- Navigate to the target website
- Press F12 to open Developer Tools
- Find the "CapSolver Captcha Detector" tab in DevTools

Step 3: Trigger the CAPTCHA
With the detector panel open, interact with the page to trigger the reCAPTCHA. The extension will automatically detect and display all relevant parameters:
- Website URL โ The page URL hosting the CAPTCHA
- Website Key (Site Key) โ The public key identifier for the captcha
- pageAction โ The specific action being verified (v3)
- isInvisible โ Whether it's an invisible reCAPTCHA
- isEnterprise โ Whether it uses reCAPTCHA Enterprise
- apiDomain โ The API endpoint being used (e.g.,
recaptcha.net)

Tip: The extension generates a JSON output showing exactly how to format these parameters for your solving request. This saves you from having to manually inspect the page source.
For a detailed guide on identifying captcha parameters, check out the official CapSolver documentation.
Workflow 1: reCAPTCHA v2 Solver API
This workflow creates a POST API endpoint that accepts reCAPTCHA v2 parameters and returns a solved token.

How It Works
The workflow consists of three nodes:
- Webhook โ Receives incoming POST requests with captcha parameters
- CapSolver reCAPTCHA v2 โ Sends the challenge to CapSolver and waits for a solution
- Respond to Webhook โ Returns the solution as a JSON response
Node Configuration
1. Webhook Node
| Setting | Value |
|---|---|
| HTTP Method | POST |
| Path | solver-recaptcha-v2 |
| Response Mode | Response Node |
This creates an endpoint at: https://your-n8n-instance.com/webhook/solver-recaptcha-v2
2. CapSolver reCAPTCHA v2 Node
| Parameter | Value | Description |
|---|---|---|
| Type | ReCaptchaV2TaskProxyLess |
Select in n8n based on the target site (see available types below) |
| Website URL | {{ $json.body.websiteURL }} |
The URL of the page with the captcha |
| Website Key | {{ $json.body.websiteKey }} |
The reCAPTCHA site key |
| Page Action | {{ $json.body.pageAction || '' }} |
(Optional) The action parameter |
| Enterprise Payload | {{ $json.body.enterprisePayload || '' }} |
(Optional) For Enterprise reCAPTCHA |
| Is Invisible | {{ $json.body.isInvisible || false }} |
(Optional) Set to true for invisible |
| Is Session | {{ $json.body.isSession || false }} |
(Optional) Session-based solving |
| API Domain | {{ $json.body.apiDomain || '' }} |
(Optional) Custom API domain |
Available types for reCAPTCHA v2 (select in n8n dashboard):
| Type | When to use |
|---|---|
ReCaptchaV2TaskProxyLess |
Standard reCAPTCHA v2 โ works for most sites (no proxy needed) |
ReCaptchaV2EnterpriseTask |
reCAPTCHA Enterprise โ requires a proxy (ip:port:user:pass) |
ReCaptchaV2EnterpriseTaskProxyLess |
reCAPTCHA Enterprise without proxy |
Select the correct type directly in the n8n node configuration. If you choose a type that requires a proxy (e.g.,
ReCaptchaV2EnterpriseTask), a proxy field will appear โ enter your proxy inip:port:user:passformat. Use the CapSolver extension to detect if the site uses Enterprise reCAPTCHA. Also select your CapSolver credentials in this node.
3. Respond to Webhook Node
| Setting | Value |
|---|---|
| Respond With | JSON |
| Response Body | {{ JSON.stringify($json.data) }} |
This returns the full CapSolver response, including the gRecaptchaResponse token.
Test It
Send a POST request to your webhook endpoint:
bash
curl -X POST https://your-n8n-instance.com/webhook/solver-recaptcha-v2 \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
}'
Expected Response:
json
{
"taskId": "abc123...",
"solution": {
"gRecaptchaResponse": "03AGdBq24PBCb..."
},
"status": "ready"
}
Import This Workflow
Copy the JSON below and import it into n8n via Menu โ Import from JSON:
Click to expand workflow JSON
json
{
"name": "reCaptcha V2 Solver API",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "solver-recaptcha-v2",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-192, 0],
"id": "24f7cce0-bcbd-4134-958b-aa0c4528415c",
"name": "Webhook",
"webhookId": "784376f0-b5c9-492f-8ed2-07b63cd6e3fe"
},
{
"parameters": {
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {
"pageAction": "={{ $json.body.pageAction || '' }}",
"enterprisePayload": "={{ $json.body.enterprisePayload || '' }}",
"isInvisible": "={{ $json.body.isInvisible || false }}",
"isSession": "={{ $json.body.isSession || false }}",
"apiDomain": "={{ $json.body.apiDomain || '' }}"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [112, 0],
"id": "c10b2f8f-e03a-4f50-b359-34b7b49f8aae",
"name": "reCAPTCHA v2",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json.data) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [400, 0],
"id": "34762c43-31a7-4a7a-ba29-29d1dad15ed0",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "reCAPTCHA v2",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v2": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
}
}
Workflow 2: reCAPTCHA v2 Invisible Solver API
reCAPTCHA v2 Invisible works just like standard v2, except the captcha runs in the background without showing a checkbox. The key difference in your solver configuration is setting isInvisible: true.

How It Works
The workflow has the same three-node structure:
- Webhook โ Receives POST requests at
/solve-recaptcha-v2-invisible - CapSolver reCAPTCHA v2 Invisible โ Solves with
isInvisibleflag enabled - Respond to Webhook โ Returns a clean JSON response with the solution token
Node Configuration
1. Webhook Node
| Setting | Value |
|---|---|
| HTTP Method | POST |
| Path | solve-recaptcha-v2-invisible |
| Response Mode | Response Node |
2. CapSolver reCAPTCHA v2 Invisible Node
| Parameter | Value | Description |
|---|---|---|
| Type | ReCaptchaV2TaskProxyLess |
Select in n8n based on the target site (see available types below) |
| Website URL | {{ $json.body.websiteURL }} |
The URL of the page with the captcha |
| Website Key | {{ $json.body.websiteKey }} |
The reCAPTCHA site key |
| Is Invisible | true (hardcoded) |
Always true for this endpoint |
| Page Action | {{ $json.body.pageAction || '' }} |
(Optional) The action parameter |
| Enterprise Payload | {{ $json.body.enterprisePayload || '' }} |
(Optional) For Enterprise reCAPTCHA |
| Is Session | {{ $json.body.isSession || false }} |
(Optional) Session-based solving |
| API Domain | {{ $json.body.apiDomain || '' }} |
(Optional) Custom API domain |
Available types for reCAPTCHA v2 Invisible (select in n8n dashboard):
| Type | When to use |
|---|---|
ReCaptchaV2TaskProxyLess |
Standard invisible reCAPTCHA โ works for most sites (no proxy needed) |
ReCaptchaV2EnterpriseTask |
Invisible Enterprise reCAPTCHA โ requires a proxy (ip:port:user:pass) |
ReCaptchaV2EnterpriseTaskProxyLess |
Invisible Enterprise reCAPTCHA without proxy |
Key difference: Unlike the v2 workflow,
isInvisibleis hardcoded totruehere since this endpoint is specifically for invisible captchas. Select the correct type directly in the n8n node โ if you choose a type that requires a proxy, a proxy field will appear where you enter it inip:port:user:passformat.
3. Respond to Webhook Node
This node returns a cleaner, structured response:
{{ JSON.stringify({
success: true,
solution: $json.data.solution.gRecaptchaResponse,
taskId: $json.data.taskId
}) }}
Test It
bash
curl -X POST https://your-n8n-instance.com/webhook/solve-recaptcha-v2-invisible \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/checkout",
"websiteKey": "6LcR_RsTAAAAACZftBu5aP9K0JWKZ4Oks-Oq_kTb"
}'
Expected Response:
json
{
"success": true,
"solution": "03AGdBq24PBCb...",
"taskId": "abc123..."
}
Import This Workflow
Click to expand workflow JSON
json
{
"name": "reCaptcha V2 Invisible Solver API",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "solve-recaptcha-v2-invisible",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [-208, 0],
"id": "f23b73b5-f1a9-41a9-92ff-8abf2b1ba8d7",
"name": "Webhook",
"webhookId": "cefac56f-b556-4a54-979d-f964d446852a"
},
{
"parameters": {
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {
"isInvisible": true,
"pageAction": "={{ $json.body.pageAction || '' }}",
"enterprisePayload": "={{ $json.body.enterprisePayload || '' }}",
"isSession": "={{ $json.body.isSession || false }}",
"apiDomain": "={{ $json.body.apiDomain || '' }}"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [112, 0],
"id": "1774078e-d0dc-40a1-849d-336cc7444353",
"name": "reCAPTCHA v2 Invisible",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify({ success: true, solution: $json.data.solution.gRecaptchaResponse, taskId: $json.data.taskId }) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [400, 0],
"id": "eb168812-e50f-4af4-abbf-69d80b23718a",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "reCAPTCHA v2 Invisible",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v2 Invisible": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Workflow 3: reCAPTCHA v3 Solver API
reCAPTCHA v3 is different from v2 because it doesn't present any challenge to the user. Instead, it assigns a score between 0.0 (likely a bot) and 1.0 (likely a human) based on user behavior. Websites set their own threshold โ for example, a score above 0.5 might be required to proceed.
When solving reCAPTCHA v3, the key additional parameter is the pageAction โ a string that identifies what action the user is performing (e.g., login, submit, homepage). This must match the action configured on the target website.

How It Works
The workflow has the same three-node structure as v2:
- Webhook โ Receives POST requests at
/solve-recaptcha-v3 - CapSolver reCAPTCHA v3 โ Solves with
operationset toreCAPTCHA v3 - Respond to Webhook โ Returns the full CapSolver response as JSON
Node Configuration
1. Webhook Node
| Setting | Value |
|---|---|
| HTTP Method | POST |
| Path | solve-recaptcha-v3 |
| Response Mode | Response Node |
2. CapSolver reCAPTCHA v3 Node
| Parameter | Value | Description |
|---|---|---|
| Operation | reCAPTCHA v3 |
Must be explicitly set โ different from v2 |
| Type | ReCaptchaV3TaskProxyLess |
Select in n8n based on the target site (see available types below) |
| Website URL | {{ $json.body.websiteURL }} |
The URL of the page with the captcha |
| Website Key | {{ $json.body.websiteKey }} |
The reCAPTCHA site key |
| Page Action | {{ $json.body.pageAction }} |
Required โ must match the site's action |
| Enterprise Payload | {{ $json.body.enterprisePayload || '' }} |
(Optional) For Enterprise reCAPTCHA |
| Is Session | {{ $json.body.isSession || false }} |
(Optional) Session-based solving |
| API Domain | {{ $json.body.apiDomain || '' }} |
(Optional) Custom API domain |
Available types for reCAPTCHA v3 (select in n8n dashboard):
| Type | When to use |
|---|---|
ReCaptchaV3TaskProxyLess |
Standard reCAPTCHA v3 โ works for most sites (no proxy needed) |
ReCaptchaV3EnterpriseTask |
reCAPTCHA v3 Enterprise โ requires a proxy (ip:port:user:pass) |
ReCaptchaV3EnterpriseTaskProxyLess |
reCAPTCHA v3 Enterprise without proxy |
Important: The
operationfield must be set to reCAPTCHA v3 in the CapSolver node. If you leave it on the default (v2), the solving will fail or return an unusable token. Also,pageActionis required for v3 โ unlike v2 where it's optional. Select the correct type directly in the n8n node โ if you choose a type that requires a proxy, a proxy field will appear where you enter it inip:port:user:passformat.
3. Respond to Webhook Node
| Setting | Value |
|---|---|
| Respond With | JSON |
| Response Body | {{ JSON.stringify($json.data) }} |
Test It
bash
curl -X POST https://your-n8n-instance.com/webhook/solve-recaptcha-v3 \
-H "Content-Type: application/json" \
-d '{
"websiteURL": "https://example.com/login",
"websiteKey": "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9",
"pageAction": "login"
}'
Expected Response:
json
{
"taskId": "abc123...",
"solution": {
"gRecaptchaResponse": "03AGdBq24PBCb..."
},
"status": "ready"
}
Import This Workflow
Click to expand workflow JSON
json
{
"name": "reCaptcha V3 Solver API",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "solve-recaptcha-v3",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [416, 0],
"id": "8e978abb-184a-4e24-bd81-a97e3a154d73",
"name": "Webhook",
"webhookId": "784376f0-b5c9-492f-8ed2-07b63cd6e3fe"
},
{
"parameters": {
"operation": "reCAPTCHA v3",
"websiteURL": "={{ $json.body.websiteURL }}",
"websiteKey": "={{ $json.body.websiteKey }}",
"optional": {
"pageAction": "={{ $json.body.pageAction }}",
"enterprisePayload": "={{ $json.body.enterprisePayload || '' }}",
"isSession": "={{ $json.body.isSession || false }}",
"apiDomain": "={{ $json.body.apiDomain || '' }}"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [720, 0],
"id": "25608e91-677b-4375-86e2-e2bcb6618aff",
"name": "reCAPTCHA v3",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json.data) }}",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [1008, 0],
"id": "cc59af4f-926f-4ae4-844e-d87a8ecc0131",
"name": "Respond to Webhook"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "reCAPTCHA v3",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v3": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
API Parameter Reference
All three API solver endpoints accept the same set of optional parameters through the CapSolver node. Here's a consolidated view:
| Parameter | v2 | v2 Invisible | v3 | Description |
|---|---|---|---|---|
websiteURL |
Required | Required | Required | The URL of the page hosting the captcha |
websiteKey |
Required | Required | Required | The reCAPTCHA site key |
pageAction |
Optional | Optional | Required | The action name configured on the site (e.g., login, submit) |
enterprisePayload |
Optional | Optional | Optional | Additional payload for reCAPTCHA Enterprise |
isInvisible |
Optional | true (hardcoded) |
โ | Whether the captcha is invisible |
isSession |
Optional | Optional | Optional | Enable session-based solving |
apiDomain |
Optional | Optional | Optional | Custom API domain (e.g., recaptcha.net) |
Tip: You can identify all of these parameters automatically using the CapSolver Browser Extension. The extension's CAPTCHA Detector tab shows exactly which parameters the target site requires.
Real-World Examples: Submitting Tokens to Websites
So far, the API workflows above show how to get a solved captcha token. But what do you actually do with it?
In real-world automation, solving the captcha is only half the job. You need to submit the token to the target website โ exactly as a browser would โ to unlock the data or action behind the captcha.
Here's the general pattern:
- Solve the captcha โ Get the
gRecaptchaResponsetoken from CapSolver - Submit the token โ Send it to the target website via an HTTP Request (usually as a
g-recaptcha-responseform field or URL parameter) - Verify the response โ Check if the website accepted the token and returned the expected data
- Process the result โ Extract the data you need
The following examples demonstrate this full cycle using Google's official reCAPTCHA demo sites.
Example 1: Solving & Submitting reCAPTCHA v2
Example: Google reCAPTCHA v2 Demo

Workflow Flow
Manual Trigger โ CapSolver reCAPTCHA v2 โ HTTP POST Request โ IF (check success) โ Edit Fields (extract data)
How It Works
- Manual Trigger โ Starts the workflow manually (click "Execute workflow"). You can replace this with any trigger โ Webhook, Schedule, App Event, etc.
- CapSolver reCAPTCHA v2 โ Solves the captcha for the demo page:
- Website URL:
https://www.google.com/recaptcha/api2/demo - Website Key:
6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
- Website URL:
- HTTP POST Request โ Submits the solved token to the same URL as a form POST:
- The token is sent in the
g-recaptcha-responseform field - This is exactly what a browser does when you click "Submit" after solving the captcha
- The token is sent in the
- IF Node โ Checks if the response HTML contains
"recaptcha-success", meaning the captcha was accepted - Edit Fields โ Extracts the data you need from the response. In a real scenario, this is where you'd parse the HTML using the HTML node to pull out specific elements (e.g., user data, product listings, form results) and map them to your output fields
Key concept: Every website handles token submission differently. In this demo, the token goes in a
g-recaptcha-responseform field via POST โ but other sites may expect it as a URL parameter, in a JSON body, or through a completely different endpoint. Always inspect the site's actual form submission (using DevTools Network tab) to see exactly how the token needs to be sent.
Click to expand workflow JSON
json
{
"name": "ReCaptcha V2 Solver",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-208, 0],
"id": "4955f040-9cec-4696-8f59-88590e617b43",
"name": "When clicking 'Execute workflow'"
},
{
"parameters": {
"websiteURL": "https://www.google.com/recaptcha/api2/demo",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"optional": {}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [208, 0],
"id": "c6f9940e-dc06-42d3-bbff-0c6bc1a7b057",
"name": "reCAPTCHA v2",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://www.google.com/recaptcha/api2/demo",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8"
},
{
"name": "accept-language",
"value": "es-ES,es;q=0.7"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "origin",
"value": "https://www.google.com"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "priority",
"value": "u=0, i"
},
{
"name": "referer",
"value": "https://www.google.com/recaptcha/api2/demo"
},
{
"name": "sec-ch-ua",
"value": "\"Not:A-Brand\";v=\"99\", \"Brave\";v=\"145\", \"Chromium\";v=\"145\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "document"
},
{
"name": "sec-fetch-mode",
"value": "navigate"
},
{
"name": "sec-fetch-site",
"value": "same-origin"
},
{
"name": "sec-fetch-user",
"value": "?1"
},
{
"name": "sec-gpc",
"value": "1"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "g-recaptcha-response",
"value": "={{ $json.data.solution.gRecaptchaResponse }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [416, 0],
"id": "cb54fdc1-19b8-48b4-bdee-a978e02d33fc",
"name": "HTTP Request"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "26963d7d-fbe0-473b-af6d-febafebd3019",
"leftValue": "={{ $json.data }}",
"rightValue": "recaptcha-success",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [624, 0],
"id": "72eeeaae-7472-4a61-8730-aa1c6fa0edaf",
"name": "If"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a2397a11-4145-4111-b5be-b01bf8e9ffae",
"name": "status",
"value": "valid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [800, -16],
"id": "4b7fea40-bbe2-4e61-92f7-d00e77d3f85b",
"name": "Edit Fields"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "7ba46f6f-2925-4baf-a68e-5fc1f143c10e",
"name": "status",
"value": "invalid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [800, 192],
"id": "7afcadb6-bac4-4008-9fc9-17e23b125c76",
"name": "Edit Fields1"
}
],
"connections": {
"reCAPTCHA v2": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"When clicking 'Execute workflow'": {
"main": [
[
{
"node": "reCAPTCHA v2",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Example 2: Solving & Submitting reCAPTCHA v2 Invisible
Example: reCAPTCHA v2 Invisible Demo

Workflow Flow
Manual Trigger โ CapSolver reCAPTCHA v2 Invisible โ HTTP POST Request โ IF (check "Success!") โ Edit Fields (extract data)
How It Works
- Manual Trigger โ Starts the workflow. You can replace this with a Webhook, Schedule, or any other trigger to automate the process.
- CapSolver reCAPTCHA v2 Invisible โ Solves the invisible captcha:
- Website URL:
https://recaptcha-demo.appspot.com/recaptcha-v2-invisible.php - Website Key:
6LcmDCcUAAAAAL5QmnMvDFnfPTP4iCUYRk2MwC0- - Is Invisible:
true
- Website URL:
- HTTP POST Request โ Submits the token along with the form's other fields:
ex-a:foo(example form field)ex-b:bar(example form field)g-recaptcha-response: the solved token
- IF Node โ Checks if the response contains
"Success!" - Edit Fields โ Extracts the data from the response. After the site accepts your token, the HTML response contains the protected content โ use the HTML node to parse specific elements or Edit Fields to map the data you need
Key concept: Real forms often have additional fields beyond just the captcha token. You need to include all required form fields in your HTTP Request โ not just
g-recaptcha-response. Inspect the form to find what fields are expected.
Click to expand workflow JSON
json
{
"name": "ReCaptcha V2 Invisible Solver",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-208, 0],
"id": "fee1e6e4-8891-472c-9e1e-ed5f959e6ade",
"name": "When clicking 'Execute workflow'"
},
{
"parameters": {
"websiteURL": "https://recaptcha-demo.appspot.com/recaptcha-v2-invisible.php",
"websiteKey": "6LcmDCcUAAAAAL5QmnMvDFnfPTP4iCUYRk2MwC0-",
"optional": {
"isInvisible": true
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [112, 0],
"id": "34090a6e-7a8b-4194-8939-a17aa6a0d091",
"name": "reCAPTCHA v2 Invisible",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"method": "POST",
"url": "https://recaptcha-demo.appspot.com/recaptcha-v2-invisible.php",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8"
},
{
"name": "accept-language",
"value": "es-ES,es;q=0.8"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": "content-type",
"value": "application/x-www-form-urlencoded"
},
{
"name": "origin",
"value": "https://recaptcha-demo.appspot.com"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "priority",
"value": "u=0, i"
},
{
"name": "referer",
"value": "https://recaptcha-demo.appspot.com/recaptcha-v2-invisible.php"
},
{
"name": "sec-ch-ua",
"value": "\"Not:A-Brand\";v=\"99\", \"Brave\";v=\"145\", \"Chromium\";v=\"145\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "document"
},
{
"name": "sec-fetch-mode",
"value": "navigate"
},
{
"name": "sec-fetch-site",
"value": "same-origin"
},
{
"name": "sec-fetch-user",
"value": "?1"
},
{
"name": "sec-gpc",
"value": "1"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
]
},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "ex-a",
"value": "foo"
},
{
"name": "ex-b",
"value": "bar"
},
{
"name": "g-recaptcha-response",
"value": "={{ $json.data.solution.gRecaptchaResponse }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [400, 0],
"id": "d15d7274-b8ba-4f38-8702-ae9baeb9c6c8",
"name": "HTTP Request"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "9ab97a06-eea2-44e7-b4b7-3f9bf4217378",
"leftValue": "={{ $json.data }}",
"rightValue": "Success!",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [704, 0],
"id": "fd8163d6-6357-4fe3-8ce7-dd82e4068e28",
"name": "If"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "8fd59323-1554-45cc-9e38-510006ec6de1",
"name": "status",
"value": "valid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [1008, -96],
"id": "4643c947-4d5a-4322-a683-fdea734a4ac8",
"name": "Edit Fields"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "780281be-fd00-46ac-8cdb-3ec57cce0ad2",
"name": "status",
"value": "invalid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [1008, 160],
"id": "f260cfcb-426b-472b-87ad-196570c91bd7",
"name": "Edit Fields1"
}
],
"connections": {
"When clicking 'Execute workflow'": {
"main": [
[
{
"node": "reCAPTCHA v2 Invisible",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v2 Invisible": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Example 3: Solving & Submitting reCAPTCHA v3
Example: reCAPTCHA v3 Demo โ Request Scores

Workflow Flow
Manual Trigger โ CapSolver reCAPTCHA v3 โ HTTP GET Request (verify) โ IF (check success) โ Edit Fields (extract data)
How It Works
- Manual Trigger โ Starts the workflow. Swap this for a Webhook, Schedule, or any trigger that fits your use case.
- CapSolver reCAPTCHA v3 โ Solves the v3 captcha:
- Operation:
reCAPTCHA v3(must be explicitly selected) - Website URL:
https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php - Website Key:
6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9 - Page Action:
examples/v3scores
- Operation:
- HTTP GET Request โ Submits the token to the verification endpoint:
- URL:
https://recaptcha-demo.appspot.com/recaptcha-v3-verify.php?action=examples/v3scores&token={{ $json.data.solution.gRecaptchaResponse }} - The token is passed as a URL query parameter instead of a form field
- URL:
- IF Node โ Checks if the JSON response has
success: true - Edit Fields โ Extracts the data from the JSON response. For v3, this includes the
score,action,challenge_ts, andhostnameโ all useful fields to capture for your records or downstream processing
Key differences with v3:
- The CapSolver node operation must be set to
reCAPTCHA v3- You must provide the pageAction parameter (e.g.,
examples/v3scores)- The token is often submitted via URL parameters (GET) rather than form POST
- The verification response is typically JSON with a
successboolean and ascore
Click to expand workflow JSON
json
{
"name": "ReCaptcha V3 Solver",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-208, 0],
"id": "1ae3c7b4-7f2e-48a0-a624-d12f2061838a",
"name": "When clicking 'Execute workflow'"
},
{
"parameters": {
"operation": "reCAPTCHA v3",
"websiteURL": "https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php",
"websiteKey": "6LdKlZEpAAAAAAOQjzC2v_d36tWxCl6dWsozdSy9",
"optional": {
"pageAction": "examples/v3scores"
}
},
"type": "n8n-nodes-capsolver.capSolver",
"typeVersion": 1,
"position": [112, 0],
"id": "f4b5142b-5e3f-4689-9814-505630695b5b",
"name": "reCAPTCHA v3",
"credentials": {
"capSolverApi": {
"id": "sLg2YDZd7WtYJJJ4",
"name": "CapSolver account"
}
}
},
{
"parameters": {
"url": "=https://recaptcha-demo.appspot.com/recaptcha-v3-verify.php?action=examples/v3scores&token={{ $json.data.solution.gRecaptchaResponse }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8"
},
{
"name": "accept-language",
"value": "es-ES,es;q=0.8"
},
{
"name": "cache-control",
"value": "no-cache"
},
{
"name": "pragma",
"value": "no-cache"
},
{
"name": "priority",
"value": "u=0, i"
},
{
"name": "referer",
"value": "https://recaptcha-demo.appspot.com/recaptcha-v3-request-scores.php"
},
{
"name": "sec-ch-ua",
"value": "\"Not:A-Brand\";v=\"99\", \"Brave\";v=\"145\", \"Chromium\";v=\"145\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "document"
},
{
"name": "sec-fetch-mode",
"value": "navigate"
},
{
"name": "sec-fetch-site",
"value": "same-origin"
},
{
"name": "sec-fetch-user",
"value": "?1"
},
{
"name": "sec-gpc",
"value": "1"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [400, 0],
"id": "09d39698-5a68-48b7-834b-8235bb9c52a6",
"name": "HTTP Request"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "8e8316a9-c22e-415e-a6a0-6fe540c84ff8",
"leftValue": "={{ $json.success }}",
"rightValue": true,
"operator": {
"type": "boolean",
"operation": "true"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [704, 0],
"id": "8f4a193d-fd29-40bc-829f-b891c443d66c",
"name": "If"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "8422eb0d-08fc-4fc8-9045-4078ff353e61",
"name": "status",
"value": "valid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [1008, -96],
"id": "9b078aad-be74-4e00-b54d-e5fbb85fc58b",
"name": "Edit Fields"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "b86b2a4b-e2d4-48f2-b7a6-ba92aac6fa96",
"name": "status",
"value": "invalid",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [1008, 160],
"id": "a468b0f4-114c-4565-b199-68cb175a543e",
"name": "Edit Fields1"
}
],
"connections": {
"When clicking 'Execute workflow'": {
"main": [
[
{
"node": "reCAPTCHA v3",
"type": "main",
"index": 0
}
]
]
},
"reCAPTCHA v3": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
}
}
Applying This Pattern to Any Website
These examples use demo sites, but the pattern works for any reCAPTCHA-protected website. To adapt it:
- Identify the captcha parameters using the CapSolver extension (website URL, site key, type, pageAction)
- Inspect the form submission โ Use your browser's DevTools Network tab to see what request the form sends when submitted (URL, method, headers, body fields)
- Replicate the request in n8n โ Configure the HTTP Request node to match the form submission exactly, inserting the solved token in the
g-recaptcha-responsefield - Add validation โ Use an IF node to check the response and confirm the data was unlocked
- Extract the data โ Once the site accepts the token, parse the response to extract the data you need. Use the HTML node for HTML responses or Edit Fields for JSON responses
Note: These examples use Manual Trigger for simplicity, but you can replace it with any trigger node โ Webhook (to build an API), Schedule (to run every hour), App Event (to react to Telegram messages), or any other. See Ways to Trigger Your Workflows for all options.
Ways to Trigger Your Workflows
The examples in this guide use Manual Trigger (for scraping workflows) and Webhook (for API workflows), but n8n offers many more ways to start a workflow. You can swap the trigger node to match your use case:
| Trigger | Description | Best for |
|---|---|---|
| Trigger manually | Click "Execute workflow" in n8n | Testing and one-off runs |
| On a schedule | Runs every day, hour, or custom interval (cron) | Recurring scraping jobs (e.g., check a site every hour) |
| On webhook call | Runs on receiving an HTTP request | Building APIs that other services can call |
| On app event | Runs when something happens in Telegram, Notion, Airtable, etc. | Reacting to events (e.g., new Telegram message triggers a solve) |
| On form submission | Generates a web form in n8n and passes responses to the workflow | Letting users submit captcha parameters through a form |
| When executed by another workflow | Called by the Execute Workflow node from a different workflow | Modular architecture โ keep your solver as a reusable sub-workflow |
| On chat message | Runs when a user sends a chat message (AI nodes) | Chatbot integrations that need to solve captchas on demand |
| Other ways | Workflow errors, file changes, etc. | Advanced automation triggers |

For example, to run your scraping workflow every hour, simply replace the Manual Trigger with a Schedule Trigger node and set the interval to 1 hour. The rest of the workflow stays exactly the same.
Storing and Exporting Scraped Data
Once your workflow solves a captcha and retrieves data from the target website, you'll want to store or export that data. n8n provides built-in data transformation and output nodes for this.
Data Transformation
Before saving, you can transform the scraped data using n8n's built-in nodes:
| Node | Description |
|---|---|
| Merge | Combine data from multiple sources (e.g., merge results from v2 and v3 scrapers) |
| Summarize | Sum, count, max, etc. across items |
| Convert to File | Convert JSON data to CSV, Excel, or other binary formats |
| Extract from File | Convert binary data to JSON |
| HTML | Parse and extract data from HTML responses |
| XML | Convert between JSON and XML |
| Rename Keys | Rename fields to match your desired output format |
| Sort | Reorder items before exporting |

Output Destinations
After the IF node validates the response, you can add any of these nodes to save the data:
| Destination | How |
|---|---|
| Google Sheets | Append rows to a spreadsheet โ great for tracking results over time |
| Excel / CSV file | Use the Convert to File node to generate .xlsx or .csv, then save with the Write Binary File node or upload to Google Drive |
| Database (MySQL, PostgreSQL, MongoDB) | Insert directly into a database table for structured storage |
| Airtable / Notion | Send data to your project management tools |
| Google Drive / S3 | Upload files to cloud storage |
| Telegram / Slack / Email | Send notifications with the scraped data |
| Local JSON file | Write results to a .json file on disk |
Example: Adding Google Sheets output to the v2 scraping workflow
Manual Trigger โ CapSolver v2 โ HTTP POST โ IF (check success) โ Google Sheets (append row)
Simply add a Google Sheets node after the IF node's "true" output. Map the fields you want to save (e.g., status, token, timestamp) and each successful scrape automatically adds a row to your spreadsheet.
Tip: You can combine multiple outputs โ for example, save to Google Sheets and send a Telegram notification at the same time by connecting both nodes to the IF node's "true" output.
Troubleshooting
"ERROR_KEY_DOES_NOT_EXIST" or Invalid API Key
| Symptom | CapSolver node fails with an API key error |
| Cause | Your API key is incorrect or not configured |
| Fix | Double-check your API key in Settings โ Credentials. |
"ERROR_ZERO_BALANCE"
| Symptom | Task creation fails with a balance error |
| Cause | Your CapSolver account has no credits |
| Fix | Top up your balance at the CapSolver Dashboard |
Wrong or Expired Token
| Symptom | The returned gRecaptchaResponse token is rejected by the target website |
| Cause | reCAPTCHA tokens expire after ~120 seconds |
| Fix | Use the token immediately after receiving it. |
Token Not Accepted by the Website
| Symptom | CapSolver returns a token successfully, but the target website still rejects it |
| Cause | Some websites have additional anti-bot protections beyond reCAPTCHA, or require specific parameters (Enterprise, cookies, headers) that weren't included |
| Fix | Double-check that you're submitting the token exactly as the site expects (correct field name, method, and endpoint). Make sure all required parameters are set (check with the CapSolver extension). If the token is still not accepted, contact the CapSolver support team for assistance โ they can help diagnose site-specific issues |
reCAPTCHA Enterprise Not Solving
| Symptom | Standard solving doesn't work on some sites |
| Cause | The site uses reCAPTCHA Enterprise, which requires additional parameters |
| Fix | Use the CapSolver extension to check if isEnterprise is true. If so, include the enterprisePayload parameter in your request |
Timeout or Slow Response
| Symptom | The webhook takes too long or times out |
| Cause | Captcha solving can take 10-30 seconds depending on complexity and load |
| Fix | Increase the webhook timeout in n8n settings. Consider adding retry logic for production use cases |
Best Practices
-
Use tokens immediately โ reCAPTCHA tokens expire quickly (~120 seconds). Send the token to the target website as soon as you receive it from your solver API.
-
Verify parameters with the extension โ Always use the CapSolver browser extension to confirm the correct
websiteKey, captcha type, and additional parameters before configuring your workflow. -
Keep your API key secure โ Never expose your CapSolver API key in client-side code. These n8n workflows keep your key server-side, which is the recommended approach.
-
Monitor your balance โ Set up balance alerts in the CapSolver dashboard to avoid unexpected workflow failures due to insufficient credits.
-
Add error handling โ For production workflows, add an IF node after the CapSolver node to check for errors and handle them gracefully (e.g., retry, notify, or log the failure).
Conclusion
You've learned how to build reCAPTCHA-solving APIs and complete scraping workflows using n8n and CapSolver โ no traditional coding required.
In this guide, we covered:
- API solver endpoints for reCAPTCHA v2, v2 Invisible, and v3 using webhook-based workflows
- Real-world scraping examples showing how to submit solved tokens to target websites and verify the results
- How to identify captcha parameters using the CapSolver browser extension
- Best practices for token handling, error management, and production use
The key takeaway: solving the captcha is only half the job โ you also need to submit the token to the target website to unlock the protected data. The scraping examples show you exactly how to do this for each reCAPTCHA type.
Ready to get started? Sign up for CapSolver and use bonus code n8n for an extra 8% bonus on your first recharge!

Frequently Asked Questions
What captcha types does CapSolver support in n8n?
CapSolver's n8n node supports reCAPTCHA v2, reCAPTCHA v2 Invisible, reCAPTCHA v3, and more. Check the n8n CapSolver integration page for the full list.
How much does it cost to solve a reCAPTCHA?
Pricing varies by captcha type. reCAPTCHA v2 typically costs around $1-3 per 1,000 solves. Check the CapSolver pricing page for current rates.
How long does it take to solve a reCAPTCHA?
Most reCAPTCHA v2 challenges are solved in 5-20 seconds. reCAPTCHA v3 is typically faster since there's no image challenge involved.
Can I use these workflows with n8n Cloud?
Yes! These workflows work with both self-hosted n8n and n8n Cloud. The CapSolver node is already available as an official integration โ just add your API credentials.
How do I find the reCAPTCHA site key for a website?
The easiest method is using the CapSolver browser extension โ open DevTools, go to the "CapSolver Captcha Detector" tab, and trigger the captcha. The extension will display all parameters automatically. Alternatively, you can search the page source for data-sitekey or render= in the reCAPTCHA script URL.
What's the difference between reCAPTCHA v2 and v2 Invisible?
Both use the same underlying technology, but v2 shows a visible checkbox ("I'm not a robot") while v2 Invisible runs in the background without any visible widget. When solving, the only difference is setting isInvisible: true.
Can I solve reCAPTCHA Enterprise with these workflows?
Yes. Use the CapSolver extension to detect if a site uses Enterprise reCAPTCHA. If it does, include the enterprisePayload parameter in your API request to the v2 solver workflow.
What happens if CapSolver fails to solve a captcha?
The CapSolver node will return an error. For production workflows, it's recommended to add error handling (e.g., an IF node to check for errors and a retry mechanism or notification).
Compliance Disclaimer: The information provided on this blog is for informational purposes only. CapSolver is committed to compliance with all applicable laws and regulations. The use of the CapSolver network for illegal, fraudulent, or abusive activities is strictly prohibited and will be investigated. Our captcha-solving solutions enhance user experience while ensuring 100% compliance in helping solve captcha difficulties during public data crawling. We encourage responsible use of our services. For more information, please visit our Terms of Service and Privacy Policy.
More

How to Solve reCAPTCHA v2/v3 Using CapSolver and n8n
Build a eCAPTCHA v2/v3 solver API using CapSolver and n8n. Learn how to automate token solving, submit it to websites, and extract protected data with no coding.

Lucas Mitchell
10-Mar-2026

How to Solve Cloudflare Turnstile Using CapSolver and n8n
Build a Cloudflare Turnstile solver API using CapSolver and n8n. Learn how to automate token solving, submit it to websites, and extract protected data with no coding.

Ethan Collins
10-Mar-2026

Browser Automation for Developers: Mastering Selenium & CAPTCHA in 2026
Master browser automation for developers with this 2026 guide. Learn Selenium WebDriver Java, Actions Interface, and how to solve CAPTCHA using CapSolver.

Adรฉlia Cruz
02-Mar-2026

PicoClaw Automation: A Guide to Integrating CapSolver API
Learn to integrate CapSolver with PicoClaw for automated CAPTCHA solving on ultra-lightweight $10 edge hardware.

Ethan Collins
26-Feb-2026

How to Solve Captcha in Nanobot with CapSolver
Automate CAPTCHA solving with Nanobot and CapSolver. Use Playwright to solve reCAPTCHA and Cloudflare autonomously.

Ethan Collins
26-Feb-2026

How to Extract Structured Data From Popular Websites
Learn how to extract structured data from popular websites. Discover tools, techniques, and best practices for web scraping and data analysis.

Aloรญsio Vรญtor
12-Feb-2026

