# Scrapfly Documentation

## Table of Contents

### Dashboard

- [Intro](https://scrapfly.io/docs)
- [Project](https://scrapfly.io/docs/project)
- [Account](https://scrapfly.io/docs/account)
- [Workspace & Team](https://scrapfly.io/docs/workspace-and-team)
- [Billing](https://scrapfly.io/docs/billing)

### Products

#### MCP Server

- [Getting Started](https://scrapfly.io/docs/mcp/getting-started)
- [Tools & API Spec](https://scrapfly.io/docs/mcp/tools)
- [Authentication](https://scrapfly.io/docs/mcp/authentication)
- [Examples & Use Cases](https://scrapfly.io/docs/mcp/examples)
- [FAQ](https://scrapfly.io/docs/mcp/faq)
##### Integrations

- [Overview](https://scrapfly.io/docs/mcp/integrations)
- [Claude Desktop](https://scrapfly.io/docs/mcp/integrations/claude-desktop)
- [Claude Code](https://scrapfly.io/docs/mcp/integrations/claude-code)
- [ChatGPT](https://scrapfly.io/docs/mcp/integrations/chatgpt)
- [Cursor](https://scrapfly.io/docs/mcp/integrations/cursor)
- [Cline](https://scrapfly.io/docs/mcp/integrations/cline)
- [Windsurf](https://scrapfly.io/docs/mcp/integrations/windsurf)
- [Zed](https://scrapfly.io/docs/mcp/integrations/zed)
- [Roo Code](https://scrapfly.io/docs/mcp/integrations/roo-code)
- [VS Code](https://scrapfly.io/docs/mcp/integrations/vscode)
- [LangChain](https://scrapfly.io/docs/mcp/integrations/langchain)
- [LlamaIndex](https://scrapfly.io/docs/mcp/integrations/llamaindex)
- [CrewAI](https://scrapfly.io/docs/mcp/integrations/crewai)
- [OpenAI](https://scrapfly.io/docs/mcp/integrations/openai)
- [n8n](https://scrapfly.io/docs/mcp/integrations/n8n)
- [Make](https://scrapfly.io/docs/mcp/integrations/make)
- [Zapier](https://scrapfly.io/docs/mcp/integrations/zapier)
- [Vapi AI](https://scrapfly.io/docs/mcp/integrations/vapi)
- [Agent Builder](https://scrapfly.io/docs/mcp/integrations/agent-builder)
- [Custom Client](https://scrapfly.io/docs/mcp/integrations/custom-client)


#### Web Scraping API

- [Getting Started](https://scrapfly.io/docs/scrape-api/getting-started)
- [API Specification]()
- [Monitoring](https://scrapfly.io/docs/monitoring)
- [Customize Request](https://scrapfly.io/docs/scrape-api/custom)
- [Debug](https://scrapfly.io/docs/scrape-api/debug)
- [Anti Scraping Protection](https://scrapfly.io/docs/scrape-api/anti-scraping-protection)
- [Proxy](https://scrapfly.io/docs/scrape-api/proxy)
- [Proxy Mode](https://scrapfly.io/docs/scrape-api/proxy-mode)
- [Proxy Mode - Screaming Frog](https://scrapfly.io/docs/scrape-api/proxy-mode/screaming-frog)
- [Proxy Mode - Apify](https://scrapfly.io/docs/scrape-api/proxy-mode/apify)
- [(Auto) Data Extraction](https://scrapfly.io/docs/scrape-api/extraction)
- [Javascript Rendering](https://scrapfly.io/docs/scrape-api/javascript-rendering)
- [Javascript Scenario](https://scrapfly.io/docs/scrape-api/javascript-scenario)
- [SSL](https://scrapfly.io/docs/scrape-api/ssl)
- [DNS](https://scrapfly.io/docs/scrape-api/dns)
- [Cache](https://scrapfly.io/docs/scrape-api/cache)
- [Session](https://scrapfly.io/docs/scrape-api/session)
- [Webhook](https://scrapfly.io/docs/scrape-api/webhook)
- [Screenshot](https://scrapfly.io/docs/scrape-api/screenshot)
- [Errors](https://scrapfly.io/docs/scrape-api/errors)
- [Timeout](https://scrapfly.io/docs/scrape-api/understand-timeout)
- [Throttling](https://scrapfly.io/docs/throttling)
- [Troubleshoot](https://scrapfly.io/docs/scrape-api/troubleshoot)
- [Billing](https://scrapfly.io/docs/scrape-api/billing)
- [FAQ](https://scrapfly.io/docs/scrape-api/faq)

#### Crawler API

- [Getting Started](https://scrapfly.io/docs/crawler-api/getting-started)
- [API Specification]()
- [Retrieving Results](https://scrapfly.io/docs/crawler-api/results)
- [WARC Format](https://scrapfly.io/docs/crawler-api/warc-format)
- [Data Extraction](https://scrapfly.io/docs/crawler-api/extraction-rules)
- [Webhook](https://scrapfly.io/docs/crawler-api/webhook)
- [Billing](https://scrapfly.io/docs/crawler-api/billing)
- [Errors](https://scrapfly.io/docs/crawler-api/errors)
- [Troubleshoot](https://scrapfly.io/docs/crawler-api/troubleshoot)
- [FAQ](https://scrapfly.io/docs/crawler-api/faq)

#### Screenshot API

- [Getting Started](https://scrapfly.io/docs/screenshot-api/getting-started)
- [API Specification]()
- [Accessibility Testing](https://scrapfly.io/docs/screenshot-api/accessibility)
- [Webhook](https://scrapfly.io/docs/screenshot-api/webhook)
- [Billing](https://scrapfly.io/docs/screenshot-api/billing)
- [Errors](https://scrapfly.io/docs/screenshot-api/errors)

#### Extraction API

- [Getting Started](https://scrapfly.io/docs/extraction-api/getting-started)
- [API Specification]()
- [Rules Template](https://scrapfly.io/docs/extraction-api/rules-and-template)
- [LLM Extraction](https://scrapfly.io/docs/extraction-api/llm-prompt)
- [AI Auto Extraction](https://scrapfly.io/docs/extraction-api/automatic-ai)
- [Webhook](https://scrapfly.io/docs/extraction-api/webhook)
- [Billing](https://scrapfly.io/docs/extraction-api/billing)
- [Errors](https://scrapfly.io/docs/extraction-api/errors)
- [FAQ](https://scrapfly.io/docs/extraction-api/faq)

#### Proxy Saver

- [Getting Started](https://scrapfly.io/docs/proxy-saver/getting-started)
- [Fingerprints](https://scrapfly.io/docs/proxy-saver/fingerprints)
- [Optimizations](https://scrapfly.io/docs/proxy-saver/optimizations)
- [SSL Certificates](https://scrapfly.io/docs/proxy-saver/certificates)
- [Protocols](https://scrapfly.io/docs/proxy-saver/protocols)
- [Pacfile](https://scrapfly.io/docs/proxy-saver/pacfile)
- [Secure Credentials](https://scrapfly.io/docs/proxy-saver/security)
- [Billing](https://scrapfly.io/docs/proxy-saver/billing)

#### Cloud Browser API

- [Getting Started](https://scrapfly.io/docs/cloud-browser-api/getting-started)
- [Proxy & Geo-Targeting](https://scrapfly.io/docs/cloud-browser-api/proxy)
- [Unblock API](https://scrapfly.io/docs/cloud-browser-api/unblock)
- [File Downloads](https://scrapfly.io/docs/cloud-browser-api/file-downloads)
- [Session Resume](https://scrapfly.io/docs/cloud-browser-api/session-resume)
- [Human-in-the-Loop](https://scrapfly.io/docs/cloud-browser-api/human-in-the-loop)
- [Debug Mode](https://scrapfly.io/docs/cloud-browser-api/debug-mode)
- [Bring Your Own Proxy](https://scrapfly.io/docs/cloud-browser-api/bring-your-own-proxy)
- [Browser Extensions](https://scrapfly.io/docs/cloud-browser-api/extensions)
##### Integrations

- [Puppeteer](https://scrapfly.io/docs/cloud-browser-api/puppeteer)
- [Playwright](https://scrapfly.io/docs/cloud-browser-api/playwright)
- [Selenium](https://scrapfly.io/docs/cloud-browser-api/selenium)
- [Vercel Agent Browser](https://scrapfly.io/docs/cloud-browser-api/agent-browser)
- [Browser Use](https://scrapfly.io/docs/cloud-browser-api/browser-use)
- [Stagehand](https://scrapfly.io/docs/cloud-browser-api/stagehand)

- [Billing](https://scrapfly.io/docs/cloud-browser-api/billing)
- [Errors](https://scrapfly.io/docs/cloud-browser-api/errors)


### Tools

- [Antibot Detector](https://scrapfly.io/docs/tools/antibot-detector)

### SDK

- [Golang](https://scrapfly.io/docs/sdk/golang)
- [Python](https://scrapfly.io/docs/sdk/python)
- [TypeScript](https://scrapfly.io/docs/sdk/typescript)
- [Scrapy](https://scrapfly.io/docs/sdk/scrapy)

### Integrations

- [Getting Started](https://scrapfly.io/docs/integration/getting-started)
- [LangChain](https://scrapfly.io/docs/integration/langchain)
- [LlamaIndex](https://scrapfly.io/docs/integration/llamaindex)
- [CrewAI](https://scrapfly.io/docs/integration/crewai)
- [Zapier](https://scrapfly.io/docs/integration/zapier)
- [Make](https://scrapfly.io/docs/integration/make)
- [n8n](https://scrapfly.io/docs/integration/n8n)

### Academy

- [Overview](https://scrapfly.io/academy)
- [Web Scraping Overview](https://scrapfly.io/academy/scraping-overview)
- [Tools](https://scrapfly.io/academy/tools-overview)
- [Reverse Engineering](https://scrapfly.io/academy/reverse-engineering)
- [Static Scraping](https://scrapfly.io/academy/static-scraping)
- [HTML Parsing](https://scrapfly.io/academy/html-parsing)
- [Dynamic Scraping](https://scrapfly.io/academy/dynamic-scraping)
- [Hidden API Scraping](https://scrapfly.io/academy/hidden-api-scraping)
- [Headless Browsers](https://scrapfly.io/academy/headless-browsers)
- [Hidden Web Data](https://scrapfly.io/academy/hidden-web-data)
- [JSON Parsing](https://scrapfly.io/academy/json-parsing)
- [Data Processing](https://scrapfly.io/academy/data-processing)
- [Scaling](https://scrapfly.io/academy/scaling)
- [Walkthrough Summary](https://scrapfly.io/academy/walkthrough-summary)
- [Scraper Blocking](https://scrapfly.io/academy/scraper-blocking)
- [Proxies](https://scrapfly.io/academy/proxies)

---

  if(matchMedia('(prefers-color-scheme:dark)').matches){document.documentElement.dataset.theme='dark'} Scrapfly | Copilot 
    [{
        "@context": "https://schema.org",
        "@type": "WebSite",
        "@id": "https://scrapfly.io",
        "headline": "Scrapfly",
        "name": "Scrapfly",
        "description": "Scrapfly Copilot",
        "url": "https://scrapfly.io"
    },
    {
        "@context": "https://schema.org",
        "@type": "Corporation",
        "@id": "https://scrapfly.io",
        "name": "Scrapfly",
        "url": "https://scrapfly.io",
        "sameAs": ["https://github.com/scrapfly", "https://www.linkedin.com/company/scrapfly", "https://x.com/Scrapfly_dev"],
        "address": {
            "@type": "PostalAddress",
            "streetAddress": "651 N Broad St, Suite 201",
            "addressLocality": "Middletown",
            "addressRegion": "DE",
            "postalCode": "19709",
            "addressCountry": "US"
        },
        "legalName": "Joam Intelligence LLC",
        "logo": {
            "@type": "ImageObject",
            "url": "https://cdn.scrapfly.io/0.1.212/www/public/img/logo.png?version=0.1.212",
            "width": "188",
            "height": "49"
        },
        "contactPoint": {
            "@type": "ContactPoint",
            "contactType": "contact",
            "email": "contact@scrapfly.io"
        }
    }]
                         
        :root {
            --dark-mode-toggle-dark-icon: url("data:image/png;base64,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");
            --dark-mode-toggle-light-icon: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAAG0oRReAAADAFBMVEVHcEz9rgL8rgJLUFXJyQD9rgL9jAP8rgP/jgD9rQP/tQD/sABFTk5LUFX/qwD/vgD/uAD9ywJATVBHSE03PEFLUFVFS078rgNFS1BKT1RLUFX9rwL9rQJLUFVLUFX8rgP9rwJLTlRLUFX9rgJLUFVLUFX9ywJMTIBLUFVLUFX9ywJCR0v/uwD+rgH9ywL8rwP9rgJLUFVLUFVLT1X/tgD9rgL9ywL9ywL9rgI3PEFLUFVMUVZLUFX/rwD/qgD9ywL/ygD9rgL/ygD/uQBIS1FLUFVLUFVLUVX+rgFLUFX+ywH/rwD8rgP8rgP9ywL9ywL/sAD/yQD/rQBLUFVFS1FLUFVKT1T9rgL/uAD/zABLUFX9rgL9rgL9ywL9rwP9rgL9rgI4PEL9ywL+zAH9rgL9ywL8zAM3PEH9ywI3PEA3PEH9rQL/rwD/pgD9ywI3PEH9ywL/rgD/ywD9rgL+rgL9ywL9zAL/rgD8ywNLUFVLUFX+ywE4PUL8ywNKUFQ2PEH9ywL9rwP9ywI3PEH7ywQ2O0FMT1X/zAA/RUpLUFT9rwL9rgI2PEA3PEH8ywM3PEA3PEFJT1T9rgH9rgL9rgL9ywL9rgL9ywL3qwX+ywH/tQA3PEE3PEH9rgL9rgL9rgL+tQL9ywL9rgI4PUI3PEH9ywI2O0D9zAL8rgP8rgM2PEL9rgL9rgI2PED+ogH+lQH9wAP9lQL/jgA9Qkb9rQL9rgL9rQL9rwKugyejeR/+lQJDSE39lAL9ywJLUFX9rgI3PEH9jAL9tQI9QkZKT1RCR03+lAJCSEz4qwT9xAL6rQP9vQLcnRH9yQK8ix39sgJgWkryqAb9wQJOUVOXeDHhnw79pAGHcDmMczY8Pz9FRDz9tAKogSlXV0/joAvspQhqWTB1ZkFRVFK0hyBuYkScey+KbCb9uQKAbDyugySifi3oowz9sAKSdjTCjh1pX0aDaCv9pwJVTTfNlBZ9aj15YyzTlxL9nwL9mQJdUjSadSGnfB3PkxGScST9kAJSUEfscn0iAAAAvXRSTlMA+vz5Af7Mwz/ICAQD/AIFC/wGCvm8D14V2EJvgMyqQqIrV/bvtWcCkXt/JA6zkUvfaeJ1LJGY9PzgTTHfFgPrFNsgNxuaXjm89Ks8xlWf/iIbHdMgpMOIEjGC73fNZs/y0W6w64lBjMErMpkoMPHy9xon1KrV0jNKrui161uKxt7Lcm9Ep8c8RnDi2FzYUjyx6sCg54zk5vq7GJd28GeXuYONu03YZnhjUVVq5X6ts5/kQ/yDbpx90M7y8/MTLq3NAAAhQUlEQVR42u1dd3hVRd4+PElEAiQECIFA6EF6b9JEqoAUCSCgIAIqig0VLKirrr13Hld3bdvLs+37vv3azLmCYkjoxcJi18VeVv10+3dvCrllzpyZOTOn3Pu+fyZ3Zn7v+3tPmXJmLAswBtt+7jlUgAqCreBckoCdQNJfp9Nj4BcnDbDr8Wj9X2kyYrG7U6JlFT9WgW0XphWPl48jhe4QRvmmCmybUT6pimSuhFVBNbt8Yw3NG36WXp64tJ8UQ8PvClLLE/fyaSxswqyAV75JyYHxX/6RWQG3fHIuCtIDYFWQUT52bVMNVzErcCmfHAJxrSDmsQJm+abrYiCzAvfy1DGAtAqcyotW4FhesALn8mIVcMoLVcArL1IBt7xABfzylG+k11zLUzcnupV3q0C8fGYNdRUcdilPk27N7PuBS/lhDcXXOt7SvuaWpwL3RIHyDb+c6nBX5pSvShQvc30uOJangk8mm18+UYPFfzaOZZa/41ihUclP59WZFcT/2t5RfwbGpFZQXP9XJ/9w3jESpYcm//VY6eV4zUMFvlXQosVxx6HvCgSO5l6djApQgfcKmp7ug1gPZzqDW3pZ2vtF/V9L0/p/7sMPSW84lsv4QfJAxxiB4QOa1mOcmxQo+yWNOvSfUzv/CwSHD2hmr7WokWqJwPABZfZ7V7HelRvKfyk2fqA4/hB7PCkXtSrjDzG3Dovr+MEtLhUccRs/+L3H8YdtVLwCdnk6QrQCh/Kcrq/tOn6wjbpWcMS9PL+Cl93L8yt4x728iAbc8gIV8Mu7V+BSfrxbBS7lqcu18JFbebcKbLfyMxuLF9ofMyt4lV+eut+R+OU7ptyYBXr/aeXrAzir8a7c370CVnmZ4YNtjuMfZULDB9uchg+ano2XMZ+N93DLCz2dM8uXuj7gU98PLIf8s9GHNcGR9I6B1zxU4FsFT2L4AACyeVgmMcTo8S6BABAAAkAAyrjt0qTX5lH83/ZLfpWe4blpdt8lgTPTf1pOnRBrp9R2MbsPnIxTGn87gjqjoZc0gNlIvJI7mf+4jBDiHkAczSyriro3X4fvstrP6M0w+//OAdhUtPn08bak9lPUdGyeFUC1XPMZIaRVx2+eEYB885kqrEyt8ikiHoBa83E862SFzHUXvABUm88UIYH1Au0T0fZj7mBfk0QiAE/NO0RAJALw2DwzgnUSAXhufhtj0ISIB7DTe/OZAWyRCEBD85kREG8BSDfvJYCdOpr3EsAnOpr3EsBBHc17CeAjHc3rMaGH5jMC2CwfgKfmM28ERPJO6LF5yh5vFg7Aa/O0wtvDyGvzrPHzLlKPY4/NU/ZLkcwLiafmU9uf21TrLolXMg/NU86LscRL6eeqzXdsbPzK1ArPSl9h4fpartQ8ZbO3lDomtpfmmyJYm27JjRJdM6nmW6e3dGPdBzSib6is9i+yrHYK1hNCiWsATb+VvPDE0ccpgF6Zv33Wqe2+3sdoigc3BvDgHLffDqhsbHh6B4ySIQAEgACyKQAAAAAAAAKHXf8+cDwCQAAIAAEgAASAABAAAgim9XlJg9Vn8AeLFyWvLCttpaHxG1ij5ROZP23LGirv7an10c7zBRm/zXMare90tmrz8/kTFsXJv3WeqXjRceGSCy4m4jMmnJmSF3hrp6xeK52aXyY0Z9Ss7redBNqPxZ5wuLjY7QvPmhVx6Se1zxTBwU5OU4fMabv/FG4/lrG4dWnKlGkTpkos6XxNov1Y7DyWAPWbHzlee/wAqFT7sdiJyQ11Z1/WmyWmbmXbj8UuYQqQHMIjutaUvsie2E6+K81Nra5uM4UpEotaX5Pmn8CPk7PwcGqNEy2Z9QO7ldrnrS12W8QhkYAXxBdTFifXKbOEQyH/DnekLkrLet9V5R/H+ek3vma2rXNZ7wsKK1rr6qzVsqzXTf/0a7EBG9wFEAzgBZElTqwHYPdaiQA8th+7R/gRLBvAi4KLzBjtF0kE8Jo3/nHcriCAwMpq4fZj1EgAEu1nBlAsEcAB7+1nfoLkcWW1bPsqS0pdApBs30sANTra9xLAVzrap21T279NIgAt7dPFqQGs8xSAQvvpOSBeAlBqX2MAau3rC0CxfW0BqLavKwDl9jUFoN4+5Q/HCAbgoX3KHImTDMBL+2lLfE9TCcBL+7Sf+rPgPR3ta3gce2vfewAe288IYJNkAF7b9/S531sa2u/o7a34Ra/tM17LSyQC2Ou5feqta/YPz+2f4LFv6LV9lgAZ28XxAnjVY/vDMppfJTk+4K39DAE6Sw/RHPbU/ri0jrltG/jSSvxrE1tplOzvutofmlzrUW2fevHar0pqvlvarhYyI6Wq7VPugLlEALbn9pnj9RIB/F1r+0Pcb4gZ8wWfK7Q/rSmAiUlVndz050KJGZM3pdufyb7+Uq6LfIk5oz+p80+KYJLgY4k1a3ZI1f/1E6fMXW3k5g2LPLSfkGAVe+a0v2gAVuOXdu7t38pop4vz3LVQABfWrxtQuP8LYLJrAJcf++15ru3PVJnAn8INIHXC9zxu++o7MzkG0C3jpx11f2yZuZAh866Zhh6M1nWsY7Gsezc1BDD2D66/HdG7oekJMyyNwEoqBIAAEAACQAAIAAEggBYtEkeqHXeRBQAAAAAAAAAAAACAM5o3zKc8V4/jIQAEgAAQAAJAAAgAASAABIAAEAACQAAIAAEgQLajxdajtft37NjxxRcvvfTNt9t/p6veHj37La4srehUUVrZ945x00LGuvCcS92Wew/9gUK9426lbpgesBZTt8gc/mrbTw0UqjZ/OpVCXs8AuE88SebLo2Q0z+fVu5zK43/qviG4zz/yU0pkPkBkYWhLVr1dqQqSP/P9uRSPNkrsH5PZj4CHX6RUO56q4UXuHndczIkHUbBQjv0NRAy2GBpPCR9HddGvQ3uhTzeeaYyiuyj7NUQYtjCGcD6AUaMv6IPLU/bTdL87TyYyEBfgXRP0BW6KYzMiOZ3389WEGBFAmb3QDgffcSbEDmeVw1F+swkxIcA+s/QTuNbhRYMTVeb3lfMIMSFAjXn6zjeDDWN5oa1N/sb1KkKMCOAP/QTud7gKunPjK2vwCiFGBHjLN/rMHTcbsYAb5MmWtYIYEWCfr/QTLwac+/tTnEAJMSLAuz7T55oggSvZcdYSMwIEQN9py9EknJUR5y5iRIBDhl571LZ9TUE3TfbnCvBBENkXVcBK2m6FmBHgk+Dox9FWqMtTpoG/kwAvB2N+SQVEtgNWE+BIgNkXvwoskW3HlATYGTR9UQXWEDMCBE+fuQd5Br5HzAgQAvrbMveaZICYEeBIGOiL7LPyiCEBwkFf4LggYkaAl8NB332zm6cNCRAW+pRO8MEAmQLsDgt9t7tAkSEBwkOfUu5MYv8gBfCFPqXDeQKMMSNAdXjou1wDxIwAn4aIfiACvBci+oEI8EqI6IdOAL/ph+wS8J9+IAJ8GSL6fAFu8PM9IBj6fAGu80+AoOjT0iD6AntDQ5/S8UEIsDM09N2GRG72oTscKP30o6j8GhB5JyT03cfEzjU7JBY0fVcDiJ2LpCDA66GgL7T5tKFh8Xfpv4KnTxcJCHCVGQHsENCnXYWmhjYbmhsMnH76GWCOq0h3mRFgX8D0hW4AU70vD3GeHn89WPru/JvrWSDjvEDijSDpu/C/MDXUHWaWyFQHR597/TNWTR41s0jKDog+8+SRhnWzBdqXCXKXyf0lCPqOR4+M4oW6y4gA9k7/6bMv/4G9eGEm1s5PMbNUVuQcNa3072Cw78KN8NjXE5uMCKDyNFCnn3n3K17FCy7t+xlDy+X/6hd92o6R/gLHuNZn/niSmQ8m2CeIaaffg33vO5kVUcH3HO6Uk4wIYNtfB0U/jifTgxnEf00aY0IA237HKP22wkujLxToJPQ3IYDrq6E6/Qo3QgMbInhQ/LvRMfoFOCVe7XcN0O8gwife/hzZrQJKdAqQcYicJvrjzX47vkmPAKPSqv2hHvqzOlg+wPX7eaWv5y3rWY/0Z1g+os1GNQEecqn3x3H6v1fI/IBgNtE4R0KAsZ2Fqy3vLcG9soMVNIpv2sIToMXPFOstv5q7dcj1HbGPEASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAaDbPjv22YHs9ZAbZDAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAEAACQAAIAAGyE3u21u7fv2OH/cVLL33z7fZ/6qq2Y/mwvl1LK6oqbi1dvHzGzBNCyHzp6hVJ2wrvSdpUuPnKNh7qHde1NXtT4eF9e4SG/FXr0jeW3pq+qXT3BfLVtuub57andKeegZOfNJi1s/ZWxsbavX4hlfnhwicIBrmx9mCHvdW3svdVH/tTsWrLH5DbWP3qtoGwX+Z84MRWx73l75rsVu0JXeW3lo/Ffuw7fe6RI1t5hwsM4VU7rTdV4R/H/b7SX8M/X2Er/3wFx7vBTKVjFRoPZTi7lV/0R7udsLHV7XyNlaxqe1BP/OO4xxf6q92PGNnqfsTIyIyn3izP/OO4RYbJAhX6l4kcMiMggL22KKXeJVQH/zh+Lkxlof3LImn+K4guAZKOtIs/+Kgu/rHYJaIPxcSJa1fI0Rc9l1xMALugsKHeazTyj+MJITI/qA+iTHv6xQWw7S4ebn6O/OMmyBfvudoFEwXpDxQ/akxYAHutZZVq5x/HBa50BiW9nQnxv46YEMC280zwd38ctOQee8XAOmJEgI+oGf6x2LV8PmekBeJ26tpJxIgAXxrjHwdv3GRkZm91II//fGJEgA9N8o/FOrrfAZNxo+Ovi2RP3BQU4GWz/GMxx/PH/sB5KGWimJgR4CvT/GOx8yUMUIeLtPAXE+At8/ydHoctnKM6ozj9x/nEjADv+8E/FlskZQDW8bPEjACv+MPf4U64nhtbyrGAJWYE2O0Xf4enYf5QbnhNHeUtxIgAh/zjH4s5dIYLeAE+mi809KUqQI2f/B3fCcu4MXZP/ORmYkYAX/lz+gVXcKOcaxUSMwLs9Zd/LHafY5doLS/OscSMAO/4zZ/XLbiQE+gOMwJU+88/1p7Tz+nsFOgfiRkBAuAfi/2K19Vrzg6UmBHgYBD8Y7F2PAXa9NJ6AXAFqAmGP/ciiKNbRqAfEzMCvB0M/1jsbpchn9PTAt1lRoAvg+Lv9EKYhMuTAz1KzAgQHP/Ys64KTCzQcgfkCXAwOP78McIGDGkMtNaQAEHyj50oMvrfXYcBHAV4JUj+Lo/CYx3lh70bwFGAYPmLWSAxa+zVAE4CHAyWv9BdoA6/MSRA0Pxj3xEUgJgRYHfQ/AXeBepwmiEBgucvuHLgBjMCVAfPX9ACxIwAb4WAP2+68Bj6GBIgDPzzlggIUGJGgEMh4N+aUl+uAKYAnwXPP1HtAD+uAKYAwfN/PlGv+zVwsRkB9oWDv8A1QMwI8EpI+NNWxt+C2AKEhT8dofgRiJ8CmORPZ5l/CLIE+Cgs/F1vAsSMAJ+Ehn9AArwdGv70di7/mw0JEB7+9GquAPMCFsA8f9qaK8ClZgTYFx7+LjcBYkaAT0PEPxABDoaIfyACfBYi/nRaAAKEiT/tabonoCaAb/zpcg2fhekXwD/+dLHh0RAlAXzkT2/lCPCTgATwkz+dwBHg6WAE8JU/fcD0aIC0AP7y544IjA5CAJ/5czsD5wQggN/8aW/VjTHMCOA7fzqcI8BNvgvgP39axRHgXr8FCIA/reR9UeqzAEHwp305AhT7K0Ag/OmwAHqDr4WIPy0PQID3Q8Sftg1AgCMh4h/IiNDOEPGnevZJ8TosHhx/vgA3+SRAgPyruAJM9keAAPm7zY8bEuCt0PDnDwobE2B3aPi7zQ6vMCOAHRr+bgJcZ1yAgPlXBrRIam9I+NPxAQmwOyT83ZfJrTEjgB0S/q19+FqAI0Dg/Gm/wNYKfxgK/iKLpR8ztlw+BPxFBJhsSoAw8L8jwC9G3gkBfxED6JgcYH80FQL+EwL9bO7NwPm7dYQascmMADWB8xe7Aqxupj6dPRw0/3Ei9BMbiuwyI8AbAfMXMsCpnjcQ4Xw9/mqw/AWegWfq2EHEWYDXA+XvboAr9ewhw9lB4nCQ/Ge40C/+vq5NZJwF2BcgfzcDDNK2jxRvF5k/B8effzBTxuaC+80IYAfGv7fLrhk6txLjCfC3gPhTzvYZ+XeyIt1jRgA7IP6cgZD12rcT5ApQHQj/1u57J+m8CLj7Cf41AP6OawKWjuVE+rEZATy8DyrzHyayf1rmUUDzzAhg+87/GrEd9DK3mj/JjACHfOZPBfdQTEYLT0MjbvsK/8lf/u1Ed9FsOm6ijfzJMjICqLwQqvMfJ76PauaBI8vMCCB/I1Tnf73ETrqMI2f6mBHA9o1/heT5AhmHDj1iRgDbJ/7D+f3+jN20GcdOzTYjQLUv/B0+j1nluJ86C5uNCCAxNqDO36kLWOy8o76Wb+rFTpmpNs7/GscewCnOZyqw8IgRAQTvA+r8qwTOmmOcqqHhQwrho7ZeNcm/K4/Rv3POVWFhihkB3N+I1PkPEztuMIFTBOYLJs03IoD9uSn+i9xOXOWcrcTGRiMCdDnfCP88dz4Pc07X8rqEUFyADZaV314//64CdIp456s5HElSolmAy+vrPU83/wFCdK7gnbDn7ctSQQGmNlbbTiv/ClE2zQZa0mg5RpsApybX+4Q+/gMss7hZjwAZ6p+oh//1lnmM1iDAkMxqO7b3zr/C8gejPQqwkl3tBR75V7WyfMNgDwJwDrse0F6df4WP9N2GijgC9BrJr7bD2bG6/X9lMd3yHwNXSAsgdNj7E9KHUffuYQWEkVskBGguesq51Wq6zFvvDCtQTJktJMD6Qsl6Rwj5oGKmFQZMnc0ToNkzE9WqbddvOI/8knFWqHDZ6jWNu1LvaaA+9KGypV6rbTVuelW66Uv7zbTCiQbi25+rh5VzgAAQAAJAAAgAASAABIAAEAACQAAIAAEgAASAABAAAkAACAABIAAEgAAQAAJAAAgAASAABIAAECA3BPjfnBWgRT1+fVw9LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDH8WSLFDR+iNqAiyBQtiPtXOz/fi4Fx0OgHDPAdhgABoABYAAYAAaAAWAAGAAGgEAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwDBonjZvTcNXrNpDEnFnlQ/FNzZ/KEuZd0mBh5u2/E9R/StrJpFucibsGTx8hnjOyC9Tii87aY1JxEOttrOGHvjqLkbfA23XXm/yt5UEbOWXN9zGlLegCl9Zl9MBMAzwDEMXT+3jdlwe4wozaO6UNW3vG3uZr7otsFbiDiEDNDweGjeWf+joVX59N7UCFqXzsi1R8PAPpuILCQMkPCAbfe6olu+nnA7juhEjWPJ4+fnRO7brP4RUYKcARrR6yFve8p2GDGB+oDnH4jV4ZLsdsFlgy8lylAzQB3u6lyoEu74xXnUH7wYS8Z3fpifjcmfN594ggcDJHCnnAl6dKW+4YVYJk68+4QsSv7E0SXEMzwaoO5OMEQo3GmLW/uX/bSrP+VOcF9WZP/mjUQLNBggMWKw3qV/MG4C9RMvxLhof56R/sG/NRs10J9BvZ9cSnRBjwESOOtKp9Gd61vTMKW/Hvcv0p2WK+pkuHGO6ff9c0qIRugzQBwnd8t8359OaQjTX4ezL9A5/nJjUx+pS6Gp7LfsrzX7ug2QeCFI7h+260vDm/76F4IBusZgHk7V4UETZ69cN4Zoh24DxHFK/fxB/h15YU9//bNAx/vAgl6ZOpxxZrHWDt9GYgIGDGDbBacXjZ9AI5H+unfC73pNTjfHi2GknuxPOmc+IdExQPUnNDrpr38d8PQo6MwTY23nSZ5n9n5EjMGAAXbujVr6624Ddyvn50lXSQYt8JD+ey8lJEIGeOdAFNNfh1vaKSXoQSFdHi1TGonOH0zMQq8Bal4JIPucUT9Z3CO/oKRwqPirUffvyT765xESIQNUv08je/Ufmy2QfBnYsEpyqGSuhLc2ExIhA+x7K9pXfyOulRkemlqg0EfqLrSuZtJsQiJkgOqvon/1H7OA8OqBMmMTaPmjCYmQAWpezp70y7wLFHdepawZd+aoDyFRMsCH2ZX+ujFi4R7Blc09TKCxZ46WjSFRMsCXB7Iu/QmcJzFBd6b6jaDX6ekLrgduJCRCBnhjb1a8+rGGhm6X6Q5MbaGuYYupSRX1JyRKBjiYlVd/46uA3DxRmy69lHVc1TCFPOUkEiUD7Hw7i9OfgPQ0UbfLPUyjjrTmERIlA7yfpTf/5IGhjtJjg0tHjVXU8+NdJEoGOPR2dl/9qjeBBIYMVRC0lpAoGeC9nEh/YqpY7UPDDeslRwl3kCgZoHpvjqQ/0R1QXTuYP/dOYUH37CIRMkDNzgM5k37JMYF0LOwupOhRQqJkgCM5lf7EwKCXz8qKyta6CbqfRMoAX+VY+hMTRB6Xjl44KHyPf1UD1HyWc+lPwPNHBMWdv++g6C4SJQPsey0X0x/H7ZZ3XPRgOHr/Hgzw0du5mf447rZ0oDBt5ijY/Esb4KMDuZp+1TEh5hTyqWHJv6wBDh3I3fTrdMCxmaOg8y9pAP+u/zCmX9tT4NjM0Vl20PmXM8C+t3M7/XH8UKsD8jeSKBmgZm+upz8OrfuLbCaRMsC7SH8s1r6jvvz3J5EywEGkv26FgLZ9pq4ikTLAbqS/YUMBTfmfXBIpA7yefat9FGcF8obpMcA6EikDfIarP4FtiW1PtOwvtZpEygAfIv2J9Nfvd1alIf+nzY+UAXbi5h9P//ON8Y7wboA1JFIGeAtXf1P6KW3tuS94LomUAT5F+p9PCbqrVwNsjJYB9iL9aRjvccc/EikDfID0p6PSmwE2RcsAe5H+DMz0tNU3iZQBdiP9mfD0FvBYtAzwLtLPgIeOwGQSKQPsRPpZ6KdugJuiZYD3kH4WOqkbYEW0DLAX6Weih/IoMImUAXYi/ZqfAddFywAfIP1sLFE1wLxoGeB9pJ+N1q0UDXBDtAzwGtLvAMWxoEISKQN8hPQ74Q41AyyLlgG+RPqd0FftW4B7o2WAd5B+J1RGfxhIwAAfIv2ah4L6R8sAB5F+JwxXM8A50TLAK0i/E3qrGWB0tAzwMtLvOBCgZoDBOWKAbE8/pbPUDPB0tAzwCdLvhGvUDPCTHHgJzIX0K/cC+kTLAEeQfidURPyTADEDfIr0O2FxFiwHcDfATqRf94KAiyNlgGqk3wk9o78mWGQ6+F2k3wGqX4n3j5YBDiL9bExQXRF0W7QM8CnSz8Z05e3jL42UAaoPIP1MzFBeFj4vUgZwXxSYk+mnrdsqG+DmaBlgN9KvcRSgDlsiZYCat5F+BsZFfIdIiY9DDyL92laDNGwVXhIpAxxC+jPhbbPAwZEyAHtNQE6nn/Zu5ckAYdkkTtAAh5B+jR+Hh2thoNgmUa8g/al4wOuO0cUXR8oA+w4g/VrmgcK3LERwo8gPkP5k3Jo1e0UL7xX8GdKfhAEaTosJx27xwgaofw98EelPQMNWwaF5CAhvF3+E0n8h/doeAAnMjpQB7M+R/nrk6To1qOiGSBmg+jDSX4dybYdGnVYSJQPYh5B+HUNAITs2SubYuN1Iv4aN4pPR8jeRMoD915xPv/rWYJlYcEVc0tpIGcD+R46nn3bSdGhgftnDDZLWRsoA9p9yOv30mnY6sr+he0GSpLWRMoD9dQ6nX0v+hwxNl7Q2UgYI2z3Ax/TTCW09Jn/ifxSwJK2NlAFC9SboZ/ppJ29rQLpd7ijp0UgZwP5bTqaflnpI/tLTm3El/eOuKBmg5sscTL/irpB1l/5Z7pp+vCtCBrDtNw7nWvpV14C26dJLUNMdUTKAXfOX3Ep/ntLhEFeeKqPp0SgZINjOgN/pp53kX/+LO6+SlTSYFwFVA9j/92qupJ9eL5v9ix5U03RHlAwQ0GPA//RL3v6LO5+hLOnYp6JkgCD6g/6nn1bmS2T/wkHqap48N3GYxIooGcDe9+dsT39r8dUfRWVrlYUs6D7x2KfjJREygF2zO6vTLz75v7B7gbKIj5al3GTyZ0fIALZd/Wb2pn+W2Orv/LlD1fUbtJCxUmxLhAxg268fzs70i439bFivfumv7TzJaalYSYQMYH6pWCDp7yqy9KO5h0t/QTg+HtVhALPDQoGkv0ps6Xe+mgPO6NzS/Z1ydJQMYNd8nU3pHy6+BeRD0lKdMlJ0xejmCBnA0NtgIOnvPV5m4OdMGZFWdSmUGlSaHSED2Pa+N7Mh/deMlxz3/ZmoPjdOVVg8OjhCBog/CD6PevonKOz/e+FYd2V6nd5GdTnB6vnRMYDGheOBpH+J2ld/S12GAM+a420p4dQtETKAbf/9cETT31d5zX9L5+V+zUYN1LCQfOljETKAbb/xZvTS/4C3Tz7Zk0B3DdH4GeHF0TFAHP/VPlLpX+x5wf8znPkdTRg4OyoGWNstHm6HW6KS/uEzdaTnp8kK3FlmGcGUdeE3QK8zixrDPf/s8Kd/1jBdyZnTMClQcMVCyyBuuyHMBih4Jm2g4757wpz+vOWtNKZm4Srb/uXKIss4lq0IpwGanc4c5rr9nnCmf9aIVpoT02aB5Rcu2xw2A6zlWX/A/WFL//CeVtTRss9JoTGAwPxGh19dEpr0Vy6ysgRTRpcEboChKyeJhrvo8eDTX9Uz38oujJw9PzAD3PmDYtlwL7gluPR3mtHKyk5M7n+S7wZoPkT5Upp2XtPjYFtrf1b3VpZb2Y5lo8f4ZIC7zlzqPdwLHm8fi12b50PyK4a1s3IGyx7ZYtIAzQaVtdEZ7sy+1xjt51/ds62Vgyg6d/CPdBtg1aCVkw2F26q8byftq3q6zuhg5ToKb3563RjPBjj5oZ8u9CXcduXLl3h/IlRNn9HRAtJmk29bPXqdw3m1exzWrTYftXJOYTDhdhy3vGuVnBUmVC7v2aMVMi2CFnu2bj1aW7t///4dCdhffPFSAt988+2327f/83ehiTO/vpPRoUd5z2H9rp/etbS0tKKiqqqiorS0suvivsuH9SwfPw05l0faSvbtz6XgeAgEAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMAMAAAAwAwAAADADAAAAMA4TDAb2EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByHf8PRo5Uzw56VjIAAAAASUVORK5CYII=");
            --dark-mode-toggle-icon-size: 25px;
        }

        @font-face {
            font-family: 'IBM Plex Mono';
            font-style: normal;
            font-weight: 400;
            font-display: swap;
            src: url(https://cdn.scrapfly.io/0.1.212/www/public/fonts/IBMPlexMono-Regular.woff2?version=0.1.212) format('woff2');
        }

        .grecaptcha-badge {
            visibility: hidden !important;
        }

        .hljs{display:block;overflow-x:auto;padding:0;background:rgba(0,0,0,0);color:#d8dee9}.hljs-subst{color:#d8dee9}.hljs-selector-tag{color:#81a1c1}.hljs-selector-id{color:#8fbcbb;font-weight:bold}.hljs-selector-class,.hljs-selector-attr{color:#8fbcbb}.hljs-selector-pseudo{color:#88c0d0}.hljs-addition{background-color:rgba(163,190,140,.5)}.hljs-deletion{background-color:rgba(191,97,106,.5)}.hljs-built_in,.hljs-type,.hljs-class{color:#8fbcbb}.hljs-function{color:#88c0d0}.hljs-function>.hljs-title{color:#88c0d0}.hljs-keyword,.hljs-literal,.hljs-symbol{color:#81a1c1}.hljs-number{color:#b48ead}.hljs-regexp{color:#ebcb8b}.hljs-string{color:#a3be8c}.hljs-title{color:#8fbcbb}.hljs-params{color:#d8dee9}.hljs-bullet{color:#81a1c1}.hljs-code{color:#8fbcbb}.hljs-emphasis{font-style:italic}.hljs-formula{color:#8fbcbb}.hljs-strong{font-weight:bold}.hljs-link:hover{text-decoration:underline}.hljs-quote,.hljs-comment{color:#4c566a}.hljs-doctag{color:#8fbcbb}.hljs-meta,.hljs-meta-keyword{color:#5e81ac}.hljs-meta-string{color:#a3be8c}.hljs-attr{color:#8fbcbb}.hljs-attribute{color:#d8dee9}.hljs-builtin-name,.hljs-name{color:#81a1c1}.hljs-section{color:#88c0d0}.hljs-tag{color:#81a1c1}.hljs-variable,.hljs-template-variable{color:#d8dee9}.hljs-template-tag{color:#5e81ac}.abnf .hljs-attribute{color:#88c0d0}.abnf .hljs-symbol{color:#ebcb8b}.apache .hljs-attribute{color:#88c0d0}.apache .hljs-section{color:#81a1c1}.arduino .hljs-built_in{color:#88c0d0}.aspectj .hljs-meta{color:#d08770}.aspectj>.hljs-title{color:#88c0d0}.bnf .hljs-attribute{color:#8fbcbb}.clojure .hljs-name{color:#88c0d0}.clojure .hljs-symbol{color:#ebcb8b}.coq .hljs-built_in{color:#88c0d0}.cpp .hljs-meta-string{color:#8fbcbb}.css .hljs-built_in{color:#88c0d0}.css .hljs-keyword{color:#d08770}.diff .hljs-meta,.ebnf .hljs-attribute{color:#8fbcbb}.glsl .hljs-built_in{color:#88c0d0}.groovy .hljs-meta:not(:first-child),.haxe .hljs-meta,.java .hljs-meta{color:#d08770}.ldif .hljs-attribute{color:#8fbcbb}.lisp .hljs-name,.lua .hljs-built_in,.moonscript .hljs-built_in{color:#88c0d0}.nginx .hljs-attribute{color:#88c0d0}.nginx .hljs-section{color:#5e81ac}.pf .hljs-built_in,.processing .hljs-built_in{color:#88c0d0}.scss .hljs-keyword,.stylus .hljs-keyword{color:#81a1c1}.swift .hljs-meta{color:#d08770}.vim .hljs-built_in{color:#88c0d0;font-style:italic}.yaml .hljs-meta{color:#d08770}
       
            (function (w, d, s, l, i) {
                w[l] = w[l] || [];
                w[l].push({
                'gtm.start': new Date().getTime(),
                event: 'gtm.js'
                });
                var f = d.getElementsByTagName(s)[0],
                    j = d.createElement(s),
                    dl = l != 'dataLayer' ? '&l=' + l : '';
                j.async = true;
                j.defer = true;
                j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
                f.parentNode.insertBefore(j, f);
            })(window, document, 'script', 'dataLayer', 'GTM-TWP8NJG7');
          
            window.dataLayer = window.dataLayer || [];
            function gtag() {
                dataLayer.push(arguments);
            }

            gtag('js', new Date());

                     
    !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
    const posthog_config = {
        api_host: 'https://eu.i.posthog.com',
        defaults: '2025-05-24',
        person_profiles: 'identified_only',
        capture_pageview: true,
        capture_pageleave: false,
        before_send: (event) => {
            if (event.properties.$current_url?.includes('/security/')) {
                return null;
            }
            return event;
        },
        autocapture: {
            url_ignorelist: ['/security/', '/patch-viewer']
        }
    };

    
    posthog.init('phc_VIsLfANHC4AKq5lPdjGySOirYAPwtgnJgYbVZ2kuBD9', posthog_config)

    const urlParams = new URLSearchParams(window.location.search);
    if (urlParams.get('__a') === 'logout') {
        posthog.reset();

        if(window.localStorage) {
            window.localStorage.removeItem('_scp_t');
        }
    }
 
        let highlight_worker_url = "data:text/javascript;base64,b25tZXNzYWdlPXQ9PntpbXBvcnRTY3JpcHRzKCJodHRwczovL2Nkbi5zY3JhcGZseS5pby8wLjEuMjEyL3d3dy9wdWJsaWMvanMvaGlnaGxpZ2h0LmpzP3ZlcnNpb249MC4xLjIxMiIpO2xldCBhPXNlbGYuaGxqcy5oaWdobGlnaHRBdXRvKHQuZGF0YS5jb250ZW50KS52YWx1ZTtpZih0LmRhdGEuaGlnaGxpZ2h0JiZ0LmRhdGEuaGlnaGxpZ2h0Lmxlbmd0aD4wKWZvcihjb25zdCBlIG9mIHQuZGF0YS5oaWdobGlnaHQpe2NvbnN0IHQ9ZS50ZXh0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIiksaD1uZXcgUmVnRXhwKGAoJHt0fSlgLCJnIik7YT1lLmhyZWY/YS5yZXBsYWNlKGgsYDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIke2UuaHJlZn0iIGNsYXNzPSJobC1jdXN0b20iPiQxPC9hPmApOmEucmVwbGFjZShoLCc8c3BhbiBjbGFzcz0iaGwtY3VzdG9tIj4kMTwvc3Bhbj4nKX1wb3N0TWVzc2FnZSh7dGFza0lkOnQuZGF0YS50YXNrSWQscmVuZGVyZWQ6YX0pfTs=";
        
        document.addEventListener('DOMContentLoaded', () => {

            const searchInputElement = document.querySelector('#search-query')

            if (searchInputElement) {
                let searchWidget = new DocumentationSearchWidget(
                    searchInputElement,
                    "data:text/javascript;base64,Y2xhc3MgRG9jdW1lbnRhdGlvblNlYXJjaFdvcmtlcntjb25zdHJ1Y3Rvcigpe3RoaXMuaXNSZWFkeT0hMSx0aGlzLmNvbmZpZz1udWxsLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmRvY3VtZW50cz17fX1hc3luYyBzZXR1cChlKXtpbXBvcnRTY3JpcHRzKCJodHRwczovL2Nkbi5zY3JhcGZseS5pby8wLjEuMjEyL3d3dy9wdWJsaWMvanMvbHVuci5qcz92ZXJzaW9uPTAuMS4yMTIiKSxhd2FpdCB0aGlzLmJ1aWxkU2VhcmNoSW5kZXgoZSksdGhpcy5pc1JlYWR5PSEwLHBvc3RNZXNzYWdlKHtjb25maWc6dGhpcy5jb25maWcsaXNSZWFkeTp0aGlzLmlzUmVhZHl9KX1hc3luYyBidWlsZFNlYXJjaEluZGV4KGUpe2UuY29uZmlnJiZlLmNvbmZpZy5zZXBhcmF0b3ImJmUuY29uZmlnLnNlcGFyYXRvci5sZW5ndGgmJihsdW5yLnRva2VuaXplci5zZXBhcmF0b3I9bmV3IFJlZ0V4cChlLmNvbmZpZy5zZXBhcmF0b3IsImciKSksdGhpcy5jb25maWc9ZS5jb25maWc7Y29uc3QgdD1EYXRlLm5vdygpO2lmKGUuaW5kZXgpZS5kb2NzLmZvckVhY2goZnVuY3Rpb24oZSl7dGhpcy5kb2N1bWVudHNbZS5sb2NhdGlvbl0mJmNvbnNvbGUuZXJyb3IoYER1cGxpY2F0ZSBkb2N1bWVudCBsb2NhdGlvbjogJHtlLmxvY2F0aW9ufWApLHRoaXMuZG9jdW1lbnRzW2UubG9jYXRpb25dPWV9LmJpbmQodGhpcykpLHRoaXMuaW5kZXg9bHVuci5JbmRleC5sb2FkKGRhdGEuaW5kZXgpLGNvbnNvbGUubG9nKGBMdW5yIHByZS1idWlsdCBpbmRleCBsb2FkZWQsIHNlYXJjaCByZWFkeSBpbiAke0RhdGUubm93KCktdH1tc2ApO2Vsc2V7Y29uc3Qgcz10aGlzO3RoaXMuaW5kZXg9bHVucigoZnVuY3Rpb24oKXt0aGlzLmZpZWxkKCJ0aXRsZSIse2Jvb3N0OjV9KSx0aGlzLmZpZWxkKCJ0ZXh0IiksdGhpcy5maWVsZCgidGV4dF9oaWRkZW4iKSx0aGlzLnJlZigibG9jYXRpb24iKSxlLmRvY3MuZm9yRWFjaCgoZT0+e3RoaXMuYWRkKGUpLHMuZG9jdW1lbnRzW2UubG9jYXRpb25dPWV9KSl9KSksY29uc29sZS5sb2coYEx1bnIgaW5kZXggYnVpbHQsIHNlYXJjaCByZWFkeSBpbiAke0RhdGUubm93KCktdH1tc2ApfX1zZWFyY2goZSx0KXtpZighdGhpcy5pc1JlYWR5KXJldHVybiBjb25zb2xlLmVycm9yKCJBc3NldHMgZm9yIHNlYXJjaCBzdGlsbCBsb2FkaW5nIiksW107Y29uc3Qgcz1lLnJlcGxhY2UobHVuci50b2tlbml6ZXIuc2VwYXJhdG9yLCIgIikucmVwbGFjZSgvOi9nLCJcXDoiKTtsZXQgbz10aGlzLmluZGV4LnNlYXJjaChzKTtpZighby5sZW5ndGgpe289dGhpcy5pbmRleC5zZWFyY2gocysiKiIpO2ZvcihsZXQgZSBvZiBvKWUubWF0Y2hEYXRhLm1ldGFkYXRhPU9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhlLm1hdGNoRGF0YS5tZXRhZGF0YSkubWFwKCgoW2UsdF0pPT5bZS5zcGxpdCgvPHw+fCIvKVswXSx0XSkpKX1mb3IobGV0IGUgb2Ygbyl7Y29uc3QgdD10aGlzLmRvY3VtZW50c1tlLnJlZl0uYm9vc3Q7dCYmKGUuc2NvcmUqPXQpfW8uc29ydCgoKGUsdCk9PnQuc2NvcmUtZS5zY29yZSkpO3JldHVybntyZXN1bHRzOm8uc2xpY2UoMCx0KS5tYXAoZnVuY3Rpb24odCl7Y29uc3Qgcz10aGlzLmRvY3VtZW50c1t0LnJlZl07cmV0dXJuIHMuaGlnaGxpZ2h0cz1PYmplY3Qua2V5cyh0Lm1hdGNoRGF0YS5tZXRhZGF0YSkscy5oaWdobGlnaHRzLnVuc2hpZnQoZSksc30uYmluZCh0aGlzKSksdG90YWw6by5sZW5ndGgsbGltaXQ6dCxxdWVyeTplfX19Y29uc3Qgc2VhcmNoV29ya2VyPW5ldyBEb2N1bWVudGF0aW9uU2VhcmNoV29ya2VyO29ubWVzc2FnZT1hc3luYyBlPT57ZS5kYXRhLnNlYXJjaEluZGV4P2F3YWl0IHNlYXJjaFdvcmtlci5zZXR1cChlLmRhdGEuc2VhcmNoSW5kZXgpOmUuZGF0YS5xdWVyeT9wb3N0TWVzc2FnZShzZWFyY2hXb3JrZXIuc2VhcmNoKGUuZGF0YS5xdWVyeSxlLmRhdGEubGltaXQpKTpjb25zb2xlLmVycm9yKGBXb3JrZXIgLSBVbnJlY29nbml6ZWQgbWVzc2FnZTogJHtlfWApfTs=",
                    "https://cdn.scrapfly.io/0.1.212/www/public/search-index.json?version=0.1.212"
                );

                document.dispatchEvent(new CustomEvent('ScrapflySearchWidgetLoaded', {
                    detail: {widget: searchWidget},
                }));
            }

            const copyForLLM = document.getElementById('copy-llm');

            if(copyForLLM) {
                const button = copyForLLM;
                const originalContent = button.innerHTML;
                let clipboard = null;

                // Function to handle the copy process
                async function handleCopy() {
                    try {
                        button.innerHTML = '<i class="fa-solid fa-spinner fa-spin"> Copying...';
                        button.disabled = true;

                        let url = new URL(window.location.href);
                        url.searchParams.set('view', 'markdown');

                        const response = await fetch(url.toString());
                        const data = await response.text();

                        let tempElement = document.createElement('div');
                        tempElement.innerHTML = data;
                        const textContent = tempElement.textContent || tempElement.innerText;

                        await navigator.clipboard.writeText(textContent);

                        button.innerHTML = '<i class="fa-solid fa-check"> Copied!';
                    } catch (error) {
                        console.error('Error copying content:', error);
                        button.innerHTML = '<i class="fa-solid fa-xmark"> Failed to copy';
                    } finally {
                        setTimeout(() => {
                            button.innerHTML = originalContent;
                            button.disabled = false;
                        }, 5000);
                    }
                }

                // Add click event listener
                button.addEventListener('click', (e) => {
                    e.preventDefault();
                    handleCopy();
                });
            }
        });
       
        document.addEventListener('DOMContentLoaded', function() {
            const themeToggle = document.getElementById('docs-theme-toggle');
            if (themeToggle) {
                themeToggle.addEventListener('click', function() {
                    const currentTheme = this.dataset.currentTheme;
                    const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
                    document.cookie = `css-mode=${newTheme}; path=/`;
                    document.location.reload();
                });
            }
        });
     
        document.addEventListener("ScrapflySearchWidgetLoaded", function (event) {
            function quickSearch(query) {
                setTimeout(() => { event.detail.widget.toggleSearch(); }, 10);
                setTimeout(() => { event.detail.widget.performSearch(query); }, 50);
                setTimeout(() => { event.detail.widget.searchInputElement.value = query; }, 100);
            }

            document.querySelectorAll('button[data-opensearch]').forEach(function(el){
                el.addEventListener('click', function(e){
                    e.preventDefault();
                    quickSearch(this.dataset.opensearch);
                });
            });
        });
      
			let app_config = {
domain: "scrapfly.io"
}
let user_config = null;
let app_version = "0.1.212";
window._scp_debug = false;
		 
        window.$crisp = [];
        window.CRISP_WEBSITE_ID = "1e93ea48-fdf5-4c0f-a0c2-acceb051ddeb";

        
        document.addEventListener('readystatechange', event => {
            if (event.target.readyState === "complete") {
                (function () {
                    d = document;
                    s = d.createElement("script");
                    s.src = "https://client.crisp.chat/l.js";
                    s.async = 1;
                    d.getElementsByTagName("head")[0].appendChild(s);
                })();

                $crisp.push(["safe", true]);

                                $crisp.push(['do', 'chat:hide']);
                            }
        });

        function crisp_setup() {
                        $crisp.push(['do', 'chat:hide']);
            
                        $crisp.push(["set", "hideRequestOperator", true]);
                    }

        function crisp_show() {
            crisp_setup()
            $crisp.push(['do', 'chat:show']);
            $crisp.push(['do', 'chat:open']);
            return false;
        }

        crisp_setup();
       
            window.ScrapflyConfig = {
                apiKey: '\u007B\u007B\u0020YOUR_API_KEY\u0020\u007D\u007D'
            };
              [  Docs ](https://scrapfly.io/docs) 

   Search documentation...  ⌘K   

 

   Ask AI    Python sdk   Typescript sdk   Python   Curl   Node js   Go   Php   Java   Ruby   Http   C sharp   Rust   

       [Sign in](https://scrapfly.io/login) [Get Started](https://scrapfly.io/register) 

 

 

 

   Products  [  MCP Server ](https://scrapfly.io/docs/mcp/getting-started)

 [  Web Scraping API ](https://scrapfly.io/docs/scrape-api/getting-started) [  Screenshot API ](https://scrapfly.io/docs/screenshot-api/getting-started) [  Extraction API ](https://scrapfly.io/docs/extraction-api/getting-started) [  Proxy Saver ](https://scrapfly.io/docs/proxy-saver/getting-started) [  Crawler API ](https://scrapfly.io/docs/crawler-api/getting-started) 

 

  SDKs  [  Python SDK ](https://scrapfly.io/docs/sdk/python) [  TypeScript SDK ](https://scrapfly.io/docs/sdk/typescript) [  Golang SDK ](https://scrapfly.io/docs/sdk/golang) [  Scrapy SDK ](https://scrapfly.io/docs/sdk/scrapy) 

 

   Visual API  [  Web Scraping API ](https://scrapfly.io/dashboard/playground/web-scraper) [  Extraction API ](https://scrapfly.io/dashboard/playground/extraction) [  Crawler API ](https://scrapfly.io/dashboard/playground/crawler) [  Screenshot API ](https://scrapfly.io/dashboard/playground/screenshot) [  MCP Playground ](https://scrapfly.io/dashboard/playground/mcp) 

 

  Tools  [ScrapeGround](https://scrapfly.io/scrapeground)

 [web-scraping.dev](https://web-scraping.dev/) [httpbin.dev](https://httpbin.dev/)

 [JA3 Fingerprinter](https://scrapfly.io/web-scraping-tools/ja3-fingerprint) [HTTP2 Fingerprinter](https://scrapfly.io/web-scraping-tools/http2-fingerprint) 

 

 [  Academy ](https://scrapfly.io/academy) [  Changelog ](https://scrapfly.io/docs/release-notes)     Python sdk   Typescript sdk   Python   Curl   Node js   Go   Php   Java   Ruby   Http   C sharp   Rust   

 Dashboard  

- [Intro](https://scrapfly.io/docs)
- [Project](https://scrapfly.io/docs/project)
- [Account](https://scrapfly.io/docs/account)
- [Workspace &amp; Team](https://scrapfly.io/docs/workspace-and-team)
- [Billing](https://scrapfly.io/docs/billing)
 
 

 Products 

  MCP Server NEW  

- [Getting Started](https://scrapfly.io/docs/mcp/getting-started)
- [Tools &amp; API Spec](https://scrapfly.io/docs/mcp/tools)
- [Authentication](https://scrapfly.io/docs/mcp/authentication)
- [Examples &amp; Use Cases](https://scrapfly.io/docs/mcp/examples)
- [FAQ](https://scrapfly.io/docs/mcp/faq)
- [ Integrations  ](#mcp-integrations-collapse)
    - [Overview](https://scrapfly.io/docs/mcp/integrations)
    - AI Assistants &amp; Code Editors
    - [Claude Desktop](https://scrapfly.io/docs/mcp/integrations/claude-desktop)
    - [Claude Code](https://scrapfly.io/docs/mcp/integrations/claude-code)
    - [ChatGPT](https://scrapfly.io/docs/mcp/integrations/chatgpt)
    - [Cursor](https://scrapfly.io/docs/mcp/integrations/cursor)
    - [Cline](https://scrapfly.io/docs/mcp/integrations/cline)
    - [Windsurf](https://scrapfly.io/docs/mcp/integrations/windsurf)
    - [Zed](https://scrapfly.io/docs/mcp/integrations/zed)
    - [Roo Code](https://scrapfly.io/docs/mcp/integrations/roo-code)
    - [VS Code](https://scrapfly.io/docs/mcp/integrations/vscode)
    - AI Frameworks &amp; SDKs
    - [LangChain](https://scrapfly.io/docs/mcp/integrations/langchain)
    - [LlamaIndex](https://scrapfly.io/docs/mcp/integrations/llamaindex)
    - [CrewAI](https://scrapfly.io/docs/mcp/integrations/crewai)
    - [OpenAI](https://scrapfly.io/docs/mcp/integrations/openai)
    - No-Code &amp; Automation
    - [n8n](https://scrapfly.io/docs/mcp/integrations/n8n)
    - [Make](https://scrapfly.io/docs/mcp/integrations/make)
    - [Zapier](https://scrapfly.io/docs/mcp/integrations/zapier)
    - [Vapi AI](https://scrapfly.io/docs/mcp/integrations/vapi)
    - [Agent Builder](https://scrapfly.io/docs/mcp/integrations/agent-builder)
    - [Custom Client](https://scrapfly.io/docs/mcp/integrations/custom-client)
 
 

  Web Scraping API  

- [Getting started](https://scrapfly.io/docs/scrape-api/getting-started)
- [Monitoring](https://scrapfly.io/docs/monitoring)
- [Customize Request](https://scrapfly.io/docs/scrape-api/custom)
- [Debug](https://scrapfly.io/docs/scrape-api/debug)
- [Anti Scraping Protection](https://scrapfly.io/docs/scrape-api/anti-scraping-protection)
- [Proxy](https://scrapfly.io/docs/scrape-api/proxy)
- [Proxy Mode](https://scrapfly.io/docs/scrape-api/proxy-mode)
- [Screaming Frog](https://scrapfly.io/docs/scrape-api/proxy-mode/screaming-frog)
- [Apify](https://scrapfly.io/docs/scrape-api/proxy-mode/apify)
- [(Auto) Data Extraction](https://scrapfly.io/docs/scrape-api/extraction)
- [Javascript Rendering](https://scrapfly.io/docs/scrape-api/javascript-rendering)
- [ Javascript Scenario ](https://scrapfly.io/docs/scrape-api/javascript-scenario)
- [SSL](https://scrapfly.io/docs/scrape-api/ssl)
- [DNS](https://scrapfly.io/docs/scrape-api/dns)
- [Cache](https://scrapfly.io/docs/scrape-api/cache)
- [Session](https://scrapfly.io/docs/scrape-api/session)
- [Webhook](https://scrapfly.io/docs/scrape-api/webhook)
- [Screenshot](https://scrapfly.io/docs/scrape-api/screenshot)
- [Errors](https://scrapfly.io/docs/scrape-api/errors)
- [Timeout](https://scrapfly.io/docs/scrape-api/understand-timeout)
- [Throttling](https://scrapfly.io/docs/throttling)
- [Troubleshoot](https://scrapfly.io/docs/scrape-api/troubleshoot)
- [Billing](https://scrapfly.io/docs/scrape-api/billing)
- [FAQ](https://scrapfly.io/docs/scrape-api/faq)
 
 

  Crawler API EA  

- [Getting started](https://scrapfly.io/docs/crawler-api/getting-started)
- [Retrieving Results](https://scrapfly.io/docs/crawler-api/results)
- [WARC Format](https://scrapfly.io/docs/crawler-api/warc-format)
- [Data Extraction](https://scrapfly.io/docs/crawler-api/extraction-rules)
- [Webhook](https://scrapfly.io/docs/crawler-api/webhook)
- [Billing](https://scrapfly.io/docs/crawler-api/billing)
- [Errors](https://scrapfly.io/docs/crawler-api/errors)
- [Troubleshoot](https://scrapfly.io/docs/crawler-api/troubleshoot)
- [FAQ](https://scrapfly.io/docs/crawler-api/faq)
 
 

  Screenshot API  

- [Getting started](https://scrapfly.io/docs/screenshot-api/getting-started)
- [Accessibility Testing](https://scrapfly.io/docs/screenshot-api/accessibility)
- [Webhook](https://scrapfly.io/docs/screenshot-api/webhook)
- [Billing](https://scrapfly.io/docs/screenshot-api/billing)
- [Errors](https://scrapfly.io/docs/screenshot-api/errors)
 
 

  Extraction API  

- [Getting started](https://scrapfly.io/docs/extraction-api/getting-started)
- [Rules Template](https://scrapfly.io/docs/extraction-api/rules-and-template)
- [LLM Extraction](https://scrapfly.io/docs/extraction-api/llm-prompt)
- [AI Auto Extraction](https://scrapfly.io/docs/extraction-api/automatic-ai)
- [Webhook](https://scrapfly.io/docs/extraction-api/webhook)
- [Billing](https://scrapfly.io/docs/extraction-api/billing)
- [Errors](https://scrapfly.io/docs/extraction-api/errors)
- [FAQ](https://scrapfly.io/docs/extraction-api/faq)
 
 

  Proxy Saver  

- [Getting started](https://scrapfly.io/docs/proxy-saver/getting-started)
- [Fingerprints](https://scrapfly.io/docs/proxy-saver/fingerprints)
- [Optimizations](https://scrapfly.io/docs/proxy-saver/optimizations)
- [SSL Certificates](https://scrapfly.io/docs/proxy-saver/certificates)
- [Protocols](https://scrapfly.io/docs/proxy-saver/protocols)
- [Pacfile](https://scrapfly.io/docs/proxy-saver/pacfile)
- [Secure Credentials](https://scrapfly.io/docs/proxy-saver/security)
- [Billing](https://scrapfly.io/docs/proxy-saver/billing)
 
 

 

 Tools FREE  

- [Antibot Detector](https://scrapfly.io/docs/tools/antibot-detector)
 
 

 SDK  

- [ Golang BETA ](https://scrapfly.io/docs/sdk/golang)
- [Python](https://scrapfly.io/docs/sdk/python)
- [ Typescript NEW ](https://scrapfly.io/docs/sdk/typescript)
- [Scrapy](https://scrapfly.io/docs/sdk/scrapy)
 
 

 Integrations NEW  

- [Getting Started](https://scrapfly.io/docs/integration/getting-started)
- [Langchain](https://scrapfly.io/docs/integration/langchain)
- [LlamaIndex](https://scrapfly.io/docs/integration/llamaindex)
- [CrewAI](https://scrapfly.io/docs/integration/crewai)
- [Zapier](https://scrapfly.io/docs/integration/zapier)
- [Make](https://scrapfly.io/docs/integration/make)
- [n8n](https://scrapfly.io/docs/integration/n8n)
- [Agent Skills](https://scrapfly.io/docs/integration/agent-skills)
 
 

 

 

 

 

 

     Python sdk   Typescript sdk   Python   Curl   Node js   Go   Php   Java   Ruby   Http   C sharp   Rust   

 Dashboard  

- [Intro](https://scrapfly.io/docs)
- [Project](https://scrapfly.io/docs/project)
- [Account](https://scrapfly.io/docs/account)
- [Workspace &amp; Team](https://scrapfly.io/docs/workspace-and-team)
- [Billing](https://scrapfly.io/docs/billing)
 
 

 Products 

  MCP Server NEW  

- [Getting Started](https://scrapfly.io/docs/mcp/getting-started)
- [Tools &amp; API Spec](https://scrapfly.io/docs/mcp/tools)
- [Authentication](https://scrapfly.io/docs/mcp/authentication)
- [Examples &amp; Use Cases](https://scrapfly.io/docs/mcp/examples)
- [FAQ](https://scrapfly.io/docs/mcp/faq)
- [ Integrations  ](#mcp-integrations-collapse)
    - [Overview](https://scrapfly.io/docs/mcp/integrations)
    - AI Assistants &amp; Code Editors
    - [Claude Desktop](https://scrapfly.io/docs/mcp/integrations/claude-desktop)
    - [Claude Code](https://scrapfly.io/docs/mcp/integrations/claude-code)
    - [ChatGPT](https://scrapfly.io/docs/mcp/integrations/chatgpt)
    - [Cursor](https://scrapfly.io/docs/mcp/integrations/cursor)
    - [Cline](https://scrapfly.io/docs/mcp/integrations/cline)
    - [Windsurf](https://scrapfly.io/docs/mcp/integrations/windsurf)
    - [Zed](https://scrapfly.io/docs/mcp/integrations/zed)
    - [Roo Code](https://scrapfly.io/docs/mcp/integrations/roo-code)
    - [VS Code](https://scrapfly.io/docs/mcp/integrations/vscode)
    - AI Frameworks &amp; SDKs
    - [LangChain](https://scrapfly.io/docs/mcp/integrations/langchain)
    - [LlamaIndex](https://scrapfly.io/docs/mcp/integrations/llamaindex)
    - [CrewAI](https://scrapfly.io/docs/mcp/integrations/crewai)
    - [OpenAI](https://scrapfly.io/docs/mcp/integrations/openai)
    - No-Code &amp; Automation
    - [n8n](https://scrapfly.io/docs/mcp/integrations/n8n)
    - [Make](https://scrapfly.io/docs/mcp/integrations/make)
    - [Zapier](https://scrapfly.io/docs/mcp/integrations/zapier)
    - [Vapi AI](https://scrapfly.io/docs/mcp/integrations/vapi)
    - [Agent Builder](https://scrapfly.io/docs/mcp/integrations/agent-builder)
    - [Custom Client](https://scrapfly.io/docs/mcp/integrations/custom-client)
 
 

  Web Scraping API  

- [Getting started](https://scrapfly.io/docs/scrape-api/getting-started)
- [Monitoring](https://scrapfly.io/docs/monitoring)
- [Customize Request](https://scrapfly.io/docs/scrape-api/custom)
- [Debug](https://scrapfly.io/docs/scrape-api/debug)
- [Anti Scraping Protection](https://scrapfly.io/docs/scrape-api/anti-scraping-protection)
- [Proxy](https://scrapfly.io/docs/scrape-api/proxy)
- [Proxy Mode](https://scrapfly.io/docs/scrape-api/proxy-mode)
- [Screaming Frog](https://scrapfly.io/docs/scrape-api/proxy-mode/screaming-frog)
- [Apify](https://scrapfly.io/docs/scrape-api/proxy-mode/apify)
- [(Auto) Data Extraction](https://scrapfly.io/docs/scrape-api/extraction)
- [Javascript Rendering](https://scrapfly.io/docs/scrape-api/javascript-rendering)
- [ Javascript Scenario ](https://scrapfly.io/docs/scrape-api/javascript-scenario)
- [SSL](https://scrapfly.io/docs/scrape-api/ssl)
- [DNS](https://scrapfly.io/docs/scrape-api/dns)
- [Cache](https://scrapfly.io/docs/scrape-api/cache)
- [Session](https://scrapfly.io/docs/scrape-api/session)
- [Webhook](https://scrapfly.io/docs/scrape-api/webhook)
- [Screenshot](https://scrapfly.io/docs/scrape-api/screenshot)
- [Errors](https://scrapfly.io/docs/scrape-api/errors)
- [Timeout](https://scrapfly.io/docs/scrape-api/understand-timeout)
- [Throttling](https://scrapfly.io/docs/throttling)
- [Troubleshoot](https://scrapfly.io/docs/scrape-api/troubleshoot)
- [Billing](https://scrapfly.io/docs/scrape-api/billing)
- [FAQ](https://scrapfly.io/docs/scrape-api/faq)
 
 

  Crawler API EA  

- [Getting started](https://scrapfly.io/docs/crawler-api/getting-started)
- [Retrieving Results](https://scrapfly.io/docs/crawler-api/results)
- [WARC Format](https://scrapfly.io/docs/crawler-api/warc-format)
- [Data Extraction](https://scrapfly.io/docs/crawler-api/extraction-rules)
- [Webhook](https://scrapfly.io/docs/crawler-api/webhook)
- [Billing](https://scrapfly.io/docs/crawler-api/billing)
- [Errors](https://scrapfly.io/docs/crawler-api/errors)
- [Troubleshoot](https://scrapfly.io/docs/crawler-api/troubleshoot)
- [FAQ](https://scrapfly.io/docs/crawler-api/faq)
 
 

  Screenshot API  

- [Getting started](https://scrapfly.io/docs/screenshot-api/getting-started)
- [Accessibility Testing](https://scrapfly.io/docs/screenshot-api/accessibility)
- [Webhook](https://scrapfly.io/docs/screenshot-api/webhook)
- [Billing](https://scrapfly.io/docs/screenshot-api/billing)
- [Errors](https://scrapfly.io/docs/screenshot-api/errors)
 
 

  Extraction API  

- [Getting started](https://scrapfly.io/docs/extraction-api/getting-started)
- [Rules Template](https://scrapfly.io/docs/extraction-api/rules-and-template)
- [LLM Extraction](https://scrapfly.io/docs/extraction-api/llm-prompt)
- [AI Auto Extraction](https://scrapfly.io/docs/extraction-api/automatic-ai)
- [Webhook](https://scrapfly.io/docs/extraction-api/webhook)
- [Billing](https://scrapfly.io/docs/extraction-api/billing)
- [Errors](https://scrapfly.io/docs/extraction-api/errors)
- [FAQ](https://scrapfly.io/docs/extraction-api/faq)
 
 

  Proxy Saver  

- [Getting started](https://scrapfly.io/docs/proxy-saver/getting-started)
- [Fingerprints](https://scrapfly.io/docs/proxy-saver/fingerprints)
- [Optimizations](https://scrapfly.io/docs/proxy-saver/optimizations)
- [SSL Certificates](https://scrapfly.io/docs/proxy-saver/certificates)
- [Protocols](https://scrapfly.io/docs/proxy-saver/protocols)
- [Pacfile](https://scrapfly.io/docs/proxy-saver/pacfile)
- [Secure Credentials](https://scrapfly.io/docs/proxy-saver/security)
- [Billing](https://scrapfly.io/docs/proxy-saver/billing)
 
 

 

 Tools FREE  

- [Antibot Detector](https://scrapfly.io/docs/tools/antibot-detector)
 
 

 SDK  

- [ Golang BETA ](https://scrapfly.io/docs/sdk/golang)
- [Python](https://scrapfly.io/docs/sdk/python)
- [ Typescript NEW ](https://scrapfly.io/docs/sdk/typescript)
- [Scrapy](https://scrapfly.io/docs/sdk/scrapy)
 
 

 Integrations NEW  

- [Getting Started](https://scrapfly.io/docs/integration/getting-started)
- [Langchain](https://scrapfly.io/docs/integration/langchain)
- [LlamaIndex](https://scrapfly.io/docs/integration/llamaindex)
- [CrewAI](https://scrapfly.io/docs/integration/crewai)
- [Zapier](https://scrapfly.io/docs/integration/zapier)
- [Make](https://scrapfly.io/docs/integration/make)
- [n8n](https://scrapfly.io/docs/integration/n8n)
- [Agent Skills](https://scrapfly.io/docs/integration/agent-skills)
 
 

 

 

# Scrapfly Copilot

    

#### **Summary**

 
  

 

 

 

   esc to close 

 

 

##### Search

 



 ↑↓ to navigate ↵ to select esc to close 

 

 

 

 

     The ultimate data collection APIs for developers. Scrape, capture, and extract web data with battle-tested tools that scale.

 [  ](https://github.com/scrapfly) [  ](https://www.linkedin.com/company/scrapfly) [  ](https://www.youtube.com/@scrapfly) [  ](https://x.com/Scrapfly_dev) 

 

 

### Company

- [  Careers ](https://scrapfly.io/jobs)
- [  Why Scrapfly? ](https://scrapfly.io/why-choose-scrapfly)
- [  Pricing ](https://scrapfly.io/pricing)
- [  Status ](https://scrapfly.statuspage.io/)
 
 

### Resources

- [  API Docs ](https://scrapfly.io/docs)
- [  Academy ](https://scrapfly.io/academy)
- [  Blog ](https://scrapfly.io/blog/)
- [  Tools ](https://scrapfly.io/web-scraping-tools)
- [  FAQ ](https://scrapfly.io/faq)
- [  Alternatives ](https://scrapfly.io/compare)
 
 

### Legal

- [  Terms of Service ](https://scrapfly.io/terms-of-service)
- [  Privacy Policy ](https://scrapfly.io/privacy-policy)
- [  DPA ](https://scrapfly.io/data-processing-agreement)
- [  KYC ](https://scrapfly.io/kyc-and-safety)
 
 

 

 

 

####   Integrations 

- [Zapier](https://scrapfly.io/integration/zapier)
- [Make](https://scrapfly.io/integration/make)
- [N8n](https://scrapfly.io/integration/n8n)
- [LlamaIndex](https://scrapfly.io/integration/llamaindex)
- [LangChain](https://scrapfly.io/integration/langchain)
- [CrewAI](https://scrapfly.io/integration/crewai)
 
 

####   Learn Web Scraping 

- [Python](https://scrapfly.io/blog/posts/everything-to-know-about-web-scraping-python/)
- [NodeJS](https://scrapfly.io/blog/posts/web-scraping-with-nodejs/)
- [PHP](https://scrapfly.io/blog/posts/web-scraping-with-php-101/)
- [Ruby](https://scrapfly.io/blog/posts/web-scraping-with-ruby/)
- [Scrapy](https://scrapfly.io/blog/posts/web-scraping-with-scrapy/)
- [Puppeteer](https://scrapfly.io/blog/posts/web-scraping-with-puppeteer-and-nodejs/)
 
 

####   Use Cases 

- [AI Training](https://scrapfly.io/use-case/ai-training-web-scraping)
- [eCommerce](https://scrapfly.io/use-case/ecommerce-web-scraping)
- [Real Estate](https://scrapfly.io/use-case/real-estate-web-scraping)
- [Finance](https://scrapfly.io/use-case/finance-web-scraping)
- [SERP &amp; SEO](https://scrapfly.io/use-case/seo-and-serp-web-scraping)
- [Travel](https://scrapfly.io/use-case/travel-web-scraping)
 
 

####   Popular Tools 

- [cURL to Python](https://scrapfly.io/web-scraping-tools/curl-python)
- [JA3 Fingerprint](https://scrapfly.io/web-scraping-tools/ja3-fingerprint)
- [HTTP2 Fingerprint](https://scrapfly.io/web-scraping-tools/http2-fingerprint)
- [Selector Tester](https://scrapfly.io/web-scraping-tools/css-xpath-tester)
- [Antibot Detector](https://scrapfly.io/antibot-detector)
- [Unblocker](https://scrapfly.io/unblocker)
 
 

####   Anti-Bot Bypass 

- [Cloudflare](https://scrapfly.io/bypass/cloudflare)
- [Akamai](https://scrapfly.io/bypass/akamai)
- [DataDome](https://scrapfly.io/bypass/datadome)
- [Incapsula](https://scrapfly.io/bypass/incapsula)
- [PerimeterX](https://scrapfly.io/bypass/perimeterx)
- [View All](https://scrapfly.io/bypass)
 
 

 

 © 2026 Scrapfly. The Best Web Scraping API For Developers.

 

 [Is Web Scraping Legal?](https://scrapfly.io/is-web-scraping-legal) • [Open Source Scrapers](https://github.com/scrapfly/scrapfly-scrapers) 

 

 

 ##### Quick Preview

    

  

 

   Close    Open Full Docs