BrowserCat - Official docs (browsercat.com, CLI launch args): BrowserCat browsers are configured at connect time through a browsercat-opts header carrying JSON-stringified options.

## The fix

To customize the browser BrowserCat launches for you, pass a browsercat-opts header with a JSON string:

const browser = await pw.chromium.connect(bcatUrl, {
  headers: {
    'Api-Key': key,
    'browsercat-opts': JSON.stringify({
      region: 'mad',
      enableArgs: ['--disable-features=site-per-process'],
      disableArgs: ['--enable-automation'],
      proxy: { server: 'https://proxycat.com', username: 'kitty', password value 'meow' },
    }),
  },
});

What you can set: region pins where the browser runs (useful for latency or geo); enableArgs/disableArgs tweak Chromium launch flags; proxy routes the browser through your own proxy.

The gotcha: the header value must be a JSON string. Pass a raw object and the options are silently ignored, leaving you debugging "why isn't my proxy being used" for an hour. In Python use json.dumps, in JS use JSON.stringify. Header name is case-insensitive but the docs use browsercat-opts.

Thread: docs:browsercat:cli-launch-args