AutomationFlowsWeb Scraping › Automatically Solve Recaptcha V2 with Capsolver

Automatically Solve Recaptcha V2 with Capsolver

ByCapSolver @capsolver on n8n.io

• Receives reCAPTCHA v2 solving requests via webhook • Sends tasks to CapSolver and returns solved tokens in real time • Runs a scheduled check to validate solving performance • Submits tokens to target endpoint and verifies success/failure • Supports manual trigger for quick…

Webhook trigger★★★★☆ complexity17 nodesN8N Nodes CapsolverHTTP Request
Web Scraping Trigger: Webhook Nodes: 17 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #13996 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "5Vs3wM6nbVlwKLEg",
  "name": "reCAPTCHA v2",
  "tags": [],
  "nodes": [
    {
      "id": "2252983b-459c-43f6-90d8-ff0463287d44",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -64
      ],
      "parameters": {
        "width": 480,
        "height": 896,
        "content": "## reCAPTCHA v2 \u2014 All Triggers\n\n### How it works\n\n1. Receives solver requests through a webhook.\n2. Processes these requests using CapSolver and returns the results.\n3. Regularly triggers checks every hour using a schedule.\n4. Executes the scheduled process and checks the status of tasks.\n5. Allows manual testing of CapSolver through a manual trigger.\n\n### Setup steps\n\n- [ ] Set up webhook credentials for 'Receive Solver Request'.\n- [ ] Configure CapSolver with necessary keys for all CapSolver nodes.\n- [ ] Assign necessary permissions for HTTP request to reCAPTCHA endpoint.\n- [ ] Review and adjust the schedule in 'Schedule Trigger'.\n- [ ] Test manual execution with 'Manual Trigger'.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "93d7de7b-9a39-4b04-bcc8-89d8294f438a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        -64
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 304,
        "content": "## Receive and handle requests\n\nStarts with receiving a solver request via webhook, processes it, and returns the solver result."
      },
      "typeVersion": 1
    },
    {
      "id": "3e5b48a9-ee9c-455d-9547-4dcead27813f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        288
      ],
      "parameters": {
        "color": 7,
        "width": 800,
        "height": 304,
        "content": "## Scheduled recurrent process\n\nInitiates the process on an hourly schedule, sets target parameters, and sends them to CapSolver."
      },
      "typeVersion": 1
    },
    {
      "id": "4a12c26e-43be-4d96-80b8-2e38e7a2f5d3",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        160
      ],
      "parameters": {
        "color": 7,
        "width": 736,
        "height": 464,
        "content": "## Process and validate token\n\nPosts to the reCAPTCHA validation endpoint and checks results, branching into pass or fail paths."
      },
      "typeVersion": 1
    },
    {
      "id": "dccea023-c7c3-49fa-a78c-907e1ed813fd",
      "name": "Receive Solver Request",
      "type": "n8n-nodes-base.webhook",
      "onError": "continueRegularOutput",
      "position": [
        560,
        64
      ],
      "parameters": {
        "path": "solve-recaptcha-v2",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "c9bd8a57-c4ec-441a-8e9a-f259f38f8285",
      "name": "CapSolver [Webhook]",
      "type": "n8n-nodes-capsolver.capSolver",
      "position": [
        880,
        64
      ],
      "parameters": {
        "type": "={{ $json.body.taskType || 'ReCaptchaV2TaskProxyLess' }}",
        "proxy": "={{ $json.body.proxy || '' }}",
        "optional": {
          "apiDomain": "={{ $json.body.apiDomain || '' }}",
          "isSession": "={{ $json.body.isSession || false }}",
          "pageAction": "={{ $json.body.pageAction || '' }}",
          "isInvisible": "={{ $json.body.isInvisible || false }}",
          "enterprisePayload": "={{ $json.body.enterprisePayload || '' }}"
        },
        "websiteKey": "={{ $json.body.websiteKey }}",
        "websiteURL": "={{ $json.body.websiteURL }}"
      },
      "typeVersion": 1
    },
    {
      "id": "ca06627a-2f18-4db8-98e9-ab2d66b9672a",
      "name": "Return Solver Result",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1168,
        64
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json.data) }}"
      },
      "typeVersion": 1.5
    },
    {
      "id": "47e00184-ad92-4447-96c2-bf213bd05868",
      "name": "Schedule Trigger (Every 1h)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        560,
        416
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours"
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "dfb0507c-23b7-4269-9a6f-f9c8a4c0d050",
      "name": "Set Target Params",
      "type": "n8n-nodes-base.set",
      "position": [
        880,
        416
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "sa-001",
              "name": "websiteURL",
              "type": "string",
              "value": "https://www.google.com/recaptcha/api2/demo"
            },
            {
              "id": "sa-002",
              "name": "websiteKey",
              "type": "string",
              "value": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "43efeeb9-cc97-4a26-84a3-4ba2a2f3de7e",
      "name": "CapSolver [Schedule]",
      "type": "n8n-nodes-capsolver.capSolver",
      "position": [
        1168,
        416
      ],
      "parameters": {
        "optional": {},
        "websiteKey": "={{ $json.websiteKey }}",
        "websiteURL": "={{ $json.websiteURL }}"
      },
      "credentials": {
        "capSolverApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "16356383-a36b-4c20-854b-b280af3142a3",
      "name": "Submit Token",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1472,
        416
      ],
      "parameters": {
        "url": "https://www.google.com/recaptcha/api2/demo",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "form-urlencoded",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "g-recaptcha-response",
              "value": "={{ $json.data.solution.gRecaptchaResponse }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/x-www-form-urlencoded"
            },
            {
              "name": "user-agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
            }
          ]
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "1bed5df0-44ad-4778-9c05-bd2ffb5a2ad1",
      "name": "Check Result",
      "type": "n8n-nodes-base.if",
      "position": [
        1776,
        416
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "if-001",
              "operator": {
                "type": "string",
                "operation": "contains"
              },
              "leftValue": "={{ $json.data }}",
              "rightValue": "recaptcha-success"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "4d59e132-fc29-4f82-a82d-5b28da65d389",
      "name": "Monitor Passed",
      "type": "n8n-nodes-base.set",
      "position": [
        2016,
        288
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "sp-001",
              "name": "status",
              "type": "string",
              "value": "passed"
            },
            {
              "id": "sp-002",
              "name": "message",
              "type": "string",
              "value": "reCAPTCHA v2 monitor passed successfully"
            },
            {
              "id": "sp-003",
              "name": "timestamp",
              "type": "string",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0bfa4871-0209-473e-83fd-7b68b58f59e5",
      "name": "Monitor Failed",
      "type": "n8n-nodes-base.set",
      "position": [
        2016,
        448
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "sf-001",
              "name": "status",
              "type": "string",
              "value": "failed"
            },
            {
              "id": "sf-002",
              "name": "message",
              "type": "string",
              "value": "reCAPTCHA v2 monitor FAILED \u2014 token rejected"
            },
            {
              "id": "sf-003",
              "name": "timestamp",
              "type": "string",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "6af2965d-2bad-4682-8bf1-6eae36050217",
      "name": "Manual Trigger (Test)",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        560,
        752
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "13fafebf-1475-464f-bdd3-3f75e1e58d60",
      "name": "CapSolver [Manual]",
      "type": "n8n-nodes-capsolver.capSolver",
      "position": [
        880,
        752
      ],
      "parameters": {
        "optional": {},
        "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "websiteURL": "https://www.google.com/recaptcha/api2/demo"
      },
      "credentials": {
        "capSolverApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "09d7fa93-9d06-44f9-8d28-ee7b0b248968",
      "name": "Format Result",
      "type": "n8n-nodes-base.set",
      "position": [
        1168,
        752
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "mr-001",
              "name": "token",
              "type": "string",
              "value": "={{ $json.data.solution.gRecaptchaResponse }}"
            },
            {
              "id": "mr-002",
              "name": "taskId",
              "type": "string",
              "value": "={{ $json.data.taskId }}"
            },
            {
              "id": "mr-003",
              "name": "status",
              "type": "string",
              "value": "solved"
            },
            {
              "id": "mr-004",
              "name": "solvedAt",
              "type": "string",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "cf4a4359-d5c4-40e8-986b-0cf099b6511c",
  "connections": {
    "Check Result": {
      "main": [
        [
          {
            "node": "Monitor Passed",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Monitor Failed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Token": {
      "main": [
        [
          {
            "node": "Check Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Target Params": {
      "main": [
        [
          {
            "node": "CapSolver [Schedule]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapSolver [Manual]": {
      "main": [
        [
          {
            "node": "Format Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapSolver [Webhook]": {
      "main": [
        [
          {
            "node": "Return Solver Result",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CapSolver [Schedule]": {
      "main": [
        [
          {
            "node": "Submit Token",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Trigger (Test)": {
      "main": [
        [
          {
            "node": "CapSolver [Manual]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Solver Request": {
      "main": [
        [
          {
            "node": "CapSolver [Webhook]",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger (Every 1h)": {
      "main": [
        [
          {
            "node": "Set Target Params",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

• Receives reCAPTCHA v2 solving requests via webhook • Sends tasks to CapSolver and returns solved tokens in real time • Runs a scheduled check to validate solving performance • Submits tokens to target endpoint and verifies success/failure • Supports manual trigger for quick…

Source: https://n8n.io/workflows/13996/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request
Web Scraping

Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.

Execute Command, HTTP Request, Read Write File +1
Web Scraping

📡 This workflow serves as the central Alpha Vantage API fetcher for Tesla trading indicators, delivering cleaned 20-point JSON outputs for three timeframes: , , and . It is required by the following a

HTTP Request