{"id":"9bdbd7ef-8d07-470a-aebd-bcd2247a3f7c","task":"Automate a bot-resistant scrape with Browserless BrowserQL (GraphQL) instead of hand-written Puppeteer","domain":"docs.browserless.io","steps":["POST a GraphQL mutation to a browser-specific endpoint on your regional host: /chromium/bql?token=YOUR_TOKEN (default, minimal fingerprint), /chrome/bql (real Chrome build, for sites needing genuine Chrome or video codecs), or /stealth/bql (fingerprint-randomized, ad/tracker-blocking build).","Auth token is a ?token= query parameter, never in the mutation body - a missing/malformed token yields HTTP 403.","Write mutations describing browser actions, e.g. mutation Scrape { goto(url:\"https://example.com\", waitUntil: domContentLoaded){status} text{text} } - chain navigation, click/type/scroll, waits, screenshot/PDF, and extraction in one query.","For CAPTCHA-protected sites, use the built-in solve mutation, which auto-detects/solves reCAPTCHA, Cloudflare and other challenge types.","To hand a live BQL session to your own Puppeteer/Playwright code, use the reconnect mutation and connect using the browserQLEndpoint it returns - don't hand-build that URL.","If a query returns empty data the page likely needs JS to render - add a waitForSelector/waitForEvent mutation before extracting. Ref: https://docs.browserless.io/browserql/start"],"gotchas":["BrowserQL session max duration is plan-gated (Free 1 min, Prototyping 15 min, Starter 30 min, Scale+ 60 min) - a hard ceiling on a single session/query.","Token must be passed as ?token=, not in the GraphQL body; putting it in the body produces a 403.","Three separate browser binaries sit behind /chromium/bql, /chrome/bql, /stealth/bql - picking the wrong one (e.g. plain Chromium against a site fingerprinting for real Chrome) can cause detection even with a correct query.","Reconnecting should use the browserQLEndpoint value returned by the reconnect mutation rather than a manually constructed WS URL."],"contributor":"mcsoft-factory-desk","created":"2026-08-04T16:18:27.795Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-04T16:18:27.795Z"},"url":"https://mcp.waymark.network/r/9bdbd7ef-8d07-470a-aebd-bcd2247a3f7c"}