How to bypass any captcha with BCS tasks

We are in a point in time where technology is changing drastically by the year.

Along with the technology change, the captchas are also changing. Web developers are trying harder and harder to block automated traffic and actions that are performed on the websites.

Because captcha types are changing as often as technology does, we decided to try and go a different way about it.

We implemented what we are calling BCS tasks. This is an entirely new way of going about website automation, along captcha bypassing and others.

The main idea of the task is the following:

  • templates, which are instructions performed on worker end
  • user submits task through API, using template name and other information such as variables
  • task loads on worker machine for him to solve it
  • upon completion, the user will get back the session of the worker for that site

This gives the users lots of different uncharted possibilities when it comes to automation. The template acts as the steps that have to be performed, automatically or manually by the worker. User can then restore the session on his end, without the need to relogin.



Templates are at the core of the BCS tasks.

They defined exactly what steps (or actions) will be executed on the workers machine. Template actions are sequential, meaning they get executed one after the other.

To define a template check out this page:

At the core of the template, are the actions.

What kind of actions are available ?

  • FILL_INPUT_AUTO - auto complete field value with text

  • WAIT_CONTROL_TEXT_PRESENT - wait for text to appear in DOM

  • WAIT_CONTROL_TEXT_NOT_PRESENT - wait for text to disappear from DOM

  • WAIT_SELECTOR_PRESENT - wait for CSS selector to appear

  • WAIT_SELECTOR_NOT_PRESENT - wait for CSS selector to disappear

  • WAIT_URL_KEYWORD_PRESENT - wait for keyword (text) in URL to appear

  • WAIT_URL_KEYWORD_NOT_PRESENT - wait for keyword (text) in URL to disappear

  • CLICK_ON_SELECTOR - wait for CSS selector to appear and click on it

  • CLICK_ON_ELEMENT_WITH_TEXT - wait for an element containing specific text to appear and click on it

  • HIDE_ELEMENT_BY_SELECTOR - Hide an element by CSS selector to help worker focus on task

  • CHANGE_DESCRIPTION - Changes description text for worker. Useful when he's required to do another step

  • TAKE_SCREENSHOT - Takes screenshot of current page state

  • DELAY_TIME - Delay for an amount of seconds

And more will be added.

Actions can have the following properties:

  • optionally - action can be success or not, task will move to next action on regardless
  • exit Trigger - If action succeeds, it will stop the task from execution and return current session to user. This can be set only for certain actions, and works only with the optional flag enabled.

In case an action does not succeed, and it's not set as optional, the task will retry that action until it suceeds.

Load the example template into the form, to get an idea of how a new template looks.

‚Äč add template

Each template requires the following:

  • name - which will be used when submitting tasks with it
  • visibility - private or public, if private, only you can use it, if public, other users can use and see it too
  • description for customers - description that will be seen by other customers, when template is set as public
  • description for workers - what will be seen by the worker when solving it, can also be changed dynamically as task action
  • variables - information such as email, password, etc, that will be set when submitting a new task or through pushVariables
  • action steps - sequential steps / actions, that will be executed on the workers machine
  • domains of interest - other domains for which cookies will be collected (as task solution)

Publishing templates

When publishing templates, it's important to know that the template can have two different visibility types:

  • private - only the user that created it can use it (after it was verified). Cost for reviewing and publishing: $1.
  • public - everybody can use it (after it was verified). Cost for reviewing and publishing: $1.

For public templates, you'll earn %5 on each customer's expenses with this template. You'll need to leave some contacts for our customers to reach out for your help if something goes wrong with your template.

We review all templates carefully. You need to follow some basic requirements to switch successfully to production mode:

  • No illegal activity of any kind.
  • Templates should not duplicate existing ones.
  • Don't submit dummy or test templates.
  • Provide an example web address and variable values for review (in description). We'll launch a test, and all the steps should complete successfully.

Public templates

You can check all the public available templates here: The templates that show up, are those that are public but were also verified by our team.

You can also search by template name and description.

Templates having the green shield are added by us so they are the most safe to use, from the public templates.


Submitting task (API request)

In order to submit a task, the following parameters have to be provided to the API:

  • access_token - for authentication
  • page_url - on what URL the template will be executed
  • template_name - the name of the template, private or public
  • variables - variables used in actions
  • user_agent - User-Agent used in requests (optional)
  • proxy - Proxy used in requests (optional)

The task information such as template_name, page_url, variables and user-agent are submitted through our API. Each submission is considered a different run of the template, with the specified information.


Some websites will respond differently, if connected from mobile or desktop. If that's the case, make sure you use the same user agent used when creating the template, or at least from the same platform, when you submit a new task.

Although user_agent parameter is optional, it can be very important.

curl -H "Content-Type: application/json" \
     -X POST \
     -d '{"access_token": "YOUR_ACCESS_TOKEN", "template_name": "Login test page", "user_agent": "the same UA used when creating the template", "page_url": "", "variables": {"username": "abc", "password": "0000"}}' \

# response

Use the returned captchaID like a regular captcha to get the solution.

To find out all the information regarding the API for submitting tasks, check our API docs

Push variables

This feature allows for variables to be pushed for the task, while task was already received by a worker.

Useful in situations where you don't know a specific value of a variable, only after a certain action occurs in the task template. For example, when dealing with 2FA.

Here's how to push variables:

curl -H "Content-Type: application/json" \
     -X POST \
     -d '{"access_token": "YOUR_ACCESS_TOKEN", "pushVariables": {"tfa_code": "1084"}}' \

# response

For variables that are required, but were not submitted with the task will be threated as variables that require a push update.

Usage of solution (session)

Tasks that are completed successfully will return the following:

  • lastUrl
  • lastScreenshot
  • cookies
  • localStorage
  • fingerprint

Use the cookies, localStorage and fingerprint to restore the session into a different browser. Technologies such as selenium, puppeteer and playwright allow you to do so.

We've created an application in nodejs using playwright that imports the cookies. Source code is available here:


At this time, we set the price at $2.5 per 1000 tasks. Additionally, every second of the task execution costs 1/60 of the task price. For example, the task costs $0.0025, and the worker spent 20 seconds solving it.
The final cost will be $0.00333 = 0.0025 + (0.0025 / 60 * 20) .


The tasks are in beta currently. Feel free to message about your thoughts on tasks.