# SmartBrowz ## Getting Started -------------------------------------------------------------------------------- title: "Introduction" description: "Learn about getting started with Catalyst SmartBrowz that provides components to connect with a remote browser in Catalyst cloud environment, control browser through code, and generate visual documents and create templates with dynamic content." last_updated: "2026-03-18T07:41:08.658Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/getting-started/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Catalyst SmartBrowz ### Introduction SmartBrowz is a Catalyst browser service that enables you to manage and control a headless browser in Catalyst's cloud environment through a wide range of components. With the {{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless component{{%/link%}} of SmartBrowz you get to connect to a remote browser with an automation library of your preference and perform any browser function in a secure manner. Headless can be used for a wide variety of purposes that include testing the functionality of a web application, browsing the internet without sharing your personal data, or securely opening and navigating online content from untrusted sources. You can engineer logic using {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic{{%/link%}} (a {{%link href="/en/serverless/help/functions/introduction/" %}}Serverless Function type{{%/link%}}) to perform any task on the remote browser programmatically. You have the flexibility to initialize, test and deploy this function using the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}}, or you can directly {{%link href="/en/serverless/help/functions/implementation/" %}}upload this function{{%/link%}} to the Catalyst console at any time. Browser Logic functions can be coded in the following programming languages: * {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/overview/" %}}Node.js{{%/link%}} The access and application activities of the Browser Logic function will be logged in the {{%link href="/en/devops/help/logs/introduction/" %}}Logs component{{%/link%}} of {{%link href="/en/devops/getting-started/introduction/" %}}Catalyst DevOps{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} Support to code Browser Logic functions using other programming languages will be rolled out in future updates.{{%/note%}} SmartBrowz also allows you to generate {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDFs and take screenshots{{%/link%}} of webpages. Using basic scripting languages, you can create and design {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}}, a component of SmartBrowz, and store them for recurring use. {{%note%}}{{%bold%}}Note:{{%/bold%}} Currently only the Chrome browser can be used as a remote browser in the Catalyst environment. The support for other browsers will be provided with future updates.{{%/note%}} All the operations that you can perform in the Catalyst SmartBrowz console are listed below: * You can configure the memory and version of the remote browser you wish to implement in the {{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless{{%/link%}} mode. * You can copy the required endpoints and code snippets to configure a remote browser in headless mode and manage it using a browser automation library of your preference. The {{%badge%}}API KEY{{%/badge%}} required to authenticate the endpoints will be automatically generated and present in the console. * You can view how a webpage appears across multiple devices using the Screenshot feature of the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component. Using the same component you can also generate a PDF of any webpage from the console using {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/" %}}multiple input format types{{%/link%}}. * You can directly upload any Browser Logic function to the console using the {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic{{%/link%}} component. Catalyst provides you with dedicated SDKs in following programming environments to ensure you can implement the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot component{{%/link%}} of SmartBrowz dynamically: * {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" %}}Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" %}}Node.js SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" %}}Python SDK{{%/link%}} Catalyst also offers you an {{%link href="/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput" %}}API{{%/link%}} that you can use to produce a PDF or Screenshot of a webpage of your preference. Using the {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} component, you can even customize, design and store templates of webpages, documents, designs, and more in the console. You can use these templates to generate multiple PDFs or Screenshots of them with dynamic content. Catalyst SmartBrowz also offers you the {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} component, that allows you to perform meaning data scraping operations using powerful Catalyst APIs. You can familiarize yourself with the various functionalities of SmartBrowz by practicing with them in the {{%link href="/en/tutorials/" %}}tutorials section{{%/link%}}. You can refer to each component help section for individual use cases for each. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Components" description: "Learn about getting started with Catalyst SmartBrowz that provides components to connect with a remote browser in Catalyst cloud environment, control browser through code, and generate visual documents and create templates with dynamic content." last_updated: "2026-03-18T07:41:08.659Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/getting-started/components-of-smartbrowz/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Components of Catalyst SmartBrowz {{%fieldset title="BROWSER CONTROL" %}} {{%fieldset-card icon="headless-icon" path="/en/smartbrowz/help/headless/introduction/" title="Headless"%}}Connect with a remote browser within Catalyst cloud in a headless mode.{{%/fieldset-card%}} {{%fieldset-card icon="browserlogic-icon" path="/en/smartbrowz/help/browser-logic/introduction/" title="Browser Logic"%}}Configure Catalyst Serverless functions to contain the logic of browser tasks.{{%/fieldset-card%}} {{%/fieldset%}} <br /> {{%fieldset title="CONVERT" %}} {{%fieldset-card icon="pdf-icon" path="/en/smartbrowz/help/pdfnscreenshot/introduction/" title="PDF & Screenshot"%}}Generate visual documents of webpages in the console, or using SDKs and APIs.{{%/fieldset-card%}} {{%fieldset-card icon="templates-icon" path="/en/smartbrowz/help/templates/create-templates/" title="Templates"%}}Design and use templates to generate visual documents with dynamic content.{{%/fieldset-card%}} {{%/fieldset%}} <br /> {{%fieldset title="DATA" %}} {{%fieldset-card icon="dataverse-icon" path="/en/smartbrowz/help/dataverse/introduction/" title="Dataverse"%}}Perform complex data scraping operations using powerful Catalyst APIs.{{%/fieldset-card%}} {{%/fieldset%}} These components are explained in detail below. ### Headless Using the Headless component you can connect to a remote browser in the Catalyst cloud environment with popular automation libraries like Puppetteer, Selenium and Playwright. Catalyst SmartBrowz provides you the code snippets to connect to the remote browser in the following programming languages: * {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/overview/" %}}NodeJS{{%/link%}} * {{%link href="/en/sdk/python/v1/overview/" %}}Python{{%/link%}} You can also explore, use and test some generic use cases of automation libraries in the Catalyst cloud environment using the {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}Code Recipes{{%/link%}} that are present in the console. ### Browser Logic Browser Logic is a type of {{%link href="/en/serverless/help/functions/introduction/" %}}Catalyst Serverless function{{%/link%}} that contains a customizable coding structure you can use to implement a logic that performs browser tasks. You can create and initialize the Browser Logic functions using the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}}. You can develop browser logic functions in an IDE of your choice and deploy it to the remote console. Browser Logic functions can be coded using the following programming languages: * {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/overview/" %}}NodeJS{{%/link%}} You can also implement the sample code for crawling and scraping present in {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}Code Recipes{{%/link%}} and engineer your custom logic on top of them using Browser Logic. ### PDF & Screenshot You can use the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot component{{%/link%}} to generate visual documents of any webpage or template with dynamic content. SmartBrowz provides you with the flexibility to provide inputs in various formats—HTML, URL, and Template and generate either a PDF or a screenshot. The screenshot feature is an excellent testing tool to comprehend how your website or application will be viewed across various devices' screen. Catalyst also provides you with the required {{%link href="" %}}API{{%/link%}} and SDKs—{{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/overview/" %}}NodeJS{{%/link%}}, and {{%link href="/en/sdk/python/v1/overview/" %}}Python{{%/link%}} to access and implement the functionality of this component programmatically. ### Templates Using the {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates component{{%/link%}}, you can design your own template of a webpage, or documents like resume, certificates, etc., using basic front-end scripting languages. You can also customize the existing template designs to generate templates of your preference. You can use these templates to generate visual documents with dynamic content. ### Dataverse {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} is Catalyst's most efficient data scraping solution that will aid you in creating better strategies to tackle common business pain areas such as competitor analysis, lead nurturing, cross-selling and upselling, data validation and data cleansing and so much more. -------------------------------------------------------------------------------- title: "Benefits" description: "Learn about getting started with Catalyst SmartBrowz that provides components to connect with a remote browser in Catalyst cloud environment, control browser through code, and generate visual documents and create templates with dynamic content." last_updated: "2026-03-18T07:41:08.659Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/getting-started/benefits/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Benefits * SmartBrowz allows you to securely connect to a remote browser in the robust Catalyst cloud environment using any library of your choice that you choose to implement. Additionally, from the console you can copy ready-to-use snippets required to connect to the remote browser with automation libraries—Pupetteer, Playwright, and Selenium. * Catalyst will automatically generate and provide you with secure endpoints and {{%badge%}}API KEY{{%/badge%}} that you need to connect to a remote browser in headless mode. You will also be provided with the required code snippets to ensure you can seamlessly connect to a remote browser with an automation library of your choice. * You have the flexibility to configure the memory the remote browser. This ensures that you test your application for lags under varying memory configurations. * SmartBrowz provides you with several {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}Code Recipes{{%/link%}} that you can explore, use and test the functionality of various automation libraries in the Catalyst cloud environment. * SmartBrowz allows you to access three independent services—{{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless{{%/link%}}, {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} and {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic{{%/link%}} in a single, unified platform though the Catalyst console. This enables you to use SmartBrowz for all your remote browser operations in an integrated space. * The {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component enables you generate PDFs of any webpage of your preference. You can also generate screenshots of webpages in a manner that allows you to view how your webpage appears to the end-users using different devices. * SDKs to generate PDF & Screenshots programmatically are provided in {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/overview/" %}}NodeJS{{%/link%}}, and {{%link href="/en/sdk/python/v1/overview/" %}}Python{{%/link%}}. This enables you to quickly implement the logic to generate PDFs and Screenshots using a programming language of your preference. * You can style and store dynamic templates of documents, web pages, and more in the console. You can use these templates to produce multiple screenshots or PDFs with dynamic content. * SmartBrowz is a Catalyst service. Along with Catalyst SmartBrowz, you will also be able to access and use other other robust Catalyst services like {{%link href="/en/cloud-scale/" %}}Catalyst Cloud Scale{{%/link%}}, {{%link href="/en/serverless/" %}}Catalyst Serverless{{%/link%}}, {{%link href="/en/devops/" %}}Catalyst DevOps{{%/link%}}, {{%link href="/en/zia-services/" %}}Catalyst Zia Services{{%/link%}}, etc. * Much like other Catalyst services, you can build and test and microservices or applications with SmartBrowz components in the development sandbox, before {{%link href="/en/deployment-and-billing/environments/deployment-types/" %}}deploying them to production{{%/link%}}. -------------------------------------------------------------------------------- title: "Quick Start Guide" description: "Learn about getting started with Catalyst SmartBrowz that provides components to connect with a remote browser in Catalyst cloud environment, control browser through code, and generate visual documents and create templates with dynamic content." last_updated: "2026-03-18T07:41:08.659Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/getting-started/quick-start-guide/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Catalyst SmartBrowz - A Quick Start Guide Catalyst SmartBrowz is a powerful cloud service that you can leverage to perform browser automation tasks, functionality tests, and generate visual documents. This section covers the overall steps involved in getting started with connecting to a remote browser in the Catalyst cloud environment, managing it with automation libraries, leveraging the SmartBrowz components to generate visual documents of webpages, and so much more. You can also engineer {{%link href="/en/serverless/help/functions/introduction/" %}}Serverless functions{{%/link%}} that contain a logic to implement browser tasks. #### Create a Project 1. {{%link href="https://console.catalyst.zoho.com/baas/index" %}}Catalyst console{{%/link%}} to {{%link href="/en/getting-started/catalyst-projects/#creating-a-catalyst-project" %}}create a new project{{%/link%}}. After the project creation is complete, you will be able to access all components of SmartBrowz and other Catalyst services from the console. #### Access Catalyst SmartBrowz Components 2. You can use the {{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless component{{%/link%}} to connect to a remote browser powered by Catalyst cloud environment with popular browser automation libraries using the code snippets and the appropriate endpoints present in the console. * If you are going to use automation libraries like Selenium, then you need to connect using the Webdriver endpoint. * If you are going to use Puppetteer or Playwright, you need to connect using the CDP endpoint. {{%note%}}{{%bold%}}Note:{{%/bold%}} * The {{%badge%}}{{%bold%}}API Key{{%/bold%}}{{%/badge%}} required to use the end points can be copied from the {{%bold%}}View Key{{%/bold%}} option in the {{%bold%}}Remote Browser Options{{%/bold%}} button. * You need to ensure you have the required browser automation libraries installed in your local system before connecting to the remote browser.{{%/note%}} 3. You can test out any of the {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}Code Recipes{{%/link%}} present in the console by copying and pasting them in your {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic function{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You do not require {{%link href="/en/api/introduction/overview-and-prerequisites/#OverviewandPrerequisites" %}}Catalyst CLI{{%/link%}} to use majority of the Catalyst SmartBrowz. However, you need to {{%link href="/en/getting-started/quick-start-guide/#step-2-install-catalyst-cli"%}}install Catalyst CLI{{%/link%}}, {{%link href="/en/getting-started/quick-start-guide/#step-3-log-in-from-your-cli" %}}log in{{%/link%}} and {{%link href="/en/getting-started/quick-start-guide/#step-4-initialize-the-project-from-the-cli" %}}initialize the project and the function from the CLI{{%/link%}} to code the {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic function{{%/link%}} in an IDE of your preference. You also require the CLI to {{%link href="/en/cli/v1/serve-resources/serve-all-resources/" %}}{{%badge%}}serve{{%/badge%}}{{%/link%}} and {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}{{%badge%}}deploy{{%/badge%}}{{%/link%}} the function.{{%/note%}} 4. You can use the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshots{{%/link%}} component to generate visual content by providing the required input though HTML, URL or {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Template{{%/link%}} using the Playground present in the console. You can also use the SDK and API present in the console to generate PDF and Screenshots programmatically. 5. You can use the {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates component{{%/link%}} to design and store templates to generate visual documents with dynamic content. You can find out how to use Templates in this help document. You can familiarize yourself with the various components of SmartBrowz by going through tutorials present in this {{%link href="/en/tutorials/" %}}section{{%/link%}}. #### Engineer Your Application 6. You can initialize the project locally using the Catalyst CLI, and start coding your business logic into {{%link href="/en/serverless/help/functions/introduction/" %}}Catalyst Serverless Functions{{%/link%}}, with either {{%link href="/en/sdk/java/v1/overview/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/overview/" %}}Node.js{{%/link%}}, or {{%link href="/en/sdk/python/v1/overview/" %}}Python{{%/link%}}, using an external IDE of your choice, or directly create them in the console. You can also utilize code templates from {{%link href="/en/getting-started/catalyst-sdk/" %}}Catalyst SDK{{%/link%}} and employ prebuilt API endpoints from {{%link href="/en/api/introduction/overview-and-prerequisites/#OverviewandPrerequisites" %}}Catalyst API{{%/link%}} to incorporate Cloud Scale components in your business logic. You also have the option to use {{%link href="/en/codelib/introduction/" %}}Catalyst CodeLib{{%/link%}}, which are ready-made microservices that can be incorporated into application directly. You can also enhance your application using AI/ML powered components of {{%link href="/en/zia-services/getting-started/introduction/" %}}Catalyst Zia Services{{%/link%}}. #### Test The Application 7. You can test the client components of your application locally before deploying it to the remote console using {{%link href="/en/cli/v1/serve-resources/introduction/" %}}{{%badge%}}catalyst serve{{%/badge%}}{{%/link%}}. You can also debug and test your functions using the catalyst shell command; {{%link href="/en/cli/v1/working-with-functions/functions-shell/" %}}{{%badge%}}catalyst functions:shell{{%/badge%}}{{%/link%}}. #### Deploy The Application 8. You can now {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}deploy your application{{%/link%}} from the CLI to your project in the remote console using the CLI command {{%badge%}}catalyst deploy{{%/badge%}}. You can deploy your functions, client, and app services. #### Migrate Your Application from Development to Production 9. When your application is ready to be migrated, you can deploy it from the development to the production environment in a streamlined manner as instructed in this {{%link href="/en/deployment-and-billing/environments/initial-deployment/" %}}help document{{%/link%}}, and you can use the {{%link href="/en/cloud-scale/help/domain-mappings/introduction/" %}} Domain Mappings component{{%/link%}} to map your application's {{%link href="/en/deployment-and-billing/environments/production-environment/#function-url-and-web-app-url-in-the-production-environment" %}}production URL{{%/link%}} onto your own custom domain securely. Additionally, Catalyst will provide group SSL certifications for all the domain that you map under your application, free of cost. However, before you deploy to production ensure you have set up {{%link href="/en/deployment-and-billing/billing/introduction/" %}}Catalyst payments{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} The sequence of steps specified here might differ based on your business or application logic, or your specific use case. The flow mentioned in the deploying and testing phases of the application can be altered based on your requirements. This is a generic set of guidelines that is suitable for a typical small to mid-scale, client-based application, or microservice.{{%/note%}} ## Help Components -------------------------------------------------------------------------------- title: "SmartBrowz Dashboard" description: "Get a complete overview of the functioning of all the SmartBrowz components you have used for your project." last_updated: "2026-03-18T07:41:08.660Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/dashboard/" service: "SmartBrowz" -------------------------------------------------------------------------------- # SmartBrowz Dashboard The **SmartBrowz Dashboard** is an informative tool that will provide you with a crisp overview on the activities of all the SmartBrowz components. <br /> ### Access The SmartBrowz Dashboard To access the SmartBrowz Dashboard: 1. Click the *SmartBrowz* service icon from the left-panel of the console, and click **Start Exploring**. <br /> You will need to use the SmartBrowz components to populate the Dashboard. <br /> 2. Click the *SmartBrowz* icon to view the **Dashboard** at any time. <br /> ### Dashboard Features The primary purpose of the **SmartBrowz Dashboard** is to provide a clear understanding of each component's usage and performance across a required period of time. * View the performance and precisely note the number of failed executions of various actions across a required time period to facilitate better informed debugging sessions. * The graphs will be populated live with each usage. The dashboard contains three graphs each representing the performance and usage of the following SmartBrowz components: - {{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless{{%/link%}} - {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic{{%/link%}} - {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} * The dashboard also offers you a complete list of *Browser Logic* functions that were executed recently. You can also filter this list to view only **Failed**, **Successful**, or **All Status** executions. <br /> * You can also filter all the graphs in the dashboard based on time period using the filter present on the left side of the console. <br /> ### Browser Grid -------------------------------------------------------------------------------- title: "Introduction" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.660Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/introduction/" service: "SmartBrowz" related: - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) - Pupeeteer (/en/serverless/help/functions/advanced-io/) - Playwright (https://playwright.dev/docs/intro) - Selenium (https://www.selenium.dev/documentation/) -------------------------------------------------------------------------------- # Browser Grid {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} Browser Grid is a powerful component of the *Catalyst SmartBrowz* service that allows you to run multiple headless browsers in parallel on a configured grid. Browser Grid enables you to perform simultaneous and independent tasks across multiple headless browsers, all while maintaining greater control over configuring parameters that determine the scale and performance of your headless operations. For example, imagine that you have to perform a patch update on your application. Before you bring it live, it would be best if you have an environment or setup where you definitively test the consequences and performance of the update across multiple machines, all operating independently. However, to achieve this with a physical setup would be expensive and resource draining. This is one of the solutions that SmartBrowz's Browser Grid can solve seamlessly and resource efficiently. By employing the {{%link href="/en/smartbrowz/help/browser-grid/features/#browser-grid-configuration" %}}right configuration{{%/link%}} in Browser Grid, you can employ the required number of headless browsers in the required number of Nodes and run the tests concurrently. More importantly, you can benefit from the following key features of Browser Grid: * Your required automation operations can be completed using popular automation libraries like {{%link href="https://pptr.dev/category/introduction" %}}Pupeeteer{{%/link%}}, {{%link href="https://playwright.dev/docs/intro" %}}Playwright{{%/link%}}, and {{%link href="https://www.selenium.dev/documentation/" %}}Selenium{{%/link%}}. * {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/" %}}Java{{%/link%}}, {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/" %}}Node.js{{%/link%}} and {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/" %}}Python{{%/link%}} function stacks are supported. * This is an auto-scaling component. Browsers will only spawn when and if they are required. * Requests made to the headless browsers in the grid greater than the load of their configuration can be queued for **30 seconds** (if the automation library used to connect to the remote browser is **Selenium**) or **5 minutes** (if the automation library used to connect to the remote browser is **Puppeteer/Playwright**). * You have more control over the configurations of the browsers. You can choose to spawn *headless Chrome* ({{%badge%}}v137.0.7151.55{{%/badge%}}) or *headless Firefox* ({{%badge%}}v136.0.4{{%/badge%}}) browsers, or even a combination of them. * You have default options to decide the configuration of the Browser Grid, such as **Basic** and **Advanced**. This choice needs to be made based on the request load of your use case. * Browser Grid utilizes default alerts that will alert you automatically in the event of an error or an interruption in your grid. * The Browser Grid console provides you access to a detailed dashboard that will update you on the grid's live performance. Being able to control and concurrently run multiple headless browsers with little to no infrastructure setup allows you to perform complex operations such as: * **Parallel automation testing**: With multiple headless browsers, you can test large volume of test cases in parallel and ensure your CI/CD pipelines runs in an optimal manner. * **Load testing**: You can seamlessly mimic multiple user sign-ups across different headless browsers with varying configurations to simulate traffic to your application, allowing you to check the performance and resilience of your application. * **Security testing**: With multiple headless browsers running in parallel and auto scaling with demand, you can test for session handling, injection vulnerabilities and other security properties. * **SEO monitoring**: Using multiple headless browsers you can check the performance of your keyword matrix, your pages ranking in search engines, and performance of your ads across several accounts. * **Ethical crawling and scraping**: With the multiple browsers running in parallel on permitted websites and domains, you can significantly scale up your ethical scraping operations. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Features" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.660Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/features/" service: "SmartBrowz" related: - Browser Grid Workflow (/en/serverless/help/browser-grid/workflow/) - Create Browser Grid (/en/smartbrowz/help/browser-grid/create-grid/) - Connect to a Headless Browser (/en/smartbrowz/help/browser-grid/headless-connect/) - Browser Grid Dashboard (/en/smartbrowz/help/browser-grid/explore-dashboard/) - Build a Resilient Browser Grid (/en/smartbrowz/help/browser-grid/ideal-practices/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Browser Grid Features {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} This section explores the various features that make up the Browser Grid component. ### Hub Hub is a virtual machine that acts as a controller. When a user sends requests to the headless browser present in a browser grid, the Hub will allot a node to run the headless browser to execute the request. The functionality of the Hub is entirely handled by the *Catalyst SmartBrowz* service. This ensures your grid can scale seamlessly to handle your request load. {{%note%}}{{%bold%}}Note:{{%/bold%}} {{%link href="/en/smartbrowz/help/browser-grid/features/#hub-node-browser-relation" %}}Learn more about Browser Grid Configurations{{%/link%}}.{{%/note%}} ### Nodes Nodes are virtual machines that run the required headless browsers. Based on the [configuration](#browser-grid-configuration), you can dictate the number of nodes that need to be created in your browser grid and the number of headless browsers that need to be spawned in each node. {{%note%}}{{%bold%}}Notes:{{%/bold%}} * The default allocated storage limit is {{%bold%}}10GB{{%/bold%}}. * [Learn more about Browser Grid Configurations](#browser-grid-configuration).{{%/note%}} ### Headless Browsers Headless browsers are browsers that run without a Graphical User Interface (**GUI**). These types of browsers are the entities or instances that execute and process the requests sent by the user. The Browser Grid component provides you with the option to effortlessly connect to multiple secure remote browsers using popular automation libraries like **Puppeteer**, **Playwright**, and **Selenium**. Based on your requirement, you have the option to choose your automation library and launch your required secure headless browser using a **CDP**/**Webdriver** endpoint generated by the **Catalyst SmartBrowz** service. {{%tabs%}} {{%tab "Puppeteer/Playwright" %}} <br /> {{%/tab%}} {{%tab "Selenium" %}} <br /> {{%/tab%}} {{%/tabs%}} The endpoint is made secure using an {{%badge%}}**API KEY**{{%/badge%}} which will be uniquely generated for you. {{%note%}}{{%bold%}}Notes:{{%/bold%}}<br /> * {{%link href="/en/smartbrowz/help/browser-grid/headless-connect/" %}}Learn the steps to process your requests through a headless browser{{%/link%}}. * While you do have the option to {{%link href="" %}}change the automation library{{%/link%}} you use to connect to your headless browser, you do not have the option to use multiple automation libraries within the same browser grid simultaneously.{{%/note%}} ### Browser Grid Configuration In a browser grid, you can define the number of nodes and the number of browsers that can be created in a singular node. The configuration also allows you to set the number of browsers that can be run concurrently. When you create or update an existing grid, you have the option to choose: {{%note%}}{{%bold%}}Note:{{%/bold%}} Browser Grid only provides you with the option to configure the number of Nodes and the browsers that can be spawned concurrently inside a single Node. You do not have control over the Hub. Browser Grid handles the Hub configurations automatically.{{%/note%}} * **Basic Configuration**: This is a type of configuration that is best suited to handle an ideal load of requests, with a processing power of {{%badge%}}1GiB Memory, 1vCPU{{%/badge%}}. * **Advanced Configuration**: This type of configuration allows you the option to choose the number of nodes and the number of browsers allotted per node. You will have the following options: - **Light Node Type**: You can choose to create a Grid that has a processing power of {{%badge%}}1GiB Memory, 1vCPU{{%/badge%}}. - **Moderate Node Type**: You can choose to create a Grid that has a processing power of {{%badge%}}2GiB Memory, 2vCPU{{%/badge%}}. - **Heavy Node Type**: You can choose to create a Grid that has a processing power of {{%badge%}}4GiB Memory, 4vCPU{{%/badge%}}. The following table will further detail the differences between the various configurations: <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th rowspan="2">Category</th> <th rowspan="2">Basic Configuration</th> <th colspan="3">Advanced Configuration</th> </tr> <tr> <th>Light</th> <th>Moderate</th> <th>Heavy</th> </tr> </thead> <tbody> <tr> <td>Node Type</td> <td>{{%bold%}}Light - {{%badge%}}1GiB Memory, 1vCPU{{%/bold%}}{{%/badge%}}</td> <td>{{%badge%}}1GiB Memory, 1vCPU{{%/badge%}}</td> <td>{{%badge%}}2GiB Memory, 2vCPU{{%/badge%}}</td> <td>{{%badge%}}4GiB Memory, 4vCPU{{%/badge%}}</td> </tr> <tr> <td>Concurrent browsers allowed</td> <td>Maximum of {{%bold%}}10 browsers{{%/bold%}} can be run concurrently</td> <td>Maximum of {{%bold%}}10 browsers{{%/bold%}} can be run concurrently</td> <td>Maximum of {{%bold%}}10 browsers{{%/bold%}} can be run concurrently</td> <td>Maximum of {{%bold%}}8 browsers{{%/bold%}} can be run concurrently</td> </tr> <tr> <td>Maximum number of Nodes that can be allotted</td> <td>10</td> <td>10</td> <td>5</td> <td>2</td> </tr> <tr> <td>Maximum number of browsers allotted per node</td> <td>1</td> <td>1</td> <td>2</td> <td>4</td> </tr> <tr> <td>Maximum configuration possible</td> <td>10 nodes with 1 browser running in each node</td> <td>10 nodes with 1 browser running in each node</td> <td>5 nodes can be created with 2 browsers running in each node</td> <td>2 nodes can be created with 4 browsers running in each node</td> </tr> </tbody> </table> <br /> {{%info%}}{{%bold%}}Info:{{%/bold%}}<br /> * The volume of requests being executed is not only related to its number or storage size of the requests. For example, you can have a million or more requests that do not take much time to be processed and executed, and all of them can be balanced with a processing power of 1GiB memory. Alternatively, you can have just a couple of requests that require a lot of time to process and require a processing power greater than that of 1GiB memory. * It is up to you to decide your Grid's configuration based on the volume of your requests. * {{%link href="/en/smartbrowz/help/browser-grid/ideal-practices/" %}}Learn the ideal practices to manage a browser grid{{%/link%}}.{{%/info%}} ### Hub-Node-Browser Relation The following diagram illustrates the relation between hubs, nodes, and browsers. {{%info%}}{{%bold%}}Info:{{%/bold%}} This diagram illustrates the relation between these three grid elements in a {{%bold%}}Moderate Browser Grid{{%/bold%}} configuration, where three nodes can be created, each with two browsers running.{{%/info%}} <br /> Based on the volume of requests being sent, the hub will compute allocate nodes individually. When the first allotted node attains its maximum concurrency limit, with requests still pending, only then will the hub allot the next node. These nodes will run the required headless browsers and process your requests. The number of nodes and browsers that are created by the hub will be based on the [configuration](#browser-grid-configuration) you chose while {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}creating your Browser Grid{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} {{%link href="/en/smartbrowz/help/browser-grid/ideal-practices/" %}}Learn more about the functionality of the Hub{{%/link%}}.{{%/note%}} ### Alerts Alerts is a feature in Browser Grid that will alert you to any error or configuration failure the grid encountered during its operations by populating the *Alerts* section in the{{%link href="/en/smartbrowz/help/browser-grid/explore-dashboard/" %}}Dashboard{{%/link%}}. <br /> The following are the five possible alerts that you may receive if your grid is not functioning as intended: * **Browser Creation Rejected**: This alert will be created if the grid is operating at maximum configuration, and you still have requests that need to be processed in the queue beyond the queue time (Selenium: **30 seconds**, Puppetter/Playwright: **5 minutes**). The queued requests demand new browsers be created, but none can be created as the configuration does not allow for it or there are no more browsers to be spawned, leaving the requests in the queue to be killed. * **90% Disk Exhausted**: This alert will occur if even one node's allotted disk capacity has reached **90%**. The default size allocated for the disk is **10GB**. * **80% Memory Exhausted**: This alert will occur if even one node's allotted memory is **80%** consumed. * **80% CPU Exhausted**: This alert will occur if even one node reached **80%** of the CPU capacity allotted to it. * **Nodes Crashed**: This will only occur in severe times, when the node is operating at the maximum configuration allotted to it and is severely strained to process the volume of requests being sent to it. You can click on a specific alert for more information about the alert notification. <br /> To deal with these alerts: * Try reducing the number of requests being sent for processing. * Try updating the browser grid's [configuration](#browser-grid-configuration). {{%info%}}{{%bold%}}Info:{{%/bold%}} Once an alert is created, it will continue to populate your {{%italics%}}Alerts{{%/italics%}} section in the dashboard, even after the cause of the alert has been resolved. The alert will only disappear if you {{%link href="/en/smartbrowz/help/browser-grid/manage-grid/" %}}update the configurations{{%/link%}} of your browser grid.{{%/info%}} ### Browser Grid States * **Active**: This is a state the Browser Grid enters into when you {{%link href="/en/smartbrowz/help/browser-grid/headless-connect/" %}}connect to the remote browser{{%/link%}} using its endpoint through code. While in this state, the browser grid spawns the required number of nodes and browsers to process the requests. * **Inactive**: This is a state the Browser Grid enters into when you {{%link href="/en/smartbrowz/help/browser-grid/manage-grid/#stop-the-browser-grid" %}}stop the browser grid{{%/link%}}. This is the default the grid is in when you create a browser grid. * **Idle**: The Browser Grid is an auto-scaling component. Based on your demand, the required number of nodes and respective browsers are spawned (as per your configurations), and when there are no requests to be processed, the browsers and nodes are killed. Once the grid has scaled completely down and is not processing any requests, the browser grid will enter the *Idle* state. There will be no requests being processed in the grid. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Workflow" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.661Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/workflow/" service: "SmartBrowz" related: - Operate Browser Grid (/en/serverless/help/functions/advanced-io/) - Connect to a Headless Browser (/en/smartbrowz/help/browser-grid/headless-connect/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Browser Grid Workflow {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} ### Overview The following overview diagram attempts to illustrate the operations that occur when you employ the Browser Grid component. <br /> {{%info%}}{{%bold%}}Info:{{%/bold%}} For the purpose of illustrating an example workflow of a Browser Grid, we have used a {{%bold%}}Moderate{{%/bold%}} configuration of Browser Grid, where: * A maximum of {{%bold%}}3 nodes{{%/bold%}} can be created. * A maximum of {{%bold%}}2 browsers per node{{%/bold%}} will be spawned * A maximum of {{%bold%}}6 browsers will run concurrently{{%/bold%}}{{%/info%}} From the above diagram, we can understand that: * A user tries to connect and launch their remote browsers through their code. * Once they connect to their remote browser through their configured Browser Grid, the grid will become active, and the user can start to send their request load for processing. * When the user starts sending requests to their configured browser grid, it is first encountered by the hub. * The hub performs the necessary computation to check if there is an available node. * If the nodes have browsers available, the request is sent to the available browser. * If there are no browsers available, then the request will be queued. ### Deeper Look at the Browser Grid Workflow The elemental workflow that occurs when you try to process a request in a browser is that: * The hub will check for an available node. * If the node is available, then the request will be processed by the browser in the node. * If the node is not available, then the request will be queued. {{%note%}}{{%bold%}}Note:{{%/bold%}} The queue duration is set to live for {{%bold%}}30 seconds{{%/bold%}} (if the automation library used to connect to the remote browser is {{%bold%}}Selenium{{%/bold%}}) or {{%bold%}}5 minutes{{%/bold%}} (if the automation library used to connect to the remote browser is {{%bold%}}Puppeteer{{%/bold%}}/{{%bold%}}Playwright{{%/bold%}}). After this, the queued request will be killed.{{%/note%}} The following section aims to provide more context and greater detail of the same workflow with the help of an example. Consider an example scenario where you have created your Browser Grid with the **Basic** configuration. You can only run **one browser in one node** and have chosen to create a maximum of three nodes. This configuration will allow you to create three nodes, each with one browser running in them. <br /> At its full capacity, the grid will be running three browsers concurrently. <br /> {{%info%}}{{%bold%}}Info:{{%/bold%}} The Hub will only create a node if: 1. The node limit configured while creating the Browser Grid has not been exhausted. 2. If the node limit has not been exhausted, then a new node with the required browsers will only be spawned if the existing browsers are running at full capacity in the nodes that have already been created.{{%/info%}} Now, consider that in this grid, based on your requests, the first node has been created, and in that node, a singular browser is processing your requests. <br /> The second node with the second browser will only be created if the volume of requests increases, and the browser in the first node is still operating at full capacity. <br /> Similarly, the third and last node configured for the grid will only be created if the load of requests increases and both nodes are running browsers at full capacity. <br /> If the load of requests increases further, they will be queued. The queue will be valid for a duration of **30 seconds** (to demonstrate this example, we can consider that the headless browser is being connected to using the Selenium automation library). <br /> In this time interval, if a remote browser in a node becomes available, the hub will push the queued request to the newly available node. If the queue duration expires, then the request will be killed and an alert will be raised by SmartBrowz to notify you of the killed request. This alert notification, like all Browser Grid alerts, can be viewed in the {{%link href="/en/smartbrowz/help/smartbrowz/browser-grid/features/#alerts" %}}Alerts section{{%/link%}} section of the *Dashboard*. <br /> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Create a Browser Grid" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.661Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/create-grid/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/smartbrowz/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/smartbrowz/browser-grid/workflow/) - Connect to a Headless Browser (/en/smartbrowz/help/browser-grid/headless-connect/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Create a Browser Grid {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} By default, when you create a Catalyst project and access the Browser Grid component present in the *Catalyst SmartBrowz* service, you will have access to two preconfigured browser grids. <br /> The predefined browser grids will be configured in the following manner: * They will be named {{%badge%}}Puppeteer_Grid{{%/badge%}} and {{%badge%}}Selenium_Grid{{%/badge%}}. * The {{%badge%}}Puppeteer_Grid{{%/badge%}} will allow you to connect and process requests in a remote browser using the *Puppeteer* or *Playwright* automation libraries. * The {{%badge%}}Selenium_Grid{{%/badge%}} will allow you to connect and process requests in a remote browser using the *Selenium* automation libraries. * Both the grids will be configured as **Basic Configurations**. They will be able to run one browser in one node, and no configuration for concurrent browsers will be made. By providing you these pre-defined browser grids, the *Catalyst SmartBrowz* service offers you the option to use this grid without initial set up and test the functionality of the component. You can also update the configurations of the browser grid to suit your requirement, or delete these pre-defined grids and create your own Browser Grid from scratch. To create a Browser Grid: 1. Click the **Create Browser Grid** button. <br /> 2. Choose your required endpoint type. <br /> Based on your selection, Catalyst SmartBrowz will generate the required **CDP**/**Webdriver** endpoint that will allow you to connect to a headless browser using *Selenium*, *Puppetter*, or *Playwright* automation libraries. 3. Choose your configuration based on the load of requests you wish to process in your remote browser. You have the option to configure your Browser Grid with a: {{%tabs%}} {{%tab "Basic Configuration" %}} ### Basic Configuration The **Basic** configuration allots up to a maximum of 10 nodes, each allocated 1 GiB of virtual memory and one vCPU core. Each node will run one browser in them, and the grid can run a maximum of 10 browsers concurrently. This configuration is best suited for processing lighter request loads. <br /> Based on your requirement, you can enter **1-10** as the number of nodes to be allotted for your browser grid. <br /> You will be able to view the definition of your configuration in the **Allotted Configuration** section. {{%/tab%}} {{%tab "Advanced Configuration" %}} ### Advanced Configuration This configuration provides you with greater control in allotting your required number of nodes and the number of browsers that need to be allotted to each node. <br /> Based on the load of the requests that you need to process, you will have further options to choose and configure your ideal browser grid. <br /> {{%tabs%}} {{%tab "Light Configuration" %}} ### Light - 1GiB Memory, 1vCPU The **Light** node type allots up to a maximum of 10 nodes, each allocated with 1 GiB of virtual memory and one vCPU core. Each node will run one browser in them, and the grid can run a maximum of 10 browsers concurrently. This node type is best used when you need to process requests that do not demand much time. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th rowspan="2">Criteria</th> <th rowspan="2">Light Node Types' Offerings</th> </tr> </thead> <tbody> <tr> <td>Configuration</td> <td>Light -1 GiB memory, 1vCPU</td> </tr> <tr> <td>Cores per node</td> <td>1</td> </tr> <tr> <td>Maximum number of cores possible</td> <td>10</td> </tr> <tr> <td>Memory allotted per node</td> <td>1 GiB</td> </tr> <tr> <td>Maximum memory that can be allotted to the browser grid</td> <td>10 GiB</td> </tr> <tr> <td>Maximum number of browsers that can be allotted to a single node</td> <td>1</td> </tr> <tr> <td>Maximum number of concurrent browser processes possible</td> <td>10</td> </tr> </tbody> </table> * Use the **Max. no. of Node(s)** drop-down to allot the required number of nodes for your grid. <br /> * The *Light* node type only allows for 1 browser to be allotted per node. <br /> You can view the definition of your configuration in the **Allotted Configuration** section once you've made your selection. <br /> {{%/tab%}} {{%tab "Moderate Configuration" %}} ### Moderate - 2GiB Memory, 2vCPU The **Moderate** node type allots up to a maximum of 5 nodes, each allocated with 2 GiB of virtual memory and 2 vCPU cores. Each node can run two browsers in them, and the grid can run a maximum of 10 browsers concurrently. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th rowspan="2">Criteria</th> <th rowspan="2">Moderate Node Types' Offerings</th> </tr> </thead> <tbody> <tr> <td>Configuration</td> <td>Moderate - 2GiB memory, 2vCPU</td> </tr> <tr> <td>Cores per node</td> <td>2</td> </tr> <tr> <td>Maximum number of cores possible</td> <td>10</td> </tr> <tr> <td>Memory allotted per node</td> <td>2 GiB</td> </tr> <tr> <td>Maximum memory that can be allotted to the browser grid</td> <td>10 GiB</td> </tr> <tr> <td>Maximum number of browsers that can be allotted to a single node</td> <td>2</td> </tr> <tr> <td>Maximum number of concurrent browser processes possible</td> <td>10</td> </tr> </tbody> </table> * Use the **Max. no. of Node(s)** drop-down to allot the required number of nodes for your grid. <br /> * Use the **Max Browser Allotted per Node** drop-down to choose the number of browsers allotted per node. <br /> You can view the definition of your configuration in the **Allotted Configuration** section once you've made your selection. <br /> {{%/tab%}} {{%tab "Heavy Configuration" %}} ### Heavy - 4GiB Memory, 4vCPU The **Heavy** node type allots up to a maximum of 2 nodes, each allocated with 4 GiB of virtual memory and 4 vCPU cores. Each node can run four browsers in them, and the grid can run a maximum of 8 browsers concurrently. This node type is best used when you have massive amounts of requests that need to be processed, where each request demands a lot of processing time. <table border="1" cellpadding="8" cellspacing="0"> <thead> <tr> <th rowspan="2">Criteria</th> <th rowspan="2">Heavy Node Types' Offerings</th> </tr> </thead> <tbody> <tr> <td>Configuration</td> <td>Heavy - 4GiB memory, 4vCPU</td> </tr> <tr> <td>Cores per node</td> <td>4</td> </tr> <tr> <td>Maximum number of cores possible</td> <td>8</td> </tr> <tr> <td>Memory allotted per node</td> <td>4 GiB</td> </tr> <tr> <td>Maximum memory that can be allotted to the browser grid</td> <td>8 GiB</td> </tr> <tr> <td>Maximum number of browsers that can be allotted to a single node</td> <td>4</td> </tr> <tr> <td>Maximum number of concurrent browser processes possible</td> <td>8</td> </tr> </tbody> </table> * Use the **Max. no. of Node(s)** drop-down, to allot the required number of nodes for your grid. <br /> * Use the **Max Browser Allotted per Node** drop-down to choose the number of browsers allotted per node. <br /> You can view the definition of your configuration in the **Allotted Configuration** section once you've made your selection. <br /> {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%info%}}{{%bold%}}Info:{{%/bold%}}<br /> * While you can choose the number of nodes and the number of browsers to process your requests, you will not have the option to completely customize the setup. You will be provided with a set range of allotment options that you can choose to create your Browser Grid with. If your requirement demands you bypass this restriction, please follow the steps detailed in this {{%link href="" %}}help section{{%/link%}} to ensure you can create a browser grid that is truly custom. * {{%link href="/en/smartbrowz/help/smartbrowz/browser-grid/features/#browser-grid-configuration" %}}Learn more about comparing each configuration type{{%/link%}}. * {{%link href="/en/smartbrowz/help/browser-grid/workflow/" %}}Learn more about ideal practices for implementing browser grids{{%/link%}}.{{%/info%}} 4. Click **Create**. <br /> The required browser grid will be created. You will be directed to the *Overview* section, and you will be able to view the following details: * The status of the Browser Grid will be "**Inactive**". You need to connect to the headless browser through code to activate the browser grid. * You will be able to view the general details about the browser grid. * The **Configuration Details** section will detail the configuration used to create the browser grid. * The required **CDP/Webdriver** endpoint to connect to the headless browser will be generated by SmartBrowz and ready to use. * You will also have the option to view your {{%badge%}}**API**{{%/badge%}} key or regenerate it when required. * You will also be provided with information on the automation library you have chosen to connect and use the headless browser with, and on the supported browser versions. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Connect to a Headless Browser" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.662Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/headless-connect/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/smartbrowz/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/smartbrowz/browser-grid/workflow/) - Create a Browser Grid (/en/smartbrowz/help/smartbrowz/browser-grid/create-grid/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Connect to Headless Chrome or Firefox {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} Catalyst SmartBrowz will generate a CDP/Webdriver endpoint once you create a Browser Grid. This endpoint will be made secure using an unique API key, which will also be generated by the SmartBrowz service. You need to use this secure endpoint in your code to connect to the remote browser and activate the grid. <br /> The SmartBrowz console also provides you with the required code snippets in {{%link href="" %}}Java{{%/link%}}, {{%link href="" %}}Node.js{{%/link%}} and {{%link href="" %}}Python{{%/link%}} function stack. To access the required code snippet: 1. Click **How to Connect?** <br /> 2. You will be able to view and copy the code snippet that you need to use to connect to the headless browsers. You can use the drop-down to select your required runtime. <br /> 3. You need to paste the snippet to your code file and execute it to trigger the browser grid and connect to your headless browsers. <br /> Once connected, the grid will be marked **Active**. Based on your configuration, the nodes will spawn the required number of browsers to process your requests. {{%info%}}{{%bold%}}Info:{{%/bold%}} Ensure that you click the {{%bold%}}Refresh{{%/bold%}} button to render the latest stats.{{%/info%}} ### Code Snippets to Connect to the Headless Browser The following are code snippets that you need to copy and use in your code to activate your browser grid and connect to the headless browser. {{%tabs%}} {{%tab "Selenium" %}} {{%tabs%}} {{%tab "Java" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-java" scroll="set-scroll"%}} import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.Capabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.chrome.ChromeOptions; public class RemoteChromeLoggingExample { public static void main(String[] args) throws MalformedURLException { ChromeOptions options = new ChromeOptions(); options.addArguments("--no-sandbox"); options.addArguments("--headless"); URL remoteUrl = new URL("YOUR_WEBDRIVER_ENDPOINT"); RemoteWebDriver driver = new RemoteWebDriver(remoteUrl, options); Capabilities caps = driver.getCapabilities(); String browserName = caps.getBrowserName(); String browserVersion = caps.getBrowserVersion(); System.out.println("Browser: " + browserName + " " + browserVersion); driver.get("https://example.com"); System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } } {{%/code%}} {{%/tab%}} {{%tab "Connect to Headless Firefox" %}} {{%code class="language-java" scroll="set-scroll"%}} import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.Capabilities; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.RemoteWebDriver; public class RemoteFirefoxLoggingExample { public static void main(String[] args) throws MalformedURLException { FirefoxOptions options = new FirefoxOptions(); options.addArguments("--headless"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); URL remoteUrl = new URL("YOUR_WEBDRIVER_ENDPOINT"); RemoteWebDriver driver = new RemoteWebDriver(remoteUrl, options); Capabilities caps = driver.getCapabilities(); String browserName = caps.getBrowserName(); String browserVersion = caps.getBrowserVersion(); System.out.println("Browser: " + browserName + " " + browserVersion); driver.get("https://example.com"); System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } } {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Node.js" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-js" scroll="set-scroll"%}} const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); (async function test() { let options = new chrome.Options(); options.addArguments('--headless'); options.addArguments('--no-sandbox'); let driver = await new Builder() .forBrowser('chrome') .setChromeOptions(options) .usingServer('YOUR_WEBDRIVER_ENDPOINT') .build(); try { await driver.get('https://example.com'); console.log(await driver.getTitle()); } catch (err) { console.error(err); } finally { await driver.quit(); } })(); {{%/code%}} {{%/tab%}} {{%tab "Connect to Headless Firefox" %}} {{%code class="language-js" scroll="set-scroll"%}} const { Builder, By } = require('selenium-webdriver'); const firefox = require('selenium-webdriver/firefox'); (async function RemoteFirefoxLoggingExample() { let options = new firefox.Options(); options.addArguments('--headless'); let driver = await new Builder() .forBrowser('firefox') .setFirefoxOptions(options) .usingServer('YOUR_WEBDRIVER_ENDPOINT') .build(); try { await driver.get('https://example.com'); console.log(await driver.getTitle()); } catch (err) { console.error(err); } finally { await driver.quit(); } })(); {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Python" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-python" scroll="set-scroll"%}} import asyncio from selenium import webdriver from selenium.webdriver.chrome.options import Options async def index(): options = Options() options.add_argument("--disable-extensions") options.add_argument("--no-sandbox") options.add_argument("--headless") options.add_argument("--disable-dev-shm-usage") driver = webdriver.Remote( command_executor="YOUR_WEBDRIVER_ENDPOINT", options=options ) driver.get("https://example.com") driver.save_screenshot("screenshot.png") driver.quit() async def my_async_function(): await index() if __name__ == "__main__": asyncio.run(my_async_function()) {{%/code%}} {{%/tab%}} {{%tab "Connect to Headless Firefox" %}} {{%code class="language-python" scroll="set-scroll"%}} import asyncio from selenium import webdriver from selenium.webdriver.firefox.options import Options async def index(): options = Options() options.add_argument("--headless") capabilities = { "browserName": "firefox", "browserVersion": "latest", "platformName": "linux" } driver = webdriver.Remote( command_executor="YOUR_WEBDRIVER_ENDPOINT", desired_capabilities=capabilities, options=options ) driver.get("https://example.com") driver.save_screenshot("screenshot.png") driver.quit() async def my_async_function(): await index() if __name__ == "__main__": asyncio.run(my_async_function()) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Puppeteer" %}} {{%tabs%}} {{%tab "Node.js" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-js" scroll="set-scroll"%}} const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.connect({ browserWSEndpoint: "YOUR_ENDPOINT" }); const page = await browser.newPage(); await page.goto("https://example.com"); await page.screenshot({ path: "remote-example.png" }); await browser.disconnect(); })(); {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Python" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-python" scroll="set-scroll"%}} import asyncio from pyppeteer import connect async def main(): browser = await connect({ 'browserWSEndpoint': 'YOUR_ENDPOINT' }) page = await browser.newPage() await page.goto("https://example.com") await page.screenshot({'path': 'screenshot.png'}) await browser.close() asyncio.run(main()) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Playwright" %}} {{%tabs%}} {{%tab "Java" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-java" scroll="set-scroll"%}} package com.example; import java.nio.file.Paths; import com.microsoft.playwright.*; public class Test { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { BrowserType browserType = playwright.chromium(); Browser browser = browserType.connectOverCDP("YOUR_ENDPOINT"); Page page = browser.newPage(); page.navigate("https://example.com"); System.out.println("Title: " + page.title()); page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png"))); String html = page.content(); System.out.println("Page HTML: " + html.substring(0, Math.min(html.length(), 200)) + "..."); browser.close(); } } } {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Node.js" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-js" scroll="set-scroll"%}} const { chromium } = require("playwright"); (async () => { const browser = await chromium.connectOverCDP("YOUR_ENDPOINT"); const context = browser.contexts().length ? browser.contexts()[0] : await browser.newContext(); const page = await context.newPage(); await page.goto("https://example.com"); console.log(await page.title()); await browser.close(); })(); {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%tab "Python" %}} {{%tabs%}} {{%tab "Connect to Headless Chrome" %}} {{%code class="language-python" scroll="set-scroll"%}} import asyncio from playwright.async_api import async_playwright async def run(playwright): browser = await playwright.chromium.connect_over_cdp("YOUR_ENDPOINT") context = await browser.new_context() page = await context.new_page() await page.goto("https://example.com") await page.screenshot(path="screenshot.png") print(await page.title()) await browser.close() async def main(): async with async_playwright() as playwright: await run(playwright) asyncio.run(main()) {{%/code%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Configure Resilient Browser Grids" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.663Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/ideal-practices/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/browser-grid/workflow/) - Create a Browser Grid (/en/smartbrowz/help/browser-grid/create-grid/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Ideal Practices to Employ Resilient Browser Grid {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} The configurations you choose to create your grid plays a monumental part in its resilience when it comes to processing the required requests. To ensure that your grid is optimized, operational, and that it does not encounter the **Browser Grid Failure** alert, here are a few points to consider while creating your grid: * Always allocate your grid with the necessary amount of nodes and browsers. * It is not necessary to create your grid with the maximum configurations possible. If your request load does not demand such configuration, it is best to make a more conscious decision while configuring your grid. This ensures you save resources and curb your grid's **Idle** state. * While Browser Grid is an auto scaling component, you are required to configure the maximum number of nodes allotted to the grid and the maximum number of browsers allotted per node. For this reason, you are advised not to treat your grid as an open grid. * It is always good practice to check if your grid can accept and process upcoming requests. This ensures that you always have available nodes and associated browsers available to process your requests. To make this check as seamless as possible, Catalyst SmartBrowz offers you the following API: {{%code class="language-bash" %}}curl --location 'https://console.catalyst.zoho.com/browser360/v1/project/32940000000022062/browser-grid/2955000000009803/stats?data_to_fetch=live_stats' \ --header 'api-key: 010530e3e2868ac2418224ef9844fede33897db2e9a2d34f4291ed679d6140b2ed87356bd93cd15364485e769a389deb8917a6e06487ae37bfad19846bc3a0bd'{{%/code%}} {{%note%}}{{%bold%}}Notes:{{%/bold%}}<br /> * To run this API successfully, you need to have at least one grid present in your project. * It is best to {{%bold%}}run this API before you connect{{%/bold%}} to your headless browser.{{%/note%}} Executing this API will generate a response in the following manner: {{%code class= "language-json" %}}{ "status": "success", "data": { "session_queue_size": 0, "session_count": 0, "node_count": 0, "free_sessions": 10, "is_hub_alive": true } }{{%/code%}} In this response, we can see that the value for the key {{%badge%}}{{%bold%}}free_sessions{{%/bold%}}{{%/badge%}} is set as **10**. Meaning that there are **10 browsers** available to process your request. If the value of {{%badge%}}{{%bold%}}free_sessions{{%/bold%}}{{%/badge%}} key is returned as **0**, as shown below: {{%code class= "language-json" %}}{ "status": "success", "data": { "session_queue_size": 0, "session_count": 10, "node_count": 2, "free_sessions": 0, "is_hub_alive": true } }{{%/code%}} This means that there are no browsers left to process your request. It would be best to wait until the value of {{%badge%}}{{%bold%}}free_sessions{{%/bold%}}{{%/badge%}} is at least returned as **1** to process your requests. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Regenerate API Key" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.663Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/regenrate-api-key/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/browser-grid/workflow/) - Create a Browser Grid (/en/smartbrowz/help/browser-grid/create-grid/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Regenerate API Key {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} Once your Browser Grid is created, SmartBrowz will generate a CDP/Webdriver endpoint, along with an API key. <br /> The API key ensures that the endpoint is secure. If at any point you have a requirement to regenerate your API key, you need to be informed of the following consequences: * You need to stop the grid and make it inactive. You will not be allowed to regenerate your API key while the grid is active. * Once you regenerate an API key, you need to apply the new endpoint to your code. * When you reconnect to your browser grid through code, the stats of the old grid will be erased, and the dashboard and grid set up will consider your reconnection as the first request. To regenerate your API key: 1. Navigate to the **Overview** section of your required browser grid, and ensure that the grid is **Inactive**. <br /> 2. Click **Regenerate**. <br /> 3. Click **Confirm** to regenerate the key. <br /> A new API key will be generated for you. <br /> You can either replace just the new API key in your endpoints, or you can copy the endpoint from the console with the new API key and replace it accordingly in your code. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Explore Browser Grid Dashboard" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.663Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/explore-dashboard/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/browser-grid/workflow/) - Create a Browser Grid (/en/smartbrowz/help/browser-grid/create-grid/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Explore Browser Grid Dashboard {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} Once you create your browser grid, you will have access to the **Dashboard**. The dashboard will be populated once you connect to the remote browser in the grid through your code. The browser grid dashboard displays real-time stats of the following: <br /> * The maximum and average percent of cores being used by spawned nodes. * The maximum and average percent of memory being used by nodes. * The number of nodes and browsers that are being run concurrently. * Complete list of the {{%link href="/en/smartbrowz/help/browser-grid/features/#alerts" %}}alerts{{%/link%}} that have been raised by the Browser Grid at the event where a request has been killed, or if the grid has encountered any errors. {{%note%}}{{%bold%}}Note:{{%/bold%}} Always click the {{%bold%}}Refresh{{%/bold%}} button present in the console to ensure the dashboard renders the latest stats.{{%/note%}} ### Performance Graphs In the Browser Grid *Dashboard*, you will be able to view four graphs that illustrate various performance statistics of the grid. <br /> The graphs project the following operations: * The performance of the nodes and data on when they were created. * The performance of the spawned browsers and the duration they were spawned and operating. * The average CPU core usage and average memory usage. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Manage Browser Grid" description: "Process massive load of requests using multiple headless browsers connected using automation libraries, with greater control over node and browser configurations" last_updated: "2026-03-18T07:41:08.663Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-grid/manage-grid/" service: "SmartBrowz" related: - Browser Grid Features (/en/smartbrowz/help/smartbrowz/browser-grid/features/) - Browser Grid Workflow (/en/smartbrowz/help/smartbrowz/browser-grid/workflow/) - Create a Browser Grid (/en/smartbrowz/help/smartbrowz/browser-grid/create-grid/) - Browser Grid Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Browser Grid Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Browser Grid Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - Browser Grid REST API (/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/#ListallBrowserGrids) -------------------------------------------------------------------------------- # Manage Browser Grid {{%info%}}{{%bold%}}Info:{{%/bold%}} This feature is currently only available in {{%bold%}}Early Access{{%/bold%}}. To test out this feature, you can email your requirement to Catalyst Support at {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}{{%/info%}} Once a browser grid is active and operational, you can perform the following operations: * [Stop the browser grid](#stop-the-browser-grid) * [Modify and update browser grid configurations](#update-browser-grid) * [Delete the entire browser grid](#delete-browser-grid) ### Stop the Browser Grid To make the browser grid inactive again: 1. Select the required browser grid tile from the **Browser Grid** component space. <br /> 2. Click the ellipsis and select **Stop**. <br /> 3. Click **Stop**. <br /> The browser grid's operations will be suspended, and the grid will be marked **Inactive**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} To run the grid again, you need to connect to your headless browser through code.{{%/note%}} ### Update Browser Grid {{%note%}}{{%bold%}}Notes:{{%/bold%}} * You will only be able to update a browser grid if it is in the {{%bold%}}Inactive{{%/bold%}} state. * If your browser is having trouble processing requests due to improper configurations, then you need to [Stop the grid](#stop-the-browser-grid), and only then update it. * Once you update a configuration, the grid will behave as a completely new grid. The {{%italics%}}Dashboard{{%/italics%}} populated with data from previous executions will be permanently deleted.{{%/note%}} To update the configurations of your browser grid: 1. Select the required browser grid tile from the **Browser Grid** component space. <br /> 2. Ensure your required grid is inactive, and click on the ellipsis and select **Update**. <br /> 3. Update your grid in the required manner and click **Update**. <br /> The required changes will be rendered. ### Delete Browser Grid {{%note%}}{{%bold%}}Notes:{{%/bold%}}<br /> * You will only be able to delete a browser grid if it is in the {{%bold%}}Inactive{{%/bold%}} state. * If you are required to delete an active browser grid, then you need to [Stop the grid](#stop-the-browser-grid), and only then delete it.{{%/note%}} To delete a grid: 1. Select the required browser grid tile from the **Browser Grid** component space. <br /> 2. Ensure your required grid is inactive, and click on the ellipsis and select **Delete**. <br /> 3. Click **Delete**. <br /> The browser grid will be permanently deleted. {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of Catalyst SmartBrowz is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit such actions, or with proper approval.Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} ### Browser Logic -------------------------------------------------------------------------------- title: "Introduction" description: "Code a Catalyst Serverless function to perform any browser task that you would otherwise manually do." last_updated: "2026-03-18T07:41:08.664Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-logic/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Browser Logic ### Introduction This component of Catalyst SmartBrowz is a {{%link href="/en/serverless/help/functions/introduction/" %}}Catalyst Serverless Function type{{%/link%}}, that contains the ideal coding structure required to perform any browser task through code. Using Browser Logic functions you can engineer any browser interaction or action as code to perform in a {{%link href="/en/smartbrowz/help/headless/introduction/" %}}Headless browser{{%/link%}}. Every browser task that can be done manually performed can be engineered as Browser Logic. Browser Logic functions can be coded in the following programming languages: * {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" %}}Java{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" %}}NodeJS{{%/link%}} Much like other Serverless functions, you can create, initialize, serve and deploy Browser Logic functions from the {{%link href="/en/cli/v1/cli-command-reference/" %}}Catalyst CLI{{%/link%}}. When you deploy the function to the console, Catalyst will generate an Invocation URL, that allows you directly access the function. The Invocation URL will be in the following format: {{%bold%}}https<span></span>://{project_domain}.development.catalystserverless.com/server/{function_name}/execute{{%/bold%}} You can also use {{%link href="/en/devops/help/logs/introduction/" %}}Logs{{%/link%}}, a {{%link href="/en/devops/getting-started/introduction/" %}}Catalyst DevOps{{%/link%}} component to check function logs of Browser Logic functions, and {{%link href="/en/devops/help/apm/introduction/" %}}APM{{%/link%}} to monitor your function performance. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Benefits" description: "Code a Catalyst Serverless function to perform any browser task that you would otherwise manually do." last_updated: "2026-03-18T07:41:08.664Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-logic/benefits/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Benefits * Browser Logic provides you with the ideal coding structure to engineer your coding logic for browser automation tasks without any additional setup. * You can run multiple functionality tests on your web application in the headless browser by engineering the required logic in the browser logic functions. * The function stack dependencies that are required to deploy the function will be automatically generated when you initialize the function in the {{%link href="/en/cli/v1/cli-command-reference/" %}}CLI{{%/link%}}. * Browser Logic allows you to control and manage the {{%link href="/en/smartbrowz/help/headless/introduction/" %}}headless browser{{%/link%}} through code. * Catalyst SmartBrowz provides you with the {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}code snippets{{%/link%}} containing the logic of common browser automation tasks. You can easily convert these recipes to Browser Logic functions and engineer your custom logic over them to perform permitted crawling and scraping tasks on websites of your preference. -------------------------------------------------------------------------------- title: "Use Cases" description: "Code a Catalyst Serverless function to perform any browser task that you would otherwise manually do." last_updated: "2026-03-18T07:41:08.664Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-logic/use-cases/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Use Cases * Lead generation is a vital task in business development. Manually collecting publicly listed contact information from each of the prospective clients' websites is a demanding and time-consuming task. You can quickly and effectively perform this task by engineering allowed crawling and scraping data from permitted websites. * Competitor analysis is another vital facet of business development. If you wish to understand how well-received your competitor's product is in the market or what their user-end pain points are, you would have to visit their product-list section manually and go through each of their user reviews and ratings in their website. This is, again, a time-consuming and demanding task. You can quickly accomplish this task by engineering a browser logic function to automatically navigate to the permitted site and perform crawling and scraping tasks. You can also engineer the browser logic function to collect only the highest rated and lowest rated reviews and store them in a CSV file to analyze them later. * Sometimes, you may receive emails from untrustworthy sources that contain a lot of hyperlinks and buttons. If you wish to check if the links or buttons are safe to visit, you can engineer a Browser Logic function that takes the content of the email as the input. You can code the function to hit the URLs of the links and buttons remotely, without compromising your safety or exposing your data, which can then produce a message that informs you of the safety of the links/buttons. -------------------------------------------------------------------------------- title: "Function Structure" description: "Code a Catalyst Serverless function to perform any browser task that you would otherwise manually do." last_updated: "2026-03-18T07:41:08.664Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-logic/function-structure/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Browser Logic Function Structure When you {{%link href="/en/smartbrowz/help/browser-logic/implementation/" %}}create a Browser Logic function{{%/link%}} from the Catalyst CLI, it is created with a boilerplate code structure as shown below. Catalyst also creates the required dependencies and configuration files for your function and your project. You can refer to the {{%link href="/en/cli/v1/project-directory-structure/introduction/" %}}Project Directory Structure{{%/link%}} help page for details about the general configuration files. ### Java {{%note%}}{{%bold%}}Note:{{%/bold%}} This boilerplate code below will be present in your function file when you initialize a browser logic function in Java with Selenium{{%/note%}} {{%code class="language-java"%}}import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.simple.JSONObject; import org.openqa.selenium.chrome.ChromeDriver; import com.catalyst.browserlogic.SeleniumHandler; public class BrowserlessExample implements SeleniumHandler { private static final Logger LOGGER = Logger.getLogger(SeleniumExample.class.getName()); JSONObject responseData = new JSONObject(); @Override @SuppressWarnings("unchecked") public void runner(HttpServletRequest request, HttpServletResponse response,ChromeDriver driver) throws Exception { try { //Fetches the endpoint and method to which the call was made String url = request.getRequestURI(); String method = request.getMethod(); driver.get("https://www.example.com"); responseData.put("message", "Title of the page "+driver.getTitle()); //Sends the response back to the Client response.setContentType("application/json"); response.getWriter().write(responseData.toString()); response.setStatus(200); } catch (Exception e) { //The actions are logged. You can check the logs from Catalyst Logs. LOGGER.log(Level.SEVERE, "Exception in SeleniumExample", e); responseData.put("error", "Internal server error occurred. Please try again in some time."); response.getWriter().write(responseData.toString()); response.setStatus(500); } } }{{%/code%}} ### NodeJS {{%note%}}{{%bold%}}Note:{{%/bold%}} This boilerplate code below will be present in your function file when you initialize a browser logic function in NodeJS with Puppeteer{{%/note%}} {{%code class="language-java"%}}module.exports.puppeteer = async (request, response, page) => { await page.goto('https://example.com/',{waitUntil: "domcontentloaded"}); const pageTitle = await page.title(); response.setHeader('Content-Type', 'application/json'); response.write(JSON.stringify({ output: pageTitle })); response.end(); };{{%/code%}} -------------------------------------------------------------------------------- title: "Implementation" description: "Code a Catalyst Serverless function to perform any browser task that you would otherwise manually do." last_updated: "2026-03-18T07:41:08.664Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/browser-logic/implementation/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Implementation Implement the following steps to create and initialize a Browser Logic function through the Catalyst CLI. You can learn about CLI initialization and other CLI operations in detail from the {{%link href="/en/cli/v1/cli-command-reference/" %}}CLI help docs{{%/link%}}. Before you initialize your function, you will need to install the browser automation library you require in your local system. The installation instructions for the automation libraries that Catalyst provides templates for are: * {{%link href="https://pptr.dev/" %}}Install Pupeeteer{{%/link%}} * {{%link href="https://www.selenium.dev/" %}}Install Selenium{{%/link%}} * {{%link href="https://playwright.dev/" %}}Install Playwright{{%/link%}} ### Create a Browser Logic Function You can now begin with initializing your browser logic function by either initializing a new project from a local directory, or {{%link href="/en/cli/v1/working-with-functions/add-functions/" %}}adding the function{{%/link%}} in an existing project directory: 1. {{%link href="/en/cli/v1/initialize-resources/initialize-new-project/" %}}Create or initialize the Project{{%/link%}} in the console or through the CLI, and begin {{%link href="/en/cli/v1/initialize-resources/initialize-functions/" %}}Function Setup{{%/link%}} in CLI. 2. Choose *Browser Logic* as the function type, and click **Enter**. <br /> 3. Choose you preferred function stack, as the latest supported runtime of either *Java* or *NodeJS* and click **Enter**. <br /> 4. If you chose to create your function with: - **Java function stack**<br /> You can initialize your Browser Logic function with **Selenium** alone. Press **Enter**. <br /> - **NodeJS function stack**<br /> Choose an automation library of your preference and press **Enter**. <br /> The Browser Logic function will be be created successfully along with the required project or {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}function dependencies and configuration files{{%/link%}}. #### Java: <br /> #### NodeJS: <br /> You can now code the function using an IDE of your choice. ### Serve Browser Logic Function Before we test the Browser Logic function, you need to implement the following steps in your local system: * Since Browser Logic only supports Chrome web browsers, you need to download a chrome driver suitable to your operating system from {{%link href="https://googlechromelabs.github.io/chrome-for-testing/#stable." %}}here{{%/link%}}. * Go to {{%badge%}}.bashrc{{%/badge%}} file present in your local system and set the following environment variables: {{%code class="language-json"%}}export CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" // Replace the value with the Chrome driver you dowmloaded earlier export CHROMEDRIVER_EXECUTABLE_PATH="/usr/local/bin/chromedriver" // Replace the value with the local ocation of your Chrome browser{{%/code%}} Once you have coded your Browser Logic function in an IDE of your choice, you can test the functionality of your function by using the following CLI command: {{%cli%}}catalyst serve{{%/cli%}} This CLI command will serve all the resources in your project, including your Browser Logic function. To learn more about Catalyst serve resources, visit this {{%link href="/en/cli/v1/serve-resources/serve-all-resources/" %}}help document{{%/link%}}. When you execute the above command, this will start a local serve in your **default port 3000**, and a secure endpoint URL for your function will be generated by Catalyst, and displayed in your CLI. <br /> You can use this URL to test your Browser Logic functions in your browser. ### Deploy Browser Logic Function After you have coded and tested your function, you can either deploy it using the Catalyst CLI or you can upload your function to the console as a zip file. #### Deploy using the Catalyst CLI Execute the following command from your project or function directory: {{%cli%}}catalyst deploy{{%/cli%}} The function will be deployed to the console, and an Invocation URL will be generated for the function. You can use this URL to directly access the function, use it in code, or for any purpose of your preference that requires you to directly access the function. <br /> You can find out more about how catalyst deploy works by visiting this {{%link href="/en/cli/v1/deploy-resources/introduction/" %}}help page{{%/link%}}. ### Upload Function as ZIP File in the Console You can upload the function by navigating to **SmartBrowz -> Browser Logic** or by navigating to **Serverless -> Functions**. The steps mentioned below are for uploading the function from the *Browser Logic* section of *SmartBrowz*. Implement the following steps to upload your Browser Logic function to the console: 1. Navigate to the **Browser Logic** component present in the *SmartBrowz* service section in the Catalyst console under *Browser Control*. Click **Create Browser Logic**. <br /> 2. Click the **Console** tab. <br /> 3. Enter the Function Name, and select the Function Stack in which you created your Browser Logic Function. <br /> 4. Upload your function directory as a zip file. <br /> While uploading a *Java* or a *Node.JS* function bundle in the console, you must ensure that: * Instead of compressing the function folder as a whole, you must navigate inside the function folder, select all the files in it, and then compress them together. This is because, when Catalyst extracts a Java or Node.js function's zip file, the {{%link href="/en/cli/v1/project-directory-structure/functions-directory/" %}}{{%badge%}}{{%badge%}}catalyst-config.json{{%/badge%}}{{%/badge%}}{{%/link%}} file must be present in the root. * The function's directory contains all the required configuration files in the {{%link href="/en/cli/v1/project-directory-structure/catalyst-json/" %}}standard structures{{%/link%}}. * The function name you enter in the console matches the names configured in {{%badge%}}package.json{{%/badge%}} for Node.js, and {{%badge%}}catalyst-config.json{{%/badge%}} for both Java and Node.js. The zip file's name can be anything. * The stack version you select in the console matches the stack version configured in {{%badge%}}catalyst-config.json{{%/badge%}} for both Java and Node.js functions. 5. **Configure Function Memory**:<br /> Catalyst enables you to configure the memory for each of your functions. This memory will be allocated when the function is executed. The default memory allocated for a function is 256 MB. That is, if you don't configure the memory, or if you had created a function before this feature was made available, the memory would be set to 256 MB automatically. You can edit any of your existing functions and change this value as per your requirements. {{%note%}}{{%bold%}}Note:{{%/bold%}} You can optimize the cost and performance of your application by selecting the optimal memory for a function based on the complexity of its code. Refer to the {{%link href="/en/serverless/help/functions/optimization/" %}}Cost and Performance Optimization in Functions{{%/link%}} page for details.{{%/note%}} You can choose to change the allocated memory of the function by clicking **Show Advanced Option**, and selecting your preferred memory from the **Select Memory** drop-down. <br /> {{%note%}}{{%bold%}}Node:{{%/bold%}} The CPU is allocated automatically based on the memory you configure for your function. You won't be able to view or configure this value.{{%/note%}} 6. Click **Create**. <br /> The function will be created and listed in the Functions page. A unique Function ID will be created for it and displayed in the page, along with the function's details. ### Function Details After you upload the function to the console, you will be able to view meaningful stats on your function performance and other function details. <br /> You can also copy and use the secure **Invocation URL** present in the console to access your function directly, pass inputs, or implement it in your code as you require. Similar to other {{%link href="/en/serverless/help/functions/introduction/" %}}Serverless function types{{%/link%}}, you can use the Configurations section of the console to: - Add {{%link href="/en/serverless/help/functions/implementation/#environmental-variables" %}}Environment Variables{{%/link%}} <br /> - Change the {{%link href="/en/serverless/help/functions/implementation/#allocated-memory" %}}allocated memory{{%/link%}} of the function stack. <br /> You can refer to the {{%link href="/en/serverless/help/functions/implementation/" %}}Functions Implementation section{{%/link%}} for more information about these actions. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} ### Dataverse -------------------------------------------------------------------------------- title: "Introduction" description: "Scrape meaningful data from the internet using powerful Catalyst APIs." last_updated: "2026-03-18T07:41:08.665Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/dataverse/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Introduction Dataverse is a Catalyst SmarBrowz component that allows you perform meaningful data extraction from the internet using easy-to-use Catalyst APIs. Dataverse is Catalyst's most efficient data scraping solution that will aid you in creating better strategies to tackle common business pain areas such as competitor analysis, lead nurturing, cross-selling and upselling, data validation and data cleansing and so much more. <br /> Currently Dataverse offers you three powerful APIs to perform complex web scraping operations with utmost ease: * **Lead Enrichment**: This API allows you to fetch organization information of a company like name, type, revenue, employee count, status, official email address, contact number, and so much more. You enter a few identifying parameters directly in the console and execute a {{%badge%}}POST{{%/badge%}} API, that will fetch all the required details and display all the requested details in a JSON format. * **Tech Stack Finder**: You can execute this {{%badge%}}POST{{%/badge%}} API to get a list of the frameworks and technologies a company uses in their product by passing the website URL of the concerned company as a parameter. * **Similar Companies**: This {{%badge%}}POST{{%/badge%}} API only requires you to enter the website URL of a company. Once the API is executed you will be able to view an extensive list of companies that offer the same or similar services. This significantly cuts down your resources required to conduct market research, and competitor profiling. {{%note%}}{{%bold%}}Note:{{%/bold%}} * This component is currently available in its {{%bold%}}beta version{{%/bold%}}, and it is only available to users whose accounts are registered in the {{%bold%}}US data center{{%/bold%}}. Users accessing from other data centers will not be able to avail this feature * During the beta period, from one Catalyst organization, you can only make {{%bold%}}500 calls per month{{%/bold%}} to the Dataverse APIs as a whole. If you require more API calls to be made, please email your request to {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}. * Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} <br /> -------------------------------------------------------------------------------- title: "Benefits" description: "Scrape meaningful data from the internet using powerful Catalyst APIs." last_updated: "2026-03-18T07:41:08.665Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/dataverse/benefits/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Benefits * **Better Market Understanding**<br />Understanding the market you are aiming to succeed in is a crucial aspect of business development. The {{%link href="/en/smartbrowz/help/dataverse/implementation/#similar-companies" %}}Similar Companies{{%/link%}}, and {{%link href="/en/smartbrowz/help/dataverse/implementation/#tech-stack-finder" %}}Tech Stack Finder{{%/link%}} APIs provide you with a list of prevalent companies that offer the same services and the framework and technologies that they implement to create their product. Additionally, using Dataverse APIs ensures you get the required scrapped information in an ideal JSON format saving considerable resources that you would otherwise devote to market research. * **Lead Nurturing**<br />Generating leads is a cornerstone to business scalability. It is crucial to get meaningful information about your leads to strategize the right approach and convert leads to prospects. A safe, non-intrusive and reliable way to establish communication with prospective leads is through their official emails. You can obtain the official communication addresses listed on their official webpage by triggering the {{%link href="/en/smartbrowz/help/dataverse/implementation/#lead-enrichment" %}}Lead Enrichment{{%/link%}} API. This considerably saves you time and resources from navigating to each potential lead's website in search of publicly listed information. <br /> -------------------------------------------------------------------------------- title: "Implementation" description: "Scrape meaningful data from the internet using powerful Catalyst APIs." last_updated: "2026-03-18T07:41:08.666Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/dataverse/implementation/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Implementation Dataverse is a Catalyst SmartBrowz component, that uses powerful data scraping APIs to address and solve real time business bottlenecks. Dataverse currently offers the following APIs: * Lead Enrichment * Tech Stack Finder * Similar Companies <br /> Each of these APIs only requires a few identifying parameters like the company's valid website URL to be passed as input and once triggered you will immediately get a JSON output containing all the requested information. To access the APIs: 1. Navigate to the *Catalyst SmartBrowz* section of the console, and click **Start Exploring**. <br /> 2. Click **Dataverse** present under *SCRAPE* to access the Dataverse component. <br /> You will be able to view the list of APIs that are currently present in Dataverse. Now we will be walking through how to use each of these APIs: ### Lead Enrichment 1. Click the **Lead Enrichment** tile to access the API. <br /> 2. You will be able to view and copy the API endpoint, and view the input fields required to trigger the API. <br /> 3. You can click the **README** tab to understand more about the API's functionality, the Scopes, and the parameters it requires to execute. <br /> 4. Provide the required inputs—the company's official website URL, name of the lead, and the email address of the lead, and click **Run**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} It is mandatory for you to provide the value for at least one key.{{%/note%}} 5. All the publicly listed relevant information present in the URL you provided will be scraped and presented to you as a JSON output that you can copy and use as you require. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * This component is currently offered in {{%bold%}}BETA{{%/bold%}} version, and is only restricted to {{%bold%}}US DC{{%/bold%}}. * During the {{%bold%}}BETA{{%/bold%}} period, from one Catalyst organization, you can only make {{%bold%}}500 calls per month{{%/bold%}} to the Dataverse APIs as a whole. If you require more API calls to be made, kindly email your request to {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Tech Stack Finder 1. Click the **Tech Stack Finder** tile to access the API. <br /> 2. You will be able to view and copy the API endpoint, and view the input field to enter the only parameter required to trigger this API. <br /> 3. You can click the **README** tab to understand more about the API's functionality, the Scope, and the parameter required to execute. <br /> 4. Provide a valid URL of the company's website in the required input field, and click **Run**. <br /> 5. All the frameworks and technologies used to build the website, will be provided to you as a JSON output that you can copy and use it as you prefer. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * This component is currently offered in {{%bold%}}BETA{{%/bold%}} version, and is only restricted to {{%bold%}}US DC{{%/bold%}}. * During the {{%bold%}}BETA{{%/bold%}} period, from one Catalyst organization, you can only make {{%bold%}}500 calls per month{{%/bold%}} to the Dataverse APIs as a whole. If you require more API calls to be made, kindly email your request to {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} ### Similar Companies 1. Click the **Similar Companies** tile to access the API. <br /> 2. You will be able to view and copy the API endpoint, and view the input fields that need to filled to trigger this API. <br /> 3. You can click the **README** tab to understand more about the API's functionality, the Scope, and the parameters required to execute. <br /> 4. Provide a valid URL of the company's website in the required input field, and click **Run**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} It is mandatory for you to provide the value for at least one key.{{%/note%}} 5. A list of companies that offer similar services will be provided to you as a JSON output that you can copy and use it as you prefer. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * This component is currently offered in {{%bold%}}BETA{{%/bold%}} version, and is only restricted to {{%bold%}}US DC{{%/bold%}}. * During the {{%bold%}}BETA{{%/bold%}} period, from one Catalyst organization, you can only make {{%bold%}}500 calls per month{{%/bold%}} to the Dataverse APIs as a whole. If you require more API calls to be made, kindly email your request to {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}.{{%/note%}} #### Trial Runs Count You can find out how many API calls you are allowed to make by checking the Trial Runs Count counter, present at the top of the console. <br /> If you require more API calls to be made, kindly email your request to {{%link href="mailto:support@zohocatalyst.com" %}}{{%bold%}}support@zohocatalyst.com{{%/bold%}}{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} <br /> ### Headless -------------------------------------------------------------------------------- title: "Introduction" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.666Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Headless ### Introduction Headless is a component of {{%link href="/en/smartbrowz/getting-started/introduction/" %}}Catalyst SmartBrowz{{%/link%}} that you can use to connect to a remote browser with popular automation libraries in a environment powered by Catalyst cloud. <br /> Catalyst SmartBrowz offers you the option to connect to a secure remote browser with any automation library of your choice. Additionally, code snippets are provided in the console and this {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/java/" %}}help section{{%/link%}} to allow you to connect to the remote browser with popular automation libraries like: * Puppetteer * Playwright * Selenium The endpoints required to connect to the remote browser and the {{%badge%}}API KEY{{%/badge%}} to authenticate the connection with the remote browser will be automatically generated by Catalyst and available in the console. You can find out how to connect using these endpoints in this {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/java/" %}}help section{{%/link%}}. You also have the option to configure the {{%link href="/en/smartbrowz/help/headless/implementation/implementation/" %}}remote browser's memory{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must install the browser automation libraries in your local system before you use them. For example, if you wish to use the browser automation libraries listed above, you will need to install them first from their official websites. You can refer to their respective helps documentations for steps—{{%link href="https://pptr.dev/" %}}Puppetteer{{%/link%}}, {{%link href="https://playwright.dev/" %}}Playwright{{%/link%}}, {{%link href="https://www.selenium.dev/" %}}Selenium{{%/link%}}.{{%/note%}} In the console, you will be provided code snippets to connect with the headless browser in the following programming languages: * {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/java/" %}}Java{{%/link%}} * {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/nodejs/" %}}NodeJS{{%/link%}} * {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/python/" %}}Python{{%/link%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} * Currently Catalyst provides the remote browser only in Chrome flavours. Support for other browsers will be rolled out in future updates. * Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Key Concepts" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/key-concepts/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Key Concepts Ensure you are familiar with the following terms and concepts so you can efficiently utilize the Headless component: <br /> * **Webdriver Endpoint**: This endpoint is generated by Catalyst and it is available for you to copy from the console. You need to use this secure endpoint in your code to connect to the remote browser in the Catalyst environment with automation libraries like Selenium. * **CDP Endpoint**: This secure endpoint is also generated by Catalyst and is similarly present in the console. You will need to use this endpoint in your code to connect to a headless browser in Catalyst environment with automation libraries like Pupetteer, or Playwright. {{%note%}}{{%bold%}}Note:{{%/bold%}} When you copy the required endpoints, the endpoints will automatically contain the {{%badge%}}API KEY{{%/badge%}}. This {{%badge%}}API KEY{{%/badge%}} is auto-configured and handled by Catalyst entirely. This key authenticates your access to these endpoints in a secure manner.{{%/note%}} * **Code Recipes**: These are generic code snippets that perform tasks like crawling, scraping, testing, and other browser automation tasks that you can test in the Catalyst cloud environment. You can implement these recipes using a browser automation library and programming language of your choice. You can also build upon these recipes and include additional functionalities, or customize them tailored to your requirements. The required code snippets of these recipes are available in the console and you can also find them in this {{%link href="https://github.com/catalystbyzoho/smartbrowz/tree/main/examples/headless-recipes" %}}GitHub repository{{%/link%}}. -------------------------------------------------------------------------------- title: "Benefits" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/benefits/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Benefits * Headless provides you the flexibility to test your web applications and websites using a remote browser powered by Catalyst cloud with any browser automation library of your preference. * Headless supports the following programming languages- {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/java/" %}}Java{{%/link%}}, {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/nodejs/" %}}NodeJS{{%/link%}} and {{%link href="/en/smartbrowz/help/headless/implementation/function-stack/python/" %}}Python{{%/link%}}. * You can implement the remote browser with a memory configuration of your choice. This will enable you to test your web application in varying instances for various test conditions, and lets you check if your application can perform seamlessly without any lag. * You can engineer any permitted crawling and scraping logic using browser logic functions and implement them through the headless browser. * You can quickly connect a remote browser at any time for performing any browser task using the secure endpoints generated by Catalyst. No additional set up for accessing an endpoint is required. -------------------------------------------------------------------------------- title: "Use Cases" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/use-cases/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Use Cases * Testing is crucial to the success of an application. Testing also requires a lot of hardware support, which consumes a lot of resources that are sometimes not affordable by businesses. Implementing **SmartBrowz's Headless**, you can test the functionality of your application in any memory configuration of the browser. Given that Headless is powered by the Catalyst cloud environment and backed by Zoho's powerful infrastructure, you can test your application without incurring the burden of hardware availability and in a robust, reliable, secure environment. * Hyperlinks greatly enhance the SEO of your website. But sometimes, your website can contain broken hyperlinks, which in turn can reduce its credibility. You can code a {{%link href="/en/smartbrowz/help/browser-logic/introduction/" %}}Browser Logic function{{%/link%}} to crawl and scrape all the links present in the Headless browser. Using Browser Logic, you can engineer your logic in the recipe to hit the URLs of all the scraped hyperlinks and store the links that produce a "**404 Error message**" in a CSV file. You can then use this CSV file to fix all the broken links. #### Implementation -------------------------------------------------------------------------------- title: "Change the Remote Browser Settings" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/implementation/implementation/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Implementation This section covers all the steps you need to follow to change the remote browser settings and the code snippets required to connect to the headless browser with popular automation libraries. ### Change the Remote Browser Settings By default, the remote browser's memory will be set at 512 MB and the latest stable version of the remote browser will be set. You can change the default memory and customize it to your requirements. You can find the remote browser's version and memory configuration details in the top-right corner of the browser. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} Currently, Catalyst SmartBrowz only offers remote browser in the latest version of Chrome. Support for other browsers will be rolled out in future updates.{{%/note%}} If you wish to change the default memory setting, implement the following steps: 1. Click the **Remote Browser Options** icon and click **Update Memory**. <br /> 2. Use the drop-down to set your memory preference, and click **Update**. <br /> 3. The updated memory configuration of the remote browser will now be reflected in the **Memory** section of the console. <br /> While the {{%badge%}}API KEY{{%/badge%}} required to securely use the endpoints to enable headless is automatically generated and present when you copy the endpoint of your preference, you can also get the {{%badge%}}API KEY{{%/badge%}} by implementing the following steps: 1. Click the **Remote Browser Options** icon and click **View Key**. <br /> 2. Copy the key and click **Close**. <br /> ### Connect to a Headless Browser Using SmartBrowz You can connect to the headless browser with any automation library of preference, using any programming language. However, if you choose to connect with the headless browser with popular autiomation libraires like Puppeteer, Playwright or Selenium using Java, NodeJS, or Python, you can directly copy the required code snippet and connect to the headless browser as quickly as possible. The required code snippets can be found in the next sections, and are also available in the console. You can access the required snippet in the console by clicking the **Connect** button, and choosing your preferred stack and automation library. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You must install the browser automation libraries in your local system before you use them. For example, if you wish to use the browser automation libraries listed above, you will need to install them first from their official websites. You can refer to their respective helps documentations for steps—{{%link href="https://pptr.dev/" %}}Puppetteer{{%/link%}}, {{%link href="https://playwright.dev/" %}}Playwright{{%/link%}}, {{%link href="https://www.selenium.dev/" %}}Selenium{{%/link%}}.{{%/note%}} ##### Connect to a Headless Browser -------------------------------------------------------------------------------- title: "Java" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/implementation/function-stack/java/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Connect to Headless With Java Function Stack In this section you will find the required scripts to connect to a headless remote browser using the Java function stack, with a browser automation library of your preference. {{%note%}}{{%bold%}}Note:{{%/bold%}} Puppeteer is not available in the Java function stack.{{%/note%}} ### Playwright #### Using Playwright Without SmartBrowz {{%code class="language-java"%}}package org.example; import com.microsoft.playwright.*; import java.nio.file.Paths; public class PlaywrightJava { public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { try (Browser browser = playwright.chromium().launch()) { BrowserContext context = browser.newContext(); Page page = context.newPage(); page.navigate("http://example.com/""); page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png"))); } } } }{{%/code%}} #### Using Playwright With SmartBrowz {{%code class="language-java"%}}// From inside your Java application public static void main(String[] args) { try (Playwright playwright = Playwright.create()) { BrowserType browserType = playwright.chromium(); //Change browserType.launch with connectOverCDP Browser browser = browserType.connectOverCDP("YOUR_CDP_ENDPOINT"); // The rest of your code remains the same Page page = browser.newPage(); page.navigate("https://www.example.com"); page.screenshot(new Page.ScreenshotOptions().setPath(Paths.get("screenshot.png"))); } }{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the CDP Endpoint present in the console and paste it in line "{{%bold%}}8{{%/bold%}}" when you implement this code.{{%/note%}} ### Selenium #### Using Selenium Without SmartBrowz {{%code class="language-java"%}}import org.apache.commons.io.FileUtils; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import java.io.File; import java.io.IOException; public class ScreenshotDemo { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path\to\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demoqa.com"); File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); try { FileUtils.copyFile(screenshot, new File("path\\to\\homePageScreenshot.png")); } catch (IOException e) { System.out.println(e.getMessage()); } driver.close(); } }{{%/code%}} #### Using Selenium With SmartBrowz {{%code class="language-java"%}}// From inside your Java application public static void main() throws MalformedURLException { ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--no-sandbox"); chromeOptions.addArguments("--headless"); chromeOptions.addArguments("--disable-dev-shm-usage"); //Change ChromeDriver with RemoteWebDriver WebDriver driver = new RemoteWebDriver(new URL("YOUR_WEBDRIVER_ENDPOINT"),chromeOptions); // The rest of your code remains the same driver.get("https://www.example.com"); driver.quit(); }{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the Webdriver Endpoint from the console and paste it in the line "{{%bold%}}9{{%/bold%}}" when you implement this code.{{%/note%}} -------------------------------------------------------------------------------- title: "NodeJS" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.667Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/implementation/function-stack/nodejs/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Connect to Headless With NodeJS Function Stack In this section you will find the required scripts to connect to headless using the NodeJS function stack with a browser automation library of your preference: ### Puppeteer #### Using Puppeteer Without SmartBrowz {{%code class="language-javascript"%}}import puppeteer from 'puppeteer'; (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('http://example.com/'); await page.screenshot({‘path’:’example.png’}) await browser.close(); })();{{%/code%}} #### Using Puppeteer With SmartBrowz {{%code class="language-javascript"%}}// From inside your Node application const puppeteer = require("puppeteer-core"); // Replace puppeteer.launch with puppeteer.connect const browser = await puppeteer.connect({ browserWSEndpoint: 'YOUR_CDP_ENDPOINT' }); // The rest of your script remains the same const page = await browser.newPage(); await page.goto('https://example.com/'); await page.screenshot({ path: 'screenshot.png' }); page.close();{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the CDP Endpoint from the console and paste it in line "{{%bold%}}6{{%/bold%}}" when you implement this code.{{%/note%}} ### Playwright #### Using Playwright Without SmartBrowz {{%code class="language-javascript"%}}import { test } from '@playwright/test'; test('Page Screenshot', async ({ page }) => { await page.goto('http://example.com/‘); await page.screenshot({ path: `example.png` }); });{{%/code%}} #### Using Playwright With SmartBrowz {{%code class="language-javascript"%}}// From inside your Node application const pw = require('playwright-core'); // Replace pw.chromium.launch with connectOverCDP const browser = await pw.chromium.connectOverCDP({ wsEndpoint: 'YOUR_CDP_ENDPOINT' }); // The rest of your script remains the same const page = await browser.newPage(); await page.goto('https://www.example.com/'); await page.screenshot({ path: 'example.png' }); await browser.close();{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the CDP Endpoint from the console and paste it in line "{{%bold%}}5{{%/bold%}}" when you implement this code.{{%/note%}} ### Selenium #### Using Selenium Without SmartBrowz {{%code class="language-javascript"%}}require("chromedriver"); require("selenium-webdriver") let webdriver = require("selenium-webdriver"); var By = require("selenium-webdriver").By; let browser = new webdriver.Builder(); let driver = browser.forBrowser("chrome").build(); driver.get('https://example.com/'); driver.takeScreenshot().then( function(image) { require('fs').writeFileSync('captured_image_3.png', image, 'base64'); } ); driver.quit();{{%/code%}} #### Using Selenium With SmartBrowz {{%code class="language-javascript"%}}// From inside your Node application const webdriver = require('selenium-webdriver'), chrome = require('selenium-webdriver/chrome'); const chromeCapabilities = webdriver.Capabilities.chrome(); var options = new chrome.Options(); options.addArguments("--no-sandbox"); options.addArguments('--headless') options.addArguments('--disable-dev-shm-usage') const driver = new webdriver.Builder() .forBrowser('chrome') .setChromeOptions(options) .withCapabilities(chromeCapabilities) .usingServer('YOUR_WEBDRIVER_ENDPOINT') .build(); // The rest of your script remains the same await driver.get('https://www.example.com/'); const base64png = await driver.takeScreenshot(); fs.writeFileSync('/tmp/screenshot.png',new Buffer(base64png, 'base64')); driver.quit();{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the Webdriver Endpoint from the console and paste it in line "{{%bold%}}13{{%/bold%}}" when you implement this code.{{%/note%}} -------------------------------------------------------------------------------- title: "Python" description: "Connect with a remote browser in the Catalyst cloud environment in a headless mode using an automation library of your choice." last_updated: "2026-03-18T07:41:08.668Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/headless/implementation/function-stack/python/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Connect to Headless with Python Function Stack In this section you will find the required scripts to connect to headless using the Python function stack with a browser automation library of your preference: ### Puppeteer #### Using Puppeteer Without SmartBrowz {{%code class="language-python"%}}import asyncio from puppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('http://example.com') await page.screenshot({'path': 'example.png'}) await browser.close() asyncio.get_event_loop().run_until_complete(main()){{%/code%}} #### Using Puppeteer With SmartBrowz {{%code class="language-python"%}}import asyncio import pyppeteer async def main(): # Replace puppeteer.launch with pyppeteer.launcher.connect browser = await pyppeteer.launcher.connect( browserWSEndpoint='YOUR_CDP_ENDPOINT' ) # The rest of your code remains the same page = await browser.newPage() await page.goto("https://example.com") await page.screenshot(path="screenshot.png") await browser.close() asyncio.get_event_loop().run_until_complete(main()){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the CDP Endpoint from the console and paste it in line "{{%bold%}}6{{%/bold%}}" when you implement this code.{{%/note%}} ### Playwright #### Using Playwright Without SmartBrowz {{%code class="language-python"%}}from playwright.sync_api import sync_playwright def run(playwright): chrome = playwright.chrome browser = chrome.launch() page = browser.new_page() page.goto("https://example.com") browser.close() with sync_playwright() as playwright: run(playwright){{%/code%}} #### Using Playwright With SmartBrowz {{%code class="language-python"%}}import asyncio from playwright.async_api import async_playwright async def run(playwright): # Replace playwright.chromium.launch with connect_over_cdp browser = playwright.chromium.connect_over_cdp("YOUR_CDP_ENDPOINT") # The rest of the code remians the same context = await browser.new_context() page = await context.new_page() await page.goto("https://example.com") await page.screenshot(path="screenshot.png") await browser.close() async def main(): async with async_playwright() as playwright: await run(playwright) asyncio.run(main()){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the CDP Endpoint from the console and paste it in line "{{%bold%}}5{{%/bold%}}" when you implement this code.{{%/note%}} ### Selenium #### Using Selenium Without SmartBrowz {{%code class="language-python"%}}from selenium import webdriver from PIL import Image driver = webdriver.Chrome(executable_path = "path\\to\\chromedriver.exe") url = "https://example.com/" driver.get(url) driver.save_screenshot(‘ss.png’) screenshot = Image.open(‘ss.png’) driver.close(){{%/code%}} #### Using Selenium With SmartBrowz {{%code class="language-python"%}}import asyncio from selenium import webdriver from selenium.webdriver.chrome.options import Options async def index(): options = Options() options.add_argument("--disable-extensions") options.add_argument("--no-sandbox") options.add_argument('--headless') options.add_argument('--disable-dev-shm-usage') # Change webdriver.Chrome with webdriver.Remote driver = webdriver.Remote( command_executor='YOUR_WEBDRIVER_ENDPOINT', options=options ) #The rest of your code remains the same driver.get("https://example.com") driver.save_screenshot("screenshot.png") driver.close() async def my_async_function(): await index() # call my_async_function asyncio.run(my_async_function()){{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Copy the Webdriver Endpoint from the console and paste it in line "{{%bold%}}13{{%/bold%}}" when you implement this code.{{%/note%}} ### PDF & Screenshot -------------------------------------------------------------------------------- title: "Introduction" description: "Take PDFs and screenshots of web pages or documents programmatically or in the console, based on an input format type of your preference." last_updated: "2026-03-18T07:41:08.668Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/pdfnscreenshot/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # PDF & Screenshot ### Introduction PDF & Screenshot is {{%link href="/en/smartbrowz/" %}}Catalyst SmartBrowz{{%/link%}} component that lets you generate visual documents of websites and web applications. It is a powerful tool that can be used to convert webpages to PDF, to use during UI debugging, and to understand visual components from end-users' perspective, while implementing permitted crawling operations, just to name a few. PDF & Screenshot also allows you to generate PDF documents that are password protected. Additionally, you can set the password for your document manually or configure a logic that allows Catalyst to auto generate a password for you. PDF & Screenshot further allows you to customize the layout, style the document per your preference and generate visual documents in a format ({{%badge%}}.webp{{%/badge%}}, {{%badge%}}.png{{%/badge%}}, or {{%badge%}}.pdf{{%/badge%}}) of your choice. You can use the following input types to generate visual documents of webpages using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generate-pdf--screenshots-through-playground/" %}}Playground{{%/link%}} feature present in the console: - **HTML Code**: You can paste the HTML code of your input page in the editor, and also tailor the UI of the page in the way you require the visual document to be generated. <br /> - **URL**: You can simply enter the URL of the webpage and generate a PDF or a screenshot of it. <br /> - **Templates**: You can also generate screenshots or PDF from a custom template that you create and store using the {{%link href="/en/smartbrowz/help/templates/introduction/" %}}Templates{{%/link%}} component in Catalyst SmartBrowz. These templates can be configured and styled per your preference and used to generate visual documents that can be loaded with dynamic content and are password protected. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} The {{%italics%}}Playground{{%/italics%}} comes loaded with pre-engineered inputs in the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generate-pdf--screenshots-through-playground" %}}HTML Code and URL{{%/link%}} sections. You can directly use them to explore the component.{{%/note%}} You can also implement the PDF & Screenshot component through code. The SDKs required to implement this functionality are provided in the following programming languages: * {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" %}}Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" %}}NodeJS SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" %}}Python SDK{{%/link%}} You can also generate PDFs and screenshots using this {{%link href="/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput" %}}API{{%/link%}}. The required SDKs to produce PDF & Screenshot through code will also be provided to you in the console under {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}SDK Code Snippets{{%/link%}} section of the component. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Benefits" description: "Take PDFs and screenshots of web pages or documents programmatically or in the console, based on an input format type of your preference." last_updated: "2026-03-18T07:41:08.668Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/pdfnscreenshot/benefits/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Benefits * You can generate visual documents of any webpage instantly and programmatically using its URL from the console without any additional coding requirements. * You can view the UI of any website or web application as it appears on popular smart devices of varying resolutions and screen sizes- mobiles, tablets, monitors, etc., by using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/" %}}Screenshot feature{{%/link%}}. * You can implement additional CSS and JavaScript styling options to tailor the visual documents to your preference before generating PDFs or screenshots. * You can use the {{%link href="/en/smartbrowz/help/templates/introduction/" %}}Templates{{%/link%}} component to customize and store templates of documents or webpages, and use the PDF and Screenshots to generate these visual documents with dynamic content. * You can generate PDFs of confidential documents by generating them as {{%link href="/en/smartbrowz/help/templates/customize-templates/#password-protected-pdfs" %}}password protected PDFs{{%/link%}}, and the password can either be set by you manually or you can configure a logic that allows you to generate dynamic passwords. * You have multiple input options to use per your preference and you also have customizable options to generate the PDF or Screenshot a webpage per your preference. -------------------------------------------------------------------------------- title: "Use Cases" description: "Take PDFs and screenshots of web pages or documents programmatically or in the console, based on an input format type of your preference." last_updated: "2026-03-18T07:41:08.668Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/pdfnscreenshot/use-cases/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Use Cases * In the current market, there are countless smart devices that people use to work out of or consume content. It is important to produce a web application that performs optimally across all these devices. But to test your application on all these devices is time-consuming, and requires a lot of expensive resources. Here, by using the **Select Device** option in the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/" %}}Screenshot feature{{%/link%}} of *PDF & Screenshot*, you can view how your UI appears in all the popular PDAs. * A great way for a business to educate their users is by conducting workshops. Providing a "**Certificate of Accomplishment**" is a great way to incentivize the users and add credibility to your brand. However, generating these certificates can be a redundant and time-consuming task. By implementing the {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} component in a microservice, you can design certificates with dynamic content and take PDFs or screenshots of it using the *PDF & Screenshot* component. * Generating confidential documents like payslips, invoices, or any other pertinent HR document is a common process in any company. These documents tend to follow a standard layout that contains dynamic values and privacy is the strictest requirement for these type of documents. Since these documents are generally sent to employees or vendors through email, if these documents do not have the right safeguards they can be compromised. Manually preparing and distributing these documents to right recipients while ensuring confidentiality can be a difficult task. Using the {{%link href="/en/smartbrowz/help/templates/introduction/" %}}Templates{{%/link%}} and the PDF & Screenshot components, companies can now generate documents that are {{%link href="/en/smartbrowz/help/templates/customize-templates/#password-protected-pdfs" %}}password protected{{%/link%}}. You can configure and design the ideal template, load dynamic values and generate the required document as a **password protected PDF**. Furthermore, you can set the password to be generated dynamically, ensuring that the generated password is strong and only opened by the right users. -------------------------------------------------------------------------------- title: "Implementation" description: "Take PDFs and screenshots of web pages or documents programmatically or in the console, based on an input format type of your preference." last_updated: "2026-03-18T07:41:08.668Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/pdfnscreenshot/implementation/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Implementation Navigate to the *PDF & Screenshot* component present in the **SmartBrowz** section in your Catalyst console. PDF & Screenshot enables you to generate visual documents of any webpage. You can use this component in two ways: - {{%bold%}}Using SDKs{{%/bold%}} <br /> - {{%bold%}}Using the Playground feature{{%/bold%}} <br /> ### Generate PDF & Screenshots Through Code Catalyst provides you the required SDKs to generate PDF & Screenshots in the following frameworks: * {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" %}}Java SDK{{%/link%}} * {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" %}}NodeJS SDK{{%/link%}} * {{%link href="/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" %}}Python SDK{{%/link%}} You can also use this {{%link href="/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput" %}}Catalyst API{{%/link%}} to generate visual documents in your preferred format. Based on your preferred programming language, you can copy and paste the below code snippets in your application logic to generate visual documents: ### Java SDK {{% panel_with_adjustment header="Java SDK to Generate Visual Documents" footer="button" class="language-java linenumber" scroll="set-scroll" %}}// initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // generate output from a predefined template ZCSmartBrowzConvertDetails convertDetailsForTemplateConversion = ZCSmartBrowzConvertDetails.getInstance(); convertDetailsForTemplateConversion.setTemplateId(YOUR_TEMPLATE_ID); smartBrowz.generateFromTemplate(convertDetailsForTemplateConversion); // convert to PDF from HTML ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); convertDetailsForPDF.setHtml("YOUR_HTML_CODE"); smartBrowz.takeScreenshot(convertDetailsForPDF); // take a screenshot from URL ZCSmartBrowzConvertDetails convertDetailsForScreenshot = ZCSmartBrowzConvertDetails.getInstance(); convertDetailsForScreenshot.setUrl("YOUR_URL"); smartBrowz.convertToPdf(convertDetailsForScreenshot); {{% /panel_with_adjustment %}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} This code snippet contains the individual logic to accept any of acceptable input and generate PDF and Screenshot. When you copy the snippet, ensure you retain the lines of code that are pertinent to your requirement and omit the rest.{{%/note%}} ### Node.js SDK {{% panel_with_adjustment header="Node.js SDK to Generate Visual Documents" footer="button" class="language-javascript linenumber" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz(); // Generate output from template smartbrowz.generateFromTemplate("YOUR_TEMPLATE_ID", {"template_data": YOUR_TEMPLATE_DATA} ) .then((data)=>{ // On Success }).catch((err)=>{ // On Error }) // Convert PDF from HTML smartbrowz.convertToPdf("YOUR_HTML_CODE", { "pdf_options": {}, "page_options": {} }).then((data)=>{ // On Success }).catch((err)=>{ // On Error }); // Capture a Screenshot from URL smartbrowz.takeScreenshot("YOUR_URL", { "screenshot_options": { "type": "jpeg" //Provide either jpg or png }, "page_options": { "device": "iPad" //Provide a device of your prefrence } }).then((data)=>{ // On Success }).catch((err)=>{ // On Error }) {{% /panel_with_adjustment %}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} This code snippet contains the individual logic to accept any of acceptable input and generate PDF and Screenshot. When you copy the snippet, ensure you retain the lines of code that are pertinent to your requirement and omit the rest.{{%/note%}} ### Python SDK {{% panel_with_adjustment header="Python SDK to Generate Visual Documents" footer="button" class="language-python linenumber" scroll="set-scroll" %}}# initialize smartbrowz instance smart_browz = app.smart_browz() # generate output from a predefined template output_template = smart_browz.generate_output_from_template( template_id='YOUR_TEMPLATE_ID', template_data={}, output_type='pdf', // You can determine the format of your visual document here pdf_options={}, navigation_options={} ) # convert to PDF from HTML output_pdf = smart_browz.convert_to_pdf(source='YOUR_HTML_CODE') # take a screenshot from URL output_screenshot = smart_browz.take_screenshot( source='YOUR_URL', screenshot_options={ 'quality': '100' }, page_options={ 'device': 'iphone 13 pro' //Provide a device of your prefrence }, navigation_options={ 'timeout': '3000', 'wait_until': 'domcontentloaded' } ) {{% /panel_with_adjustment %}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} This code snippet contains the individual logic to accept any of acceptable input and generate PDF and Screenshot. When you copy the snippet, ensure you retain the lines of code that are pertinent to your requirement and omit the rest.{{%/note%}} These code snippets are available under the **SDK Code Snippets** section of the PDF & Screenshot component in the console. You can copy the code of the stack you require and incorporate it in your business logic. <br /> You can also use this {{%link href="/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput" %}}API{{%/link%}} to generate PDF & Screenshots. You can execute this API directly after {{%link href="/en/api/oauth2/overview-and-terminology/#OverviewandTerminology" %}}authenticating your request{{%/link%}}. {{%note%}}{{%bold%}}Note:{{%/bold%}} These code snippets are also available in the respective framework's {{%link href="/en/getting-started/catalyst-sdk/" %}}SDK documentation{{%/link%}}.{{%/note%}} ### Generate PDF & Screenshots Through Playground Playground is available in the console for you to generate visual documents immediately or test this feature before incorporating it into your logic. The Playground itself comes loaded with pre-engineered inputs for you to test the functionality of the component. You can generate visual documents of webpages in the console by providing the input in three different ways: {{%tabs%}} {{%tab "HTML Code" %}} ### HTML Code 1. Select the **HTML Code** option in the *Select Input Type* section. <br /> You can either customize the code present in the HTML code editor or paste your own code. 2. Select the required format from the *Select Output Format* drop-down. <br /> 3. This is an optional step, but you can customize your visual document by applying custom styling elements and layout and other aesthetic configurations using the options present in the **Show Advanced Styling Options** section. <br /> You can also use this section to password protect the generated visual document by setting up a password in the **Set Password** section. 4. Click **Generate**. <br /> A preview of the visual document you generated will be shown in a pop-up. Click **Download**, to save the document in your local system. If you have password protected your PDF, then the preview and download options will only be made active after you enter the password. <br /> {{%/tab%}} {{%tab "URL" %}} ### URL You can generate a visual document of a webpage of your preference by directly entering its URL. 1. Click the **URL** button to use URL as the input type. 2. Enter the required URL in the *Enter Web Page URL* input field. <br /> 3. Select the required format from the *Select Output Format* drop-down. <br /> 4. This is an optional step, but you can customize your visual document by applying custom styling elements and layout and other aesthetic configurations using the options present in the **Show Advanced Styling Options** section. <br /> You can also use this section to password protect the generated visual document by setting up a password in the **Set Password** section. 5. Click **Generate**. <br /> If you have password protected your PDF, then the preview and download options will only be made active after you enter the password. <br /> {{%/tab%}} {{%tab "Templates" %}} ### Templates {{%note%}}{{%bold%}}Note:{{%/bold%}} Note: You can only this feature if you have previously created and saved template using the {{%link href="/en/smartbrowz/help/templates/introduction/" %}}Templates{{%/link%}} component.{{%/note%}} 1. Click the **Template** button to set templates as the input type. 2. Select your preferred template from the *Template* drop-down. <br /> 3. You can provide the data for the visual document as a JSON input through the editor present in this section. <br /> 4. Click **Generate**. <br /> A preview of the visual document you generated will be shown in a pop-up. Click **Download**, to save the document in your local system. {{%note%}}{{%bold%}}Note:{{%/bold%}} * Prior to generating a visual document, since your input type is {{%italics%}}Templates{{%/italics%}} you would have chosen the layout, the styling elements and all the other aesthetic features of the visual document, while you were creating and designing the template. You can find out how to customize a template from this {{%link href="/en/smartbrowz/help/templates/customize-templates/" %}}section{{%/link%}}. * Because you are using {{%italics%}}Templates{{%/italics%}} to generate your password protected PDF, you have an option to code a logic that allows you to set the password dynamically. You can find out more about this feature in this {{%link href="/en/smartbrowz/help/templates/customize-templates/#password-protected-pdfs" %}}section{{%/link%}}.{{%/note%}} If you have password protected your document, then the preview and download options will only be made active after you enter the password. <br /> {{%/tab%}} {{%/tabs%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} ### Templates -------------------------------------------------------------------------------- title: "Introduction" description: "Create, configure, and manage templates of webpages or documents using which you can generate visual documents with PDF and Screenshot." last_updated: "2026-03-18T07:41:08.670Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/templates/introduction/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Introduction Templates is a component of {{%link href="/en/smartbrowz/" %}}Catalyst SmartBrowz{{%/link%}} where you can create, design and store templates of webpages, documents, and more, that you can use to generate {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} with dynamic content. <br /> Using basic front-end scripting languages you can style templates suited to your needs, and generate any visual document. You can design your templates from scratch or use pre-built templates of various sample documents and customize them per your preference. Additionally you can also configure your templates to generate password protected PDFs where the password for the document can be set manually or be generated dynamically. The basic scripting and styling elements that you can incorporate into your templates for design, visual styling, and testing with dynamic input include: * HTML * CSS * JavaScript * JSON <br /> You can also configure the layout and the orientation of the templates you save, and set passwords, choose output format, style, orientation and more of the visual documents generated using the template. The console also provides you with a preview to aid you while you design your template. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} <br /> -------------------------------------------------------------------------------- title: "Create a Template" description: "Create, configure, and manage templates of webpages or documents using which you can generate visual documents with PDF and Screenshot." last_updated: "2026-03-18T07:41:08.670Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/templates/create-templates/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Create a Template 1. Navigate to the **Template** component present under *CONVERT* section in SmartBrowz from the console, and click **Create Template**. <br /> 2. Enter a **Template Name** and select a template design. You can select from one of the pre-configured templates, or select **Custom** to design a template from scratch. <br /> You can see a preview of each pre-engineered style of template by clicking the **zoom-icon**. <br /> 3. Click **Create**. <br /> The required template will be created. -------------------------------------------------------------------------------- title: "Customize a Template" description: "Create, configure, and manage templates of webpages or documents using which you can generate visual documents with PDF and Screenshot." last_updated: "2026-03-18T07:41:08.670Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/templates/customize-templates/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Customize a Template Once you have chosen a template design, you will be directed to the template editor inbuilt in the console that allows you to customize your template and further style it to your preference. For this help document, we will illustrate customizing a template using the *Certificate* template. You will have respective editor sections for HTML, CSS and JavaScript to style and customize your template directly in the console, as shown below. <br /> ### Using LiquidJS to Customize Your Templates Catalyst SmartBrowz supports the use of {{%link href="https://liquidjs.com/" %}}LiquidJS{{%/link%}} to customize your templates. LiquidJS is a popular opensource templating language that you can leverage to quickly create templates to suit your requirements. The content, the JSON data (Dyanmic data) that you load on to your template is subject to change based on your requirement. Using LiquidJS to customize your templates allows you to leverage the native filters to seamlessly handle this dynamic data. The dynamic data to your template will have to passed as a JSON paylod. For example, consider you are using the **Certificate** template, then the JSON payload will need to look like this: {{%code class="language-json" scroll="set-scroll" %}}{ "name": "Michelle Mascarenhas", "workshop_name": "Serverless Computing", "event_duration": "one day", "event_description": "building cutting-edge cloud applications", "team_name": "Zylker Technologies ", "event_name": "Zylker Technologies Pvt. Ltd.,", "event_location": "Manhattan, NewYork", "event_date": "20th February 2025" }{{%/code%}} <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} SmartBrowz currently supports the {{%badge%}}**v10**{{%/badge%}} runtime of LiquidJS.{{%/note%}} #### LiquidJS Syntax The following table contains the necessary LiquidJS syntax that you can apply to your templates to customize them to handle dynamic JSON data. <table class="content-table"> <thead> <tr> <th class="w30p">Tag Type</th> <th class="w70p">LiquidJS Syntax</th> </tr> </thead> <tbody> <tr> <td>{{%bold%}}Output{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll" %}}{{ user.name }}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Logic (Control Flow){{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% if user.role == "admin" %} Welcome, Admin! {% else %} Welcome, User! {% endif %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Loops (For Statement){{%/bold%}}<br />Iterating over an array</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% for item in items %} {{ item.name }} {% endfor %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Loops (For Statement){{%/bold%}}<br />Using Iterable Object</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% for item in items %} {{ forloop.index }}: {{ item.name }} {% endfor %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Filters{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{{ "hello" | append: " world" }} {{ 1000 | divided_by: 2 }} {{ "LiquidJS" | upcase }}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Date Formatting{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{{ "now" | date: "%Y-%m-%d %H:%M:%S" }} {{ "2025-02-07" | date: "%B %d, %Y" }}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Assign and Capture{{%/bold%}}<br />Assign variables inside templates</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% assign greeting = "Hello" %} {{ greeting }} World{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Assign and Capture{{%/bold%}}<br />Capture multi-line values</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% capture message %} This is a multi-line text. {% endcapture %} {{ message }}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Comments{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% comment %} This is a comment and will not be rendered. {% endcomment %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Default Filters{{%/bold%}}<br />Will display the value you set as default, if no value is provided.</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}&lt;p&gt;Name: {{ user.name | default: "Guest" }}&lt;/p&gt;{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Conditionals with {{%badge%}}unless{{%/badge%}}{{%/bold%}}<br />The functions as the opposite of an {{%badge%}}if{{%/badge%}} statement.<br />The logic under an {{%badge%}}unless{{%/badge%}} block will only be executed if the condition is false.</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% unless user.role == "admin" %} &lt;p&gt;You are not an Admin&lt;/p&gt; {% endunless %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Case/When Conditions{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% case user.role %} {% when "admin" %} &lt;p&gt;Admin Page&lt;/p&gt; {% when "user" %} &lt;p&gt;User Page&lt;/p&gt; {% else %} &lt;p&gt;Unknown Role&lt;/p&gt; {% endcase %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Raw Output{{%/bold%}}<br />To be used to print Liquid code without rendering it. Generally, used for documentation purposes</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% raw %} This is raw Liquid syntax: {{ user.name }} {% endraw %}{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Array and Object Filters{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}&lt;p&gt;First Item: {{ items | first }}&lt;/p&gt; &lt;p&gt;Item Count: {{ items | size }}&lt;/p&gt;{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Math Filters{{%/bold%}}<br />To use math operators within the template</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}&lt;p&gt;Discounted Price: {{ price | minus: 10 }}&lt;/p&gt; &lt;p&gt;Total Price: {{ price | times: 1.1 }}&lt;/p&gt;{{%/code%}}</td> </tr> <tr> <td>{{%bold%}}Rendering Partial Templates{{%/bold%}}</td> <td>{{%code class="language-javascript" scroll="set-scroll"%}}{% render 'header' %}{{%/code%}}</td> </tr> </tbody> </table> {{%info%}}{{%bold%}}Info:{{%/bold%}} You can learn more about LiquidJS from their official documentation {{%link href="https://liquidjs.com/" %}}here{{%/link%}}.{{%/info%}} #### Example HTML Code With LiquidJS The following code snippet aims to serve as an example illustrating the use of LiquidJS in the HTML code to customize your template. {{% panel_with_adjustment header="example.html" footer="button" scroll="set-scroll" class="language-xml linenumber" %}}&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;Dashboard - {{ user.name }}&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- Header --&gt; &lt;header&gt; &lt;h1&gt;Hello, {{ user.name | default: "Guest" }}&lt;/h1&gt; {% if user.role == "admin" %} &lt;p class="admin"&gt;You have administrator access.&lt;/p&gt; {% else %} &lt;p class="user"&gt;Standard user access granted.&lt;/p&gt; {% endif %} &lt;/header&gt; &lt;!-- Items Section --&gt; &lt;section&gt; &lt;h2&gt;Your Items&lt;/h2&gt; &lt;ul&gt; {% for item in items %} &lt;li&gt;{{ forloop.index }}. {{ item.name }}&lt;/li&gt; {% endfor %} &lt;/ul&gt; &lt;p&gt; &lt;strong&gt;First Item:&lt;/strong&gt; {{ items | first | map: "name" }}&lt;/p&gt; &lt;p&gt; &lt;strong&gt;Total Items:&lt;/strong&gt; {{ items | size }}&lt;/p&gt; &lt;/section&gt; &lt;!-- Pricing Section --&gt; &lt;section&gt; &lt;h2&gt;Price Breakdown&lt;/h2&gt; &lt;p&gt;Original Price: ${{ price }}&lt;/p&gt; &lt;p&gt;After Discount ($10 off): ${{ price | minus: 10 }}&lt;/p&gt; &lt;p&gt;After Tax (10%): ${{ price | times: 1.1 }}&lt;/p&gt; &lt;p&gt;Half Price: ${{ price | divided_by: 2 }}&lt;/p&gt; &lt;/section&gt; &lt;!-- Time Section --&gt; &lt;section&gt; &lt;h2&gt;Date & Time&lt;/h2&gt; &lt;p&gt;Current Timestamp: {{ "now" | date: "%Y-%m-%d %H:%M:%S" }}&lt;/p&gt; &lt;p&gt;Next Billing Date: {{ "2025-02-07" | date: "%B %d, %Y" }}&lt;/p&gt; &lt;/section&gt; &lt;!-- Custom Message --&gt; &lt;section&gt; &lt;h2&gt;Message&lt;/h2&gt; {% assign greeting = "Hello" %} &lt;p&gt;{{ greeting }} {{ user.name }}!&lt;/p&gt; {% if custom_message %} &lt;div class="custom-message"&gt; {{ custom_message }} &lt;/div&gt; {% else %} &lt;div class="custom-message"&gt; No custom message provided. &lt;/div&gt; {% endif %} &lt;/section&gt; &lt;!-- User Role Case --&gt; &lt;section&gt; &lt;h2&gt;Role Based Content&lt;/h2&gt; {% case user.role %} {% when "admin" %} &lt;p&gt;You are on the &lt;strong&gt;Admin Dashboard&lt;/strong&gt;.&lt;/p&gt; {% when "user" %} &lt;p&gt;You are on the &lt;strong&gt;User Dashboard&lt;/strong&gt;.&lt;/p&gt; {% else %} &lt;p class="alert"&gt;Unknown role. Please contact support.&lt;/p&gt; {% endcase %} {% unless user.role == "admin" %} &lt;p class="alert"&gt;You are not an admin.&lt;/p&gt; {% endunless %} &lt;/section&gt; &lt;!-- Raw Display --&gt; &lt;section&gt; &lt;h2&gt;Liquid Syntax Example&lt;/h2&gt; {% raw %} To print user name: {{ user.name }} {% endraw %} &lt;/section&gt; &lt;/body&gt; &lt;/html&gt; {{% /panel_with_adjustment %}} ### Templates in Draft Mode You can customize the HTML, CSS, and JavaScript code based on your requirements. You can use the JSON Data section to pass custom input data to the template. <br /> To render the changes you make in the editor, you can click the **Save as Draft** button. <br /> This will allow you to view the changes you make to your template without affecting the published version. <br /> You can always, view the published version of the template by clicking the **View Published Version** button. <br /> Once you've completed your required edits, you can render them live by clicking the **Save & Publish** button. <br /> This action will **delete the current live version** and render your draft as the live version of the template. ### Discard Drafts If you happen to be unsatisfied with your edits and wish to remove all changes to your draft, in essence, restore your template to its latest published version, then you can simply discard the draft. To discard a draft: 1. Click the **Discard Draft** button. <br /> 2. Click **Confirm** to discard the draft. <br /> The draft will be deleted. The code and configurations rendering your template to the latest live version will be restored in the editor. ### Customize the Orientation and Layout of the Template Using the **Settings** section, you can password protect your visual document, style the layout and the orientation of the document and also decide your output format. <br /> In this section, use the various drop-down selections to customize the following features of your template: #### Output Format You can generate outputs for your template in the following formats: * PDF * HTML (Rendered): The **HTML (Rendered)** output format downloads the template as HTML code. All of the templates styling, configurations and the template itself will be downloadable as HTML code. * PNG, JPEG. <br /> #### Paper size SmartBrowz Templates provides you with all the **ISO 216** paper size options including a *Custom* option to design your template's paper layout <br /> #### Orientation SmartBrowz Templates provides you with the option to choose the orientation of your template. You have the option to generate your template in the **Landscape** or **Portrait** orientation. <br /> #### Background graphics SmartBrowz Templates provides you with the option to **Enable** or **Disable** background graphics for your template. <br /> #### Advanced Styling Options You can further change the margin-orientation of your template, by clicking **Show Advanced Styling Options**. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} * While configuring your document's {{%italics%}}Header{{%/italics%}} and {{%italics%}}Footer{{%/italics%}}, you can either provide values in the input field, or you can code your customization in HTML by selecting the {{%bold%}}HTML Code{{%/bold%}} option. * While inputting values for the {{%italics%}}Header{{%/italics%}} and {{%italics%}}Footer{{%/italics%}}, ensure you provide it as 10px or above to view the change in the preview section.{{%/note%}} ### Password Protected PDFs *Templates* allows you to password protect documents that are generated using a template. You can either manually set the password for your template, or you can code a logic that instructs Catalyst to set a password dynamically. {{%note%}}{{%bold%}}Note:{{%/bold%}} To password protect your visual document, the {{%italics%}}Output Format{{%/italics%}} of your document has to be PDF.{{%/note%}} To password protect PDFs, click the **Set Password for PDF** toggle: <br /> 1. There are two ways you can set a password for your PDF: * By default, the **Set Password Manually** option will be selected. Choosing this option, allows you to set the password for your PDF in the *Playground* section of the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component. <br /> {{%note%}}{{%bold%}}Note:{{%/bold%}} You can also manually set the password for your PDF using this {{%link href="/en/api/code-reference/smartbrowz/generate-pdfnscreenshottemplate/#PDF%26ScreenshotwithTemplateasInput" %}}API{{%/link%}} by passing your password for the document as a JSON key value pair "{{%bold%}}password{{%/bold%}}" inside the "{{%badge%}}pdf_options{{%/badge%}}" JSON.{{%/note%}} * Click the **Set Password Dynamically** option to code a custom logic that ensures each time a PDF is generated from the template, based on the logic you coded a password will be set for the document automatically. <br /> For this help documentation, we have implemented the code snippet shown below: {{% panel_with_adjustment header="Sample Logic" footer="button" class="language-javascript linenumber" scroll="set-scroll" %}}module.exports = (jsonData) => { // Extract the first four letters from client.name const clientName = jsonData.client.data[0].name.trim(); // Remove leading/trailing spaces const firstNameLetters = clientName.substring(0, 4); // Extract the last four digits from client.phn const clientPhone = jsonData.client.data[0].phn.trim(); // Remove leading/trailing spaces const lastFourDigits = clientPhone.slice(-4); const password = ${firstNameLetters}${lastFourDigits}; //so password will be "Amel2782" return password; }; {{% /panel_with_adjustment %}} The value for {{%badge%}}jsonData{{%/badge%}} input is shown below: {{% panel_with_adjustment header="jsonData" footer="button" class="language-json linenumber" scroll="set-scroll" %}}{ "address": { "name": "107 Traction Street,Green Ville", "postal": "South carolina-600028" }, "client": { "data": [ { "name": "Amelia Burrows", "phn": "+1-212-6782782", "start": "Monday,Feburary,28,2019", "end": "Monday,March,28,2019" } ] } } {{% /panel_with_adjustment %}} The PDF document generated from this template will have a password pattern that is a combination of their first name and last digits of their phone number. 2. Click **Save & Publish**, to apply the password protection to your template. {{%note%}}{{%bold%}}Note:{{%/bold%}} If you click {{%bold%}}Save as Draft{{%/bold%}}, then the password protection will not be applied to the live version of the template.{{%/note%}} Once you have completed all the customizations to your template, you can access your this template at any time from the *Templates* component. <br /> -------------------------------------------------------------------------------- title: "Manage Templates" description: "Create, configure, and manage templates of webpages or documents using which you can generate visual documents with PDF and Screenshot." last_updated: "2026-03-18T07:41:08.671Z" source: "https://docs.catalyst.zoho.com/en/smartbrowz/help/templates/managing-templates/" service: "SmartBrowz" -------------------------------------------------------------------------------- # Manage Templates After you create a template, you can perform the following operations on it: * Rename * Duplicate * Delete You can perform these operations from two places in the console: - In the *Template* component section: <br /> - While you are designing the template by clicking the ellipsis icon: <br /> ### Rename a Template To rename a template: 1. Click the **ellipsis icon** present on the card of the template you wish to rename, and click **Rename**. <br /> 2. Input the new name of the template and click **Update**. <br /> 3. The template will be renamed. <br /> ### Duplicate a Template To create an exact duplicate of an existing template: 1. Click the **ellipsis-icon** present on the card of the template you wish to duplicate, and click **Duplicate**. <br /> 2. Provide a new name for the template and click **Duplicate**. <br /> 3. The duplicate template will be created. <br /> You can now customize this duplicated template further, if you require. ### Delete a Template To delete a template: 1. Click the **ellipsis icon** present on the card of the template you wish to delete, and click **Delete**. <br /> 2. Click **Delete**, to confirm the operation. <br /> The template will be deleted. <br /> --- ## API Reference — SmartBrowz -------------------------------------------------------------------------------- title: "PDF & Screenshot with HTML or URL as Input" description: "This API enables you to generate PDF & Screenshots for browser testing through the Catalyst SmartBrowz headless browser service." last_updated: "2026-03-18T07:41:08.688Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/" id="PDF&ScreenshotwithHTMLorURLasInput" %}} {{%divtag class="LeftContent"%}} # PDF & Screenshot {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} is a component of SmartBrowz that lets you generate visual documents of websites and web applications. It is a powerful tool that can be used to convert webpages to PDF, to use during UI debugging, and to understand visual components from end-users’ perspective, while implementing permitted crawling operations, just to name a few. You can introduce this functionality in your Catalyst application using the API below. ## Generate PDF Using HTML/URL ### PDF Description You can use this API to generate PDF documents of webpages by using HTML code or URL as your input. ### PDF Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/browser360/v1/project/{project_id}/convert</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.pdfshot.EXECUTE {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%/scope%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="display_header_footer" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to show the header and footer of the webpag.<br> Default: {{%badge%}}false{{%/badge%}}. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="footer_template" textformat="string" condition="optional" maxlength=" " %}} HTML template for the print footer. Has the same constraints and support for special classes as {{%badge%}}PDFOptions.headerTemplate{{%/badge%}}.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="format" textformat="PaperFormat" condition="optional" maxlength=" " %}} Size of the paper. Example: A4, A3.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="yes" title="header_template" textformat="string" condition="optional" maxlength=" " %}}HTML template for the print header. Should be valid HTML with the following classes to inject values into them: {{% nested_button%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="date" textformat="string" condition="optional" maxlength="" %}}Formatted print date{{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="title" textformat="string" condition="mandatory" maxlength="" %}}Title of the document{{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="url" textformat="string" condition="mandatory" maxlength="" %}}URL of the document{{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="page_number" textformat="string" condition="optional" maxlength="" %}}Current page number{{% /nested_fields %}} {{%/request_id%}} {{%request_id%}}{{% nested_fields children="open" border="no" expandable="no" title="total_pages" textformat="string" condition="optional" maxlength="" %}}Total pages in the document{{% /nested_fields %}} {{%/request_id%}} {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="landscape" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to print in a landscape orientation{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="margin" textformat="PDFMargin" condition="optional" maxlength=" " %}}Set the PDF margins{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="omit_background" textformat="boolean" condition="optional" maxlength=" " %}}Hides the default white background and allows generating PDFs with a transparent background{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="page_ranges" textformat="string" condition="optional" maxlength=" " %}}Paper ranges to print. Example: 1-5, 8, 11-13.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="prefer_css_pageSize" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to prioritize the CSS @page size declared in the page over what is declared in the width, height, or format option{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="print_background" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to print the background graphics{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="scale" textformat="number" condition="optional" maxlength=" " %}}Scales the rendering of the web page. Acceptable Values: Between 0.1 and 2.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="timeout" textformat="number" condition="optional" maxlength=" " %}}Timeout in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="width" textformat="string | number" condition="optional" maxlength=" " %}}Sets the width of paper. You can pass in a number or a string with a unit.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="timeout" textformat="number" condition="optional" maxlength=" " %}}Maximum wait time in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout.<br /><br/>The default value can be changed by using the <br />{{%badge%}}page.set_default_timeout(){{%/badge%}} or {{%badge%}}page.set_default_navigation_timeout(){{%/badge%}} methods.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="wait_until" textformat="string | number" condition="optional" maxlength=" " %}}{{% /nested_fields %}} ### PDF Response Details The response will return the PDF document generated. <br> <br> ## Generate Screenshot Using HTML/URL ### Screenshot Description You can use this API to generate screenshots of webpages using HTML code or URL as your input. ### Screenshot Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/browser360/v1/project/{project_id}/convert</p>{{%/request%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.pdfshot.EXECUTE {{%/scope%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="capture_beyond_viewport" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to capture the screenshot beyond the viewport{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="clip" textformat="screenshot_clip" condition="mandatory" maxlength=" " %}}Object that specifies the clipping region of the page{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="encoding" textformat="'base64' | 'binary'" condition="mandatory" maxlength=" " %}}Encoding of the image{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="from_surface" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to capture the screenshot from the surface rather than the view.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="full_page" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to take a screenshot of the entire page{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="omit_background" textformat="boolean" condition="mandatory" maxlength=" " %}}Hides the default white background and allows capturing screenshots with a transparent background{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="quality" textformat="number" condition="optional" maxlength=" " %}}Quality of the image. Not applicable to **.png** images. Acceptable Values: Between {{%badge%}}0{{%/badge%}} to {{%badge%}}100{{%/badge%}}. Maximum wait time in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="wait_until" textformat="string | number" condition="optional" maxlength=" " %}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="password" textformat="string" condition="optional" maxlength=" " %}}Will hold the value of the password that protets your PDF document.{{% /nested_fields %}} ### Screenshot Response Details The response will return a screenshot that was generated. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - PDF from HTML/URL" class="language-json" %}} curl -X POST \ 'https://api.catalyst.zoho.com/browser360/v1/project/10470000000272001/convert' -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H 'Content-Type: application/json' --d '{ "url": "https://www.example.com", "output_options": { "output_type": "pdf" }, "pdf_options" : { "scale" : 1, "display_header_footer" : true, "header_template" : "&lt;style&gt; #header, #footer { margin: 0 !important; padding: 0 !important; font-size: 9px; -webkit-print-color-adjust: exact;}&lt;/style&gt;&lt;div style=\width:100%&gt;&lt;span class=\date\&gt;&lt;/span&gt;&lt;span class=\title\ style=\float:right\&gt;&lt;/span&lt;/div&gt;", "footer_template" : "&lt;style&gt; #header, #footer { margin: 0 !important; padding: 0 !important; font-size: 9px; -webkit-print-color-adjust: exact;}&lt;/style&gt;&lt;div style=\width:100%\&gt;&lt;span class=\url\&gt;&lt;/span&gt;&lt;div style=\float:right\&gt;&lt;span class=\pageNumber\&gt;&lt;/span&gt; / &lt;span class=\totalPages\&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;", "print_background" : false, "landscape" : false, "page_ranges" : "1", "format" : "A4", "width" : "100", "height" : "100", "margin" : { "top" : "1cm", "bottom" : "1cm", "left" : "1cm", "right": "1cm" }, "omit_background" : false }, "page_options":{ "css" : { "content" : "body{background: lightgrey}" }, "viewport" : { "width": 1440, "height": 900 }, "javascript_enabled" : true }, "navigation_options":{ "timeout" : 5000, "wait_until" : "networkidle0" } }' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Screenshot from HTML/URL" class="language-json" %}} curl -X POST \ 'https://api.catalyst.zoho.com/browser360/v1/project/10470000000272001/convert' -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H 'Content-Type: application/json' --d'{ "url": "https://www.example.com", "output_options": { "output_type": "screenshot" }, "screenshot_options": { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, "page_options": { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true }, "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } }' {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "PDF & Screenshot with Template as Input" description: "This API enables you to generate PDF & Screenshots." last_updated: "2026-03-18T07:41:08.688Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/generate-pdfnscreenshottemplate/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/generate-pdfnscreenshottemplate/" id="PDF&ScreenshotwithTemplateasInput" %}} {{%divtag class="LeftContent"%}} ## Generate PDF Using Templates {{%note%}}{{%bold%}}Note:{{%/bold%}} You need to {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}create a template{{%/link%}} in the console to use this API.{{%/note%}} ### Description You can use this API to generate PDF documents of webpages using {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. ### PDF Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/browser360/v1/project/{project_id}/convert</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.pdfshot.EXECUTE {{%/scope%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="display_header_footer" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to show the header and footer.<br> Default: {{%badge%}}false{{%/badge%}}. {{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="format" textformat="PaperFormat" condition="optional" maxlength=" " %}} Size of the paper. Example: A4, A3.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="landscape" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to print in landscape orientation.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="password" textformat="string" condition="optional" maxlength=" " %}}Pass the password value of the PDF document.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="omit_background" textformat="boolean" condition="optional" maxlength=" " %}}Hides the default white background and allows generating PDFs with a transparent background.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="page_ranges" textformat="string" condition="optional" maxlength=" " %}}Paper ranges to print. Example: 1-5, 8, 11-13.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="prefer_css_pageSize" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to prioritize the CSS @page size declared in the page over what is declared in the width, height, or format option{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="print_background" textformat="boolean" condition="optional" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to print the background graphics{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="scale" textformat="number" condition="optional" maxlength=" " %}}Scales the rendering of the web page. Acceptable Values: Between 0.1 and 2.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="timeout" textformat="number" condition="optional" maxlength=" " %}}Timeout in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="width" textformat="string | number" condition="optional" maxlength=" " %}}Sets the width of paper. You can pass in a number or a string with a unit.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="timeout" textformat="number" condition="optional" maxlength=" " %}}Maximum wait time in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout.<br /><br>The default value can be changed by using the <br />{{%badge%}}page.set_default_timeout(){{%/badge%}} or {{%badge%}}page.set_default_navigation_timeout(){{%/badge%}} methods.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="wait_until" textformat="string | number" condition="optional" maxlength=" " %}}{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="password" textformat="string" condition="optional" maxlength=" " %}}Will hold the value of the password that protets your PDF document.{{% /nested_fields %}} ### PDF Response Details The response will be a PDF that was generated. {{%note%}}{{%bold%}}Note:{{%/bold%}} * You need to {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}create a template{{%/link%}} in the console to use this API. * {{%italics%}}SmartBrowz Templates{{%/italics%}} offers you the option to set a password for the PDF document you generate using a template. If you employ the {{%bold%}}Set Password Manually{{%/bold%}} option, then you can use this API. This API cannot be used if you employ the {{%italics%}}Set Password Dynamically{{%/italics%}} option.{{%/note%}} ## Generate Screenshot Using Templates ### Screenshot Description You can use this API to generate screenshot of webpages, by using {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. ### Screenshot Request Details #### Request URL {{%request class="apiyellow" req="POST" %}}<p>{api-domain}/browser360/v1/project/{project_id}/convert</p>{{%/request%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.pdfshot.EXECUTE {{%/scope%}} #### Request JSON Properties {{% nested_fields children="open" border="yes" expandable="no" title="capture_beyond_viewport" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to capture the screenshot beyond the viewport{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="clip" textformat="screenshot_clip" condition="mandatory" maxlength=" " %}}Object that specifies the clipping region of the page{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="encoding" textformat="'base64' | 'binary'" condition="mandatory" maxlength=" " %}}Encoding of the image{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="from_surface" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to capture the screenshot from the surface, rather than the view{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="full_page" textformat="boolean" condition="mandatory" maxlength=" " %}}Pass the value as {{%badge%}}true{{%/badge%}} to take a screenshot of the entire page{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="omit_background" textformat="boolean" condition="mandatory" maxlength=" " %}}Hides the default white background and allows capturing screenshots with a transparent background{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="quality" textformat="number" condition="optional" maxlength=" " %}}Maximum wait time in milliseconds. Pass the value as {{%badge%}}0{{%/badge%}} to disable the timeout.<br /><br>The default value can be changed by using the <br />{{%badge%}}page.set_default_timeout(){{%/badge%}} or {{%badge%}}page.set_default_navigation_timeout(){{%/badge%}} methods.{{% /nested_fields %}} {{% nested_fields children="open" border="yes" expandable="no" title="wait_until" textformat="string | number" condition="optional" maxlength=" " %}}{{% /nested_fields %}} ### Screenshot Response Details The response will be a Screenshot that was generated. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - PDF from Templates" class="language-json" %}} curl -X POST \'https://api.catalyst.zoho.com/browser360/v1/project/10470000000272001/convert' -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H 'Content-Type: application/json' --d '{ "template_id":"367000000044001", "template_data":{}, "output_options": { "output_type": "pdf" }, "pdf_options" : { "scale" : 1, "display_header_footer" : true, "print_background" : false, "landscape" : false, "page_ranges" : "1", "format" : "A4", "width" : "100", "height" : "100", "omit_background" : false, "password": "Demo$" }, "page_options":{ "css" : { "content" : "body{background: lightgrey}" }, "viewport" : { "width": 1440, "height": 900 }, "javascript_enabled" : true }, "navigation_options":{ "timeout" : 5000, "wait_until" : "networkidle0" } }' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Screenshot from Templates" class="language-json" %}} curl -X POST \ 'https://api.catalyst.zoho.com/browser360/v1/project/10470000000272001/convert' -H "Authorization: Zoho-oauthtoken 1000.910*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*16.2f*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*57" \ -H 'Content-Type: application/json' -d '{ "template_id":"367000000044001", "template_data":{}, "output_options": { "output_type": "pdf" }, "screenshot_options" : { "type" : "jpeg", "quality" : 100, "full_page" : false, "omit_background" : false, "capture_beyond_viewport" : true, "clip" :{ "x" : 50, "y" : 100, "width" : 1000, "height": 100 } }, "page_options":{ &quot;css&quot; : { &quot;content&quot; : &quot;body{background: lightgrey}&quot; }, &quot;viewport&quot; : { &quot;width&quot;: 1440, &quot;height&quot;: 900 }, &quot;javascript_enabled&quot; : true }, "navigation_options":{ "timeout" : 5000, "wait_until" : "networkidle0" } }' {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/"%}}Generate PDF & Screenshot- Python SDK{{%/link%}}<br/><br/> {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} ### Browser Grid -------------------------------------------------------------------------------- title: "List all Browser Grids" description: "This API enables you to list all the browser grids that are present in your project." last_updated: "2026-03-18T07:41:08.697Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/list-all-grids/" id="ListallBrowserGrids" %}} {{%divtag class="LeftContent"%}} # Catalyst SmartBrowz {{%link href="/en/smartbrowz/getting-started/introduction/"%}}Catalyst SmartBrowz{{%/link%}} is a Catalyst browser service that enables you to manage and control a remote browser in Catalyst’s cloud environment through a wide range of components. These include Browser Grid, Browser Logic function, PDF & Screenshot, Templates, and more. # Browser Grid {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} is a component of Catalyst SmartBrowz that enables you to connect to headless browsers through custom configurations of Nodes and Browsers. ## List All Browser Grids ### Description You can use this API to get a list of all the grids that have been created for your project. ### PDF Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} ### Response Details You will receive a response containing details of all the grids that are present in the project. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get all Browser Grids" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid' \ -H 'CATALYST-ORG: 111737956' \ -H 'Content-Type: application/json' \ -H 'Authorization: Zoho-oauthtoken 1000.******************************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/"%}}Get All Browser Grids - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/"%}}Get All Browser Grids - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/"%}}Get All Browser Grids - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "List a Specific Browser Grid" description: "This API enables you to list a specific browser grid present in your project." last_updated: "2026-03-18T07:41:08.698Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/list-specific-grid/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/list-specific-grid/" id="ListaSpecificBrowserGrid" %}} {{%divtag class="LeftContent"%}} ## List a Specific Browser Grid ### Description You can use this API to list the details of a specific browser grid created in your project. The required grid will be referred to using its Grid ID. ### PDF Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} ### Response Details You will receive a response containing details of a specific grid. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Specific Grid" class="language-json" %}} curl -X PUT 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000006058' \ -H 'CATALYST-ORG: 111737956' \ -H 'Connection: keep-alive' \ -H 'Content-Type: application/json' \ -H 'Authorization: Zoho-oauthtoken 1000********************************************780' \ -d '{ "name": "grid_2", "memory": 1024, "max_nodes_count": 10, "max_session_count": 1, "endpoint_type": 1, "config_type": 1 }' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": { "id": "3970000000006058", "name": "play2", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/"%}}Get Specific Browser Grids - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/"%}}Get Specific Browser Grids - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/"%}}Get Specific Browser Grids - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Live Stats of the Grid" description: "This API enables you to live stats of a specific grid's performance." last_updated: "2026-03-18T07:41:08.699Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/live-stats-grid/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/live-stats-grid/" id="GetLiveStatsoftheGrid" %}} {{%divtag class="LeftContent"%}} ## Get Live Stats of the Grid ### Description You can use this API to get live stats of a specific grid's performance. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/stats?data_to_fetch=live_stats</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing live stats of a specific grid referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Live Stats of a Grid Using OAuth" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?data_to_fetch=live_stats' \ -H 'Authorization: Zoho-oauthtoken 1000*************************************f780' \ -H 'CATALYST-ORG: 111737956' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Live Stats of a Grid Using API Key" class="language-json" %}} curl -X GET / 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?data_to_fetch=live_stats' \ -H 'api-key: 961***********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": { "free_sessions": 5, "session_queue_size": 0, "node_count": 0, "session_count": 0, "is_hub_alive": false } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Node and Request Count of a Grid" description: "This API enables you to get stats on the Node and Request count of a grid." last_updated: "2026-03-18T07:41:08.699Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/get-node-req-count/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/get-node-req-count/" id="GetNodeandRequestCountofaGrid" %}} {{%divtag class="LeftContent"%}} ## Get Node and Request Count of a Grid ### Description You can use this API to get stats on the Node and Request count of a grid. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/stats?data_to_fetch=node_req_count&datetime_filter=Last+30+Days</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the maximum and average values of the node and request count stats of a specific grid referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Node and Request Count Using OAuth" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=node_req_count' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Node and Request Count Using API Key" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=node_req_count' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": { "avg_concurrent_node_count": "1", "max_concurrent_node_count": "1", "avg_concurrent_req_count": "0", "max_concurrent_req_count": "0" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Memory and CPU Usage of a Grid" description: "This API enables you to get the memory and CPU usage details of a specific grid." last_updated: "2026-03-18T07:41:08.699Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/get-cpu-memory-grid/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/get-cpu-memory-grid/" id="GetMemoryandCPUUsageofaGrid" %}} {{%divtag class="LeftContent"%}} ## Get Memory and CPU Usage of a Grid ### Description You can use this API to get the memory and CPU usage details of a specific grid. The required grid is referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/stats?data_to_fetch=memory_cpu_usage&datetime_filter=Last+30+Days</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the maximum and average values of the memory and CPU usage stats of a specific grid referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Live Stats of a Grid Using OAuth" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=memory_cpu_usage' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' \ -H 'catalyst-org: 111737956' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Live Stats of a Grid Using API Key" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=memory_cpu_usage' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": { "max_memory_usage": 926.65234375, "high_disk_usage_count": 0, "max_cpu_usage": 1.1011011011011012, "avg_memory_usage": 926.65234375, "avg_cpu_usage": 1.1011011011011012 } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Get Stats for Browser Rejections and Node Crashes" description: "This API enables you to get the stats on browsers that were rejected from spawning and nodes that crashed in a grid." last_updated: "2026-03-18T07:41:08.700Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/rejection-stats/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/rejection-stats/" id="GetStatsforBrowserRejectionsandNodeCrashes" %}} {{%divtag class="LeftContent"%}} ## Get Stats for Browser Rejections and Node Crashes ### Description You can use this API to get the stats on browsers that were rejected from spawning and nodes that crashed in a grid. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/stats?data_to_fetch=crashed_data&datetime_filter=Last+30+Days</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the number of browsers that were not allowed to spawn and nodes that crashed of a specific grid referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Rejections Stats for the Grid Using OAuth" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=crashed_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' \ {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Rejections Stats for the Grid Using API Key" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stats?datetime_filter=24+Hours&data_to_fetch=crashed_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": { "browser_req_reject_count": 0, "node_crashed_count": "0" } } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Browser Request Graph" description: "This API enables you to get data on the number of browser requests in the grid during 24 hours." last_updated: "2026-03-18T07:41:08.700Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/browser-request-graph/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/browser-request-graph/" id="BrowserRequestGraph" %}} {{%divtag class="LeftContent"%}} ## Browser Request Graph ### Description You can use this API to get data on the number of browser requests in the grid during 24 hours. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/graph-data?datetime_filter=24+Hours&data_to_fetch=req_graph_data</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the time and usage of the browser grid during 24 hours. The required grid is referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Data on the Number of Requests Using OAuth" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=req_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Data on the Number of Requests Using API Key" class="language-json" %}} curl -X GET \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=req_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": [ ["Sep 22 2025, 04:00 PM", 0.0], ["Sep 22 2025, 06:00 PM", 0.0], ["Sep 22 2025, 08:00 PM", 0.0], ["Sep 22 2025, 10:00 PM", 0.0], ["Sep 23 2025, 12:00 AM", 0.0], ["Sep 23 2025, 02:00 AM", 0.0], ["Sep 23 2025, 04:00 AM", 0.0], ["Sep 23 2025, 06:00 AM", 0.0], ["Sep 23 2025, 08:00 AM", 0.0], ["Sep 23 2025, 10:00 AM", 0.0], ["Sep 23 2025, 12:00 PM", 0.0], ["Sep 23 2025, 02:00 PM", 0.0], ["Sep 23 2025, 04:00 PM", 0.0], ["Sep 23 2025, 06:00 PM", 0.0] ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Node Count Graph" description: "This API enables you to get data on the number of nodes active in the grid during 24 hours." last_updated: "2026-03-18T07:41:08.700Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/node-count-graph/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/node-count-graph/" id="NodeCountGraph" %}} {{%divtag class="LeftContent"%}} ## Node Count Graph ### Description You can use this API to get data on the number of nodes active in the grid during 24 hours. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/graph-data?datetime_filter=24+Hours&data_to_fetch=node_graph_data</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the time and node count of a browser grid during 24 hours. The required grid is referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Graph Data On Node Count Using OAuth" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=node_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Graph Data On Node Count Using API Key" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=node_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": [ ["Sep 23 2025, 11:00 AM", 0.0], ["Sep 23 2025, 01:00 PM", 0.0], ["Sep 23 2025, 03:00 PM", 0.0], ["Sep 23 2025, 05:00 PM", 1.0], ["Sep 23 2025, 07:00 PM", 0.0], ["Sep 23 2025, 09:00 PM", 0.0], ["Sep 23 2025, 11:00 PM", 0.0], ["Sep 24 2025, 01:00 AM", 0.0], ["Sep 24 2025, 03:00 AM", 0.0], ["Sep 24 2025, 05:00 AM", 0.0], ["Sep 24 2025, 07:00 AM", 0.0], ["Sep 24 2025, 09:00 AM", 0.0], ["Sep 24 2025, 11:00 AM", 0.0], ["Sep 24 2025, 01:00 PM", 0.0] ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Memory Usage Graph" description: "This API enables you to get data on memory used by the grid during 24 hours." last_updated: "2026-03-18T07:41:08.701Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/memory-usage-graph/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/memory-usage-graph/" id="MemoryUsageGraph" %}} {{%divtag class="LeftContent"%}} ## Memory Usage Graph ### Description You can use this API to get data on memory used by the grid during 24 hours. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/graph-data?datetime_filter=24+Hours&data_to_fetch=memory_graph_data</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the time and node count of a browser grid during 24 hours. The required grid is referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Data on Memory Used by the Grid Using OAuth" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=memory_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Get Data on Memory Used by the Grid Using API Key" class="language-json" %}} curl -X GET 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=memory_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": [ { "time": "Sep 23 2025, 11:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 23 2025, 01:00 PM", "memory_usage_mb": 0.0 }, { "time": "Sep 23 2025, 03:00 PM", "memory_usage_mb": 0.0 }, { "time": "Sep 23 2025, 05:00 PM", "memory_usage_mb": 771.1453125 }, { "time": "Sep 23 2025, 07:00 PM", "memory_usage_mb": 0.0 }, { "time": "Sep 23 2025, 09:00 PM", "memory_usage_mb": 0.0 }, { "time": "Sep 23 2025, 11:00 PM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 01:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 03:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 05:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 07:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 09:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 11:00 AM", "memory_usage_mb": 0.0 }, { "time": "Sep 24 2025, 01:00 PM", "memory_usage_mb": 0.0 } ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "CPU Usage Graph" description: "This API enables you to get data on CPU used by the grid during 24 hours." last_updated: "2026-03-18T07:41:08.701Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/cpu-usage-graph/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/cpu-usage-graph/" id="CPUUsageGraph" %}} {{%divtag class="LeftContent"%}} ## CPU Usage Graph ### Description You can use this API to get data on CPU used by the grid during 24 hours. The required grid will be referred to using its {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}Grid ID{{%/link%}}. ### Request Details #### Request URL {{%request class="apigreen" req="GET" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/graph-data?datetime_filter=24+Hours&data_to_fetch=cpu_graph_data</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.read {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}Content-Type:{{%/bold%}} application/json <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing the CPU usage of a browser grid during 24 hours. The required grid is referred to using its Grid ID. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Get Data on CPU Used by the Grid Using OAuth" class="language-json" %}} curl -X GET 'https://consoleqa2.catalyst.localzoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=cpu_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Data on CPU Used by the Grid Using API Key" class="language-json" %}} curl -X GET 'https://consoleqa2.catalyst.localzoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/graph-data?datetime_filter=24+Hours&data_to_fetch=cpu_graph_data' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": [ ["Sep 23 2025, 11:00 AM", 0.0], ["Sep 23 2025, 01:00 PM", 0.0], ["Sep 23 2025, 03:00 PM", 0.0], ["Sep 23 2025, 05:00 PM", 0.8621659781801722], ["Sep 23 2025, 07:00 PM", 0.0], ["Sep 23 2025, 09:00 PM", 0.0], ["Sep 23 2025, 11:00 PM", 0.0], ["Sep 24 2025, 01:00 AM", 0.0], ["Sep 24 2025, 03:00 AM", 0.0], ["Sep 24 2025, 05:00 AM", 0.0], ["Sep 24 2025, 07:00 AM", 0.0], ["Sep 24 2025, 09:00 AM", 0.0], ["Sep 24 2025, 11:00 AM", 0.0], ["Sep 24 2025, 01:00 PM", 0.0] ] } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} -------------------------------------------------------------------------------- title: "Stop Browser Grid" description: "This API enables you to stop and effectively terminate the browser grid." last_updated: "2026-03-18T07:41:08.701Z" source: "https://docs.catalyst.zoho.com/en/api/code-reference/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" -------------------------------------------------------------------------------- {{% section path="/en/api/code-reference/smartbrowz/browser-grid/stop-grid/" id="StopBrowserGrid" %}} {{%divtag class="LeftContent"%}} ## Stop Browser Grid ### Description You can use this API to stop and effectively terminate the browser grid. ### Request Details #### Request URL {{%request class="apired" req="POST" %}}<p>{api-domain}/browser360/v1/project/{project_id}/browser-grid/{grid_id}/stop</p>{{%/request%}} {{%request_id id="api-domain" data="URL" %}}The DC-specific domain to access Catalyst API{{%/request_id%}} {{%request_id id="project_id" data="Numerical" %}}The {{%link href="/en/getting-started/set-up-a-catalyst-project/general-settings/"%}}unique ID{{%/link%}} of the project{{%/request_id%}} {{%request_id id="grid_id" data="Numerical" %}}The {{%link href="/en/smartbrowz/help/browser-grid/create-grid/"%}}unique ID{{%/link%}} to refer to the required grid{{%/request_id%}} #### Scope {{%scope%}} ZohoCatalyst.grid.terminate {{%/scope%}} #### Request Headers for API Using OAuth {{%scope%}} **Authorization:** Zoho-oauthtoken {oauth_token} <br> {{%bold class="bold-primary"%}}CATALYST-ORG:{{%/bold%}} Provide the value of your {{%link href="/en/getting-started/catalyst-organizations/" %}}Org ID{{%/link%}}. <br> {{%/scope%}} #### Request Headers for API Using API Key {{%scope%}} **Authorization** <br> {{%bold class="bold-primary"%}}api-key:{{%/bold%}} The unique key generated by Catalyst. It can be {{%link href="/en/smartbrowz/help/browser-grid/create-grid/" %}}retrived from the console{{%/link%}}. {{%/scope%}} ### Response Details You will receive a response containing details on the status of the execution. <br> <br> {{%note%}}{{%bold%}}Notice:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%/divtag%}} {{%divtag class="RightContent"%}} {{% panel_with_adjustment header="CURL Request - Stop the Browser Grid Using OAuth" class="language-json" %}} curl -X POST \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stop' \ -H 'Authorization: Zoho-oauthtoken 1000*********************************************780' \ -H 'catalyst-org: 111737956' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="CURL Request - Stop the Browser Grid Using API Key" class="language-json" %}} curl -X POST \ 'https://api.catalyst.zoho.com/browser360/v1/project/38119000000022053/browser-grid/3970000000005013/stop' \ -H 'CATALYST-ORG: 111737956' \ -H 'api-key: 96********************************************************************7049' {{% /panel_with_adjustment %}} {{% panel_with_adjustment header="Example Response" class="language-json" %}} { "status": "success", "data": true } {{% /panel_with_adjustment %}} {{% expand-container %}} {{% expand id="sdk_docs" header="SDK Documentation"%}} {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Java SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/"%}}Browser Grid - Node.js SDK{{%/link%}}<br/><br/> {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/overview/"%}}Browser Grid - Python SDK{{%/link%}} {{%/expand%}} {{%/expand-container%}} {{%/divtag%}} {{%/section%}} --- ## SDK — Java — SmartBrowz -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-03-18T07:41:08.728Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) -------------------------------------------------------------------------------- # PDF & Screenshot Catalyst SmartBrowz offers you the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. #### Sample Code Snippet <br> {{% panel_without_adjustment header="Package Imports" class="language-java line-numbers" %}}import com.zc.component.smartbrowz.ZCSmartBrowz; import com.zc.component.smartbrowz.ZCSmartBrowzConvertDetails;{{% /panel_without_adjustment %}} ### Generate Visual Document From a Predefined Template {{%code class="language-java" scroll="set-scroll"%}}// Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Generate output from a predefined template ObjectMapper mapper = new ObjectMapper(); JsonNode templateData = mapper.createObjectNode(); ((ObjectNode)templateData).put("name", "Amelia Burrows"); ((ObjectNode)templateData).put("age", "34"); ((ObjectNode)templateData).put("address", "Houstan"); ((ObjectNode)templateData).put("country", "USA"); ((ObjectNode)templateData).put("email", "emma@zylker.com"); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); // set password after enabling template password setting in UI pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); ZCSmartBrowzTemplateOptions templateOptions = ZCSmartBrowzTemplateOptions.getInstance(); templateOptions.setPdfDetails(pdfOptions); templateOptions.setNavigationDetails(navigationOptions); templateOptions.setOutputType(ZC_CONVERT_OUTPUT_TYPE.PDF); templateOptions.setPageDetails(pageOptions); templateOptions.setTemplateInput(templateData); templateOptions.setTemplateId(2075000000021001L); InputStream outputStream = smartBrowz.generateFromTemplate(templateOptions);{{%/code%}} ### Convert to PDF from HTML {{%code class="language-java" scroll="set-scroll"%}}// Initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // Convert to PDF from HTML ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setHtml("&lt;html&gt;Hello&lt;/html&gt;"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF);{{%/code%}} ### Take a screenshot from URL {{%code class="language-java" scroll="set-scroll"%}}// initialize SmartBrowz ZCSmartBrowz smartBrowz = ZCSmartBrowz.getInstance(); // convert to PDF from URL ZCSmartBrowzConvertDetails convertDetailsForPDF = ZCSmartBrowzConvertDetails.getInstance(); ZCSmartBrowzPDFOptions pdfOptions = ZCSmartBrowzPDFOptions.getInstance(); pdfOptions.setDisplayHeaderFooter(true); pdfOptions.setFormat("A4"); MarginDetails marginDetails = new MarginDetails(); marginDetails.setTop("10"); marginDetails.setRight("10"); marginDetails.setLeft("10"); marginDetails.setBottom("10"); pdfOptions.setMargin(marginDetails); pdfOptions.setPageRanges("1-2"); pdfOptions.setPrintBackground(true);; pdfOptions.setPassword("Siva123"); pdfOptions.setLandscape(true); pdfOptions.setScale(new BigDecimal("1.0")); pdfOptions.setWidth("100"); pdfOptions.setHeight("100"); ZCSmartBrowzNavigationOptions navigationOptions = new ZCSmartBrowzNavigationOptions(); navigationOptions.setWaitUntil("domcontentloaded"); navigationOptions.setTimeout(30000); ZCSmartBrowzPageOptions pageOptions = new ZCSmartBrowzPageOptions(); ContentDetails contentDetails = new ContentDetails(); contentDetails.setContent("&lt;html&gt;&lt;body&gt;Hello World&lt;/body&gt;&lt;/html&gt;"); pageOptions.setCss(contentDetails); pageOptions.setDevice("Blackberry PlayBook"); pageOptions.setJavaScriptEnabled(true); ViewportDetails viewportDetails = new ViewportDetails(); viewportDetails.setHeight(800); viewportDetails.setWidth(600); pageOptions.setViewport(viewportDetails); convertDetailsForPDF.setPdfDetails(pdfOptions); convertDetailsForPDF.setNavigationDetails(navigationOptions); convertDetailsForPDF.setPageDetails(pageOptions); convertDetailsForPDF.setUrl("http://www.example.com"); InputStream outPutStream = smartBrowz.convertToPdf(convertDetailsForPDF);{{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.728Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Java SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.728Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid grid = ZCBrowserGrid.getInstance()// get instance for the project{{%/code%}} -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.728Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the {{%badge%}}getGrid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}List<\ZCGrid> gridList = grid.getGrid(); // Will return a list of details of all the grids that are present in the project.{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] }{{%/code%}} -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.728Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGrid(3970000000005013l); // get grid details using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.729Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid nodeDetails = grid.getGridNodes(3970000000005013l); // get details of the node using its Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridDetails = grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name{{%/code%}} -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.729Z" source: "https://docs.catalyst.zoho.com/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridTerminate = grid.stopGrid(3970000000005013l); // stop the grid using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. **Ensure you import the following packages** {{%code class="language-java" scroll="set-scroll"%}}import com.zc.component.smartbrowz.*;{{%/code%}} {{%code class="language-java" scroll="set-scroll"%}}ZCBrowserGrid gridTerminate = grid.stopGrid("Selenium_Grid"); //stop the grid using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} --- ## SDK — Node JS — SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - SmartBrowz (/en/smartbrowz/getting-started/introduction/) -------------------------------------------------------------------------------- # Catalyst SmartBrowz {{%link href="/en/smartbrowz/getting-started/introduction/" %}}Catalyst SmartBrowz{{%/link%}} components allows you to control, manage a {{%link href="/en/smartbrowz/help/headless/introduction/" %}}headless browser{{%/link%}} and perform a variety of operations such as {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}generating PDFs and screenshots{{%/link%}} of webpages, {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}creating templates{{%/link%}} to generate PDFs with dynamic content, {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}extracting data{{%/link%}} from the web using powerful Catalyst APIs and more. ### Create SmartBrowz Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to execute any headless actions in SmartBrowz. You can create a new smartbrowz instance as shown below: {{%code class="language-javascript" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz();{{%/code%}} This component instance will be used for all SmartBrowz operations in Node.js SDK. -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) -------------------------------------------------------------------------------- # PDF & Screenshot Catalyst SmartBrowz offers you the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. ### Generate Visual Documents Using Template {{%code class="language-javascript" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz(); let result = await smartbrowz.generateFromTemplate("2075000000021001", { "pdf_options": { 'display_header_footer': true, 'format': 'A1', 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': '****123' // Add password after enabling the template password setting from the console }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' "output_options": { "output_type": "pdf" }, "template_data": {} }); console.log('result::', result);{{%/code%}} ### Generate PDF From HTML {{%code class="language-javascript" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz(); let result = await smartbrowz.convertToPdf("<html>HI</html>", { "pdf_options": { 'display_header_footer': true, 'footer_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Page <span class="pageNumber', 'format': 'A1', 'header_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Header</div>', 'margin': { 'bottom': '20', 'left': '10', 'right': '10', 'top': '20' }, 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': 'Siva123' }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' } }); console.log('result::', result);{{%/code%}} ### Generate Screenshot from URL {{%code class="language-javascript" scroll="set-scroll" %}}const smartbrowz = app.smartbrowz(); let result = await smartbrowz.convertToPdf("https://www.google.com", { "pdf_options": { 'display_header_footer': true, 'footer_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Page <span class="pageNumber', 'format': 'A1', 'header_template': '<div style="font-size: 10px; width: 100%; text-align: center; padding: 5px;">Header</div>', 'margin': { 'bottom': '20', 'left': '10', 'right': '10', 'top': '20' }, 'height': '100', 'width': '100', 'landscape': true, 'page_ranges': '1-2', 'scale': 1.0, 'password': 'Siva123' }, "page_options": { 'css': {'content': 'body { font-size: 12px; }'}, 'javascript_enabled': true, 'viewport': { 'height': 800, 'width': 600 }, 'device': 'Blackberry PlayBook' }, 'navigation_options': { 'timeout': 30000, 'wait_until': 'domcontentloaded' } }); console.log('result::', result);{{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse (/en/smartbrowz/help/dataverse/introduction/) -------------------------------------------------------------------------------- # Dataverse {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} is a Catalyst SmartBrowz component that performs data extraction from the web through scraping. The three categories of data extraction functionalities offered by Dataverse are explained below. {{%note%}}{{%bold%}}Note:{{%/bold%}} We can only assure to provide you with publicly available information available over the web.{{%/note%}} ### Lead Enrichment The Lead Enrichment module allows you to fetch details of a specific organization from the web. You will need to provide the organization's name, its email address, or its website URL as the parameters to the {{%badge%}}getEnrichedLead(){{%/badge%}} method, in order to retrieve the information. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must provide the value for at least one key in the {{%badge%}}getEnrichedLead(){{%/badge%}} method.{{%/note%}} The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.getEnrichedLead({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com', 'email':'sales@zohocorp.com' }); console.log(response);{{%/code%}} The response is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}[{ "employee_count": "12000", "website": "https://www.zoho.com", "address": [ { "country": "India", "pincode": "603202", "city": "Chengalpattu District", "street": "Estancia It Park, Plot No. 140 151, Gst Road Vallancheri", "state": "Tamil Nadu", "id": "Estancia IT Park, Plot no. 140, 151, GST Road, Vallancheri, Chennai." } ], "social": { "twitter": [ "twitter.com/zoho" ] }, "source_language": "en", "description": "Zoho Corporation offers web-based business applications.", "organization_name": "ZOHO", "ceo": "Sridhar Vembu", "headquarters": [ { "country": "India" } ], "revenue": "$1B", "years_in_industry": "27", "about_us": "https://www.zoho.com/aboutus.html?ireft=nhome&src=home1", "founding_year": "1996", "contact": [ "844-316-5544", "0800-085-6099" ], "industries": { "computer programming services": "Includes data processing services and other computer related services." }, "logo": "https://www.zohowebstatic.com/sites/zweb/images/ogimage/zoho-logo.png", "organization_type": [ "Private Limited Company" ], "business_model": [ "B2B" ], "email": [ "sales@zohocorp.com", "press@zohocorp.com" ], "organization_status": "LARGE_ENTERPRISE", "territory": [ "India", "United States of America" ], "sign_up_link": "https://www.zoho.com/signup.html?all_prod_page=true" } ]{{%/code%}} ### Tech Stack Finder The TechStack Finder module allows you to fetch details of the technologies implemented and the frameworks used by an organization. You will need to provide the organization's website URL as a parameter to the {{%badge%}}findTechStack(){{%/badge%}} method, in order to retrieve the information. The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.findTechStack('https://www.zoho.com'); console.log(response);{{%/code%}} The response is shown below: {{%code class="language-javascript" scroll="set-scroll" %}}[ { "website": "https://www.zoho.com", "technographic_data": { "audio-video media": "Vimeo,YouTube", "ssl_certificate": "Sectigo Limited", "email hosting providers": "Zoho Mail,SPF" }, "organization_name": "ZOHO" } ]{{%/code%}} ### Similar Companies The Similar Companies module allows you to get the list of potential organizations that provide the same or similar services as an organization you specify as the input. You can either provide the name of the input organization or its website URL as a parameter to the {{%badge%}}getSimilarCompanies(){{%/badge%}} method. The {{%badge%}}smartbrowz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/nodejs/v2/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. {{%code class="language-javascript" scroll="set-scroll" %}}const response = await smartbrowz.getSimilarCompanies({ 'leadName':'zoho', 'websiteUrl':'https://www.zoho.com' }); console.log(response);{{%/code%}} {{%code class="language-javascript" scroll="set-scroll" %}}[ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", 'GlobalLogic Inc.', 'Persistent Systems Ltd.', 'DELTA ELECTRONICS Inc.', 'Salesforce, Inc.' ]{{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Node.js SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. {{%code class="language-js" scroll="set-scroll"%}}const grid = app.SmartBrowz().browserGrid(); // Get Browser Grid instance{{%/code%}} -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the {{%badge%}}getGrid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} {{%code class="language-js" scroll="set-scroll"%}}const gridList = await grid.getGrid(); // return details of all grids console.log(gridList); {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] }{{%/code%}} -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridDetails = await grid.getGrid("3970000000005013"); // get grid details using the Grid ID console.log(gridDetails); {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGrid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridDetails = await grid.getGrid("Selenium_Grid"); // get grid details using the name of the grid console.log(gridDetails); {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const nodeDetails = await grid.getGridNodes("3970000000005013"); // get details of the node using its Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}getGridNodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const nodeDetails = await grid.getGridNodes("Selenium_Grid"); // get details of the node using the grid's name{{%/code%}} -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page provides you an overview of the SDK methods you can use to perform Browser Grid operations." last_updated: "2026-03-18T07:41:08.730Z" source: "https://docs.catalyst.zoho.com/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/) - Python SDK (/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/nodejs/v2/overview/#initialize-sdk-with-scopes" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridTerminate = await grid.stopGrid("3970000000005013"); // stop the grid using the Grid ID{{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stopGrid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-js" scroll="set-scroll"%}}const gridTerminate = await grid.stopGrid("Selenium_Grid"); // stop the grid using the name of the grid{{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} --- ## SDK — Python — SmartBrowz -------------------------------------------------------------------------------- title: "Create SmartBrowz Instance" description: "This page describes the method to create a SmartBrowz instance" last_updated: "2026-03-18T07:41:08.731Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" service: "SmartBrowz" related: - SmartBrowz Help (/en/smartbrowz/getting-started/introduction/) -------------------------------------------------------------------------------- # Catalyst SmartBrowz {{%link href="/en/smartbrowz/getting-started/introduction/" %}}Catalyst SmartBrowz{{%/link%}} components allows you to control, manage a {{%link href="/en/smartbrowz/help/headless/introduction/" %}}headless browser{{%/link%}} and perform a variety of operations such as {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}generating PDFs and screenshots{{%/link%}} of webpages, {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}creating templates{{%/link%}} to generate PDFs with dynamic content, {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}extracting data{{%/link%}} from the web using powerful Catalyst APIs and more. ### Create SmartBrowz Instance A component instance is an object that can be used to access the properties specific to a particular component. You can create a component instance to execute any headless actions in SmartBrowz. The {{%badge%}}app{{%/badge%}} reference used in the code below is the {{%link href="/en/sdk/python/v1/setup/#initializing-the-sdk" %}}Python object{{%/link%}} returned as a response during SDK initialization. You can create a new {{%badge%}}smart_browz{{%/badge%}}instance as shown below. {{%code class="language-python" %}}smart_browz = app.smart_browz(){{%/code%}} This component instance will be used for all SmartBrowz operations in Python SDK. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} -------------------------------------------------------------------------------- title: "PDF & Screenshot" description: "This page describes the method to generate PDF and Screenshot" last_updated: "2026-03-18T07:41:08.731Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/generate-pdfnscreenshot/" service: "SmartBrowz" related: - PDF & Screenshot - API (/en/api/code-reference/smartbrowz/generate-pdfnscreenshoturl/#PDF%26ScreenshotwithHTML%2fURLasInput) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # PDF & Screenshot Catalyst SmartBrowz offers you the {{%link href="/en/smartbrowz/help/pdfnscreenshot/introduction/" %}}PDF & Screenshot{{%/link%}} component to generate your prefered visual docuemnts through code. You can incorporate this functionality in your application by copying the code below and pasting it in your application logic. Using the SDK below, you can generate visual documents by using HTML, URL or {{%link href="/en/smartbrowz/help/templates/create-templates/" %}}Templates{{%/link%}} as your input. To know more about the component instance {{%badge%}}smart_browz{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" %}}this help section{{%/link%}}. # Generate PDF or Screenshot from template {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() result = smart_browz.generate_from_template( "153000000009001", # Replace template id template_data={}, output_options={"output_type": "pdf"}, pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) {{%/code%}} # Convert to PDF from HTML {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "<h1>Welcome</h1>", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) {{%/code%}} # Generate PDF from URL {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() result = smart_browz.convert_to_pdf( "https://catalyst.zoho.com/", pdf_options={ "scale": 1, "display_header_footer": true, "print_background": false, "landscape": false, "page_ranges": "1", "format": "A4", "width": "100", "height": "100", "omit_background": false, "password": "Demo$", }, page_options={ "css": {"content": "body{background: lightgrey}"}, "viewport": {"width": 1440, "height": 900}, "javascript_enabled": true, }, navigation_options={"timeout": 5000, "wait_until": "networkidle0"}, ) {{%/code%}} # Take a screenshot from HTML {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='<h1>Welcome</h1>', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) {{%/code%}} # Take a screenshot from URL {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() output_screenshot = smart_browz.take_screenshot( source='YOUR_URL', "output_options": { "output_type": "screenshot" }, screenshot_options= { "type": "jpeg", "quality": 100, "full_page": false, "omit_background": false, "capture_beyond_viewport": true, "clip": { "x": 50, "y": 100, "width": 1000, "height": 100 } }, page_options= { "css": { "content": "body{background: lightgrey}" }, "viewport": { "width": 1440, "height": 900 "viewport": { "width": 1440, "height": 900 }, "javascript_enabled": true "javascript_enabled": true }, navigation_options= { "timeout": 5000, "wait_until": "networkidle0" "navigation_options": { "timeout": 5000, "wait_until": "networkidle0" } } }) {{%/code%}} In the PDF & Screenshot section of the console, you can directly test this component using the {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-playground" %}}Playground feature{{%/link%}}, and you can also {{%link href="/en/smartbrowz/help/pdfnscreenshot/implementation/#generating-pdf--screenshots-through-code" %}}copy the SDK{{%/link%}} directly from the console. {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} -------------------------------------------------------------------------------- title: "Dataverse" description: "This page describes the SDK methods for Catalyst Dataverse modules." last_updated: "2026-03-18T07:41:08.731Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/dataverse/" service: "SmartBrowz" related: - Dataverse Help (/en/smartbrowz/help/dataverse/introduction/) - SDK Scopes (/en/sdk/python/v1/sdk-scopes) -------------------------------------------------------------------------------- # Dataverse {{%link href="/en/smartbrowz/help/dataverse/introduction/" %}}Dataverse{{%/link%}} is a Catalyst SmartBrowz component that performs data extraction from the web through scraping. The three categories of data extraction functionalities offered by Dataverse are explained below. {{%note%}}{{%bold%}}Note:{{%/bold%}} We can only assure to provide you with publicly available information available over the web.{{%/note%}} 1. **Lead Enrichment** The Lead Enrichment module allows you to fetch details of a specific organization from the web. You will need to provide the organization's name, its email address, or its website URL as the parameters to the {{%badge%}}get_enriched_lead(){{%/badge%}} method, in order to retrieve the information. {{%note%}}{{%bold%}}Note:{{%/bold%}} You must provide the value for at least one key in the {{%badge%}}get_enriched_lead(){{%/badge%}} method.{{%/note%}} The {{%badge%}}smart_browz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}lead_details{{%/badge%}}</td> <td>Array</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the details of the lead to be collected from the web.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() response = smart_browz.get_enriched_lead( { "email": "sales@zohocorp.com", "lead_name": "zoho", "website_url": "https://www.zoho.com", } ) print(response) {{%/code%}} The response is shown below: {{%code class="language-json" scroll="set-scroll" %}}[ { "employee_count":"12000", "website":"https://www.zoho.com", "address":[ { "country":"India", "pincode":"603202", "city":"Chengalpattu District", "street":"Estancia It Park, Plot No. 140 151, Gst Road Vallancheri", "state":"Tamil Nadu", "id":"Estancia IT Park, Plot no. 140, 151, GST Road, Vallancheri, Chennai." } ], "social":{ "twitter":[ "twitter.com/zoho" ] }, "source_language":"en", "description":"Zoho Corporation offers web-based business applications.", "organization_name":"ZOHO", "ceo":"Sridhar Vembu", "headquarters":[ { "country":"India" } ], "revenue":"$1B", "years_in_industry":"27", "about_us":"https://www.zoho.com/aboutus.html?ireft=nhome&src=home1", "founding_year":"1996", "contact":[ "844-316-5544", "0800-085-6099" ], "industries":{ "computer programming services":"Includes data processing services and other computer related services." }, "logo":"https://www.zohowebstatic.com/sites/zweb/images/ogimage/zoho-logo.png", "organization_type":[ "Private Limited Company" ], "business_model":[ "B2B" ], "email":[ "sales@zohocorp.com", "press@zohocorp.com" ], "organization_status":"LARGE_ENTERPRISE", "territory":[ "India", "United States of America" ], "sign_up_link":"https://www.zoho.com/signup.html?all_prod_page=true" } ] {{%/code%}} 2. **Tech Stack Finder:** The TechStack Finder module allows you to fetch details of the technologies implemented and the frameworks used by an organization. You will need to provide the organization's website URL as a parameter to the {{%badge%}}find_tech_stack(){{%/badge%}} method, in order to retrieve the information. The {{%badge%}}smart_browz{{%/badge%}} reference used here is the component instance that we created {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance" %}}earlier{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}org_url{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the URL of the organization for which tech stack details are needed.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() response = smart_browz.find_tech_stack('https://www.zoho.com') print(response) {{%/code%}} The response is shown below: {{%code class="language-json" scroll="set-scroll" %}}[ { "website":"https://www.zoho.com", "technographic_data":{ "audio-video media":"Vimeo,YouTube", "ssl_certificate":"Sectigo Limited", "email hosting providers":"Zoho Mail,SPF" }, "organization_name":"ZOHO" } ] {{%/code%}} 3. **Similar Companies:** The Similar Companies module allows you to get the list of potential organizations that provide the same or similar services as an organization you specify as the input. You can either provide the name of the input organization or its website URL as a parameter to the {{%badge%}}get_similar_companies(){{%/badge%}} method. To know more about the component instance {{%badge%}}smart_browz{{%/badge%}} used below, please refer to {{%link href="/en/sdk/python/v1/smartbrowz/create-smartbrowz-instance/" %}}this help section{{%/link%}}. **Parameters Used** <table class="content-table"> <thead> <tr> <th class="w20p">Parameter Name</th> <th class="w20p">Data Type</th> <th class="w60p">Definition</th> </tr> </thead> <tbody> <tr> <td>{{%badge%}}company_url{{%/badge%}}</td> <td>String</td> <td>A {{%bold%}}Mandatory{{%/bold%}} parameter. Will store the URL of the organization for which similar organizations need to be retrieved.</td> </tr> </tbody> </table> {{%code class="language-python" scroll="set-scroll" %}}smart_browz = app.smart_browz() response = smart_browz.get_similar_companies( {"lead_name": "zoho", "website_url": "https://www.zoho.com"} ) print(response) {{%/code%}} {{%code class="language-json" scroll="set-scroll" %}}[ "Cybage Software Pvt. Ltd.", "Google LLC", "Chargebee, Inc.", "Infosys Ltd.", "GlobalLogic Inc.", "Persistent Systems Ltd.", "DELTA ELECTRONICS Inc.", "Salesforce, Inc." ] {{%/code%}} {{%note%}}{{%bold%}}Note:{{%/bold%}} Any Browser action or operation that you code using the Browser Logic function, or any browser automation or web scraping task that you perform using any component of {{%bold%}}Catalyst SmartBrowz{{%/bold%}} is at your own risk. We strongly recommend you use the SmartBrowz components to perform operations on domains that permit the actions, or with proper approval. Additionally, while Catalyst does provide a secure infrastructure to code your functions, any consequence of the logic you code using Catalyst functions is yours alone.{{%/note%}} {{%note%}}{{%bold%}}Info :{{%/bold%}} Refer to the {{%link href="/en/sdk/python/v1/sdk-scopes" %}}SDK Scopes table{{%/link%}} to determine the required permission level for performing the above operation.{{%/note%}} ### Browser Grid -------------------------------------------------------------------------------- title: "Overview" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.731Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/overview/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/overview/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/overview/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Overview {{%link href="/en/smartbrowz/help/browser-grid/introduction/" %}}Browser Grid{{%/link%}} a *Catalyst SmartBrowz* service's auto scaling component that allows you to configure and manage multiple headless browsers. You are provided with options to configure your required grid by configuring the number of nodes and browsers that your process would require. Using the Browser Grid Python SDK, you will be able to get details about your browser grid, get node details about your browser grid and terminate browser grid executions. ### List of SDK Methods <table class="content-table"> <thead> <tr> <th class="w25p">Category</th> <th class="w50p">SDK Methods</th> <th class="w25p">Scope Requirements</th> </tr> </thead> <tbody> <tr> <td>General Operations</td> <td>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}Get Browser Grid Instance{{%/link%}}</td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> <tr> <td>Browser Grid Operations</td> <td> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/" %}}Get all browser grids{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/" %}}Get specific browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grid-id" %}}Get specific browser grid with ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/#using-the-grids-name" %}}Get specific browser grid with name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/" %}}Get nodes of a grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/" %}}Stop browser grid{{%/link%}}</li> <ul> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/#using-the-grid-id" %}}Using Grid ID{{%/link%}}</li> <li>{{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/#using-the-grids-name" %}}Using Grid Name{{%/link%}}</li> </ul> </ul> </td> <td>{{%bold%}}Admin{{%/bold%}}</td> </tr> </tbody> </table> -------------------------------------------------------------------------------- title: "Get Browser Grid Instance" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.732Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-instance/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-instance/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Browser Grid Instance You can get the browser grid instance as shown below. This will not fire a server-side call. You will refer to this component instance in various code snippets when working with the Browser Grid component. {{%code class="language-python" scroll="set-scroll"%}}grid = app.smart_browz().browser_grid() # get Browser Grid instance{{%/code%}} -------------------------------------------------------------------------------- title: "Get All Browser Grid Details" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.732Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/get-all-grids/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-all-grids/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-all-grids/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get All Browser Grid Details You can use the {{%badge%}}get_all_grid(){{%/badge%}} SDK method to get the grid details of all the browser grids that are present in your project. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} {{%code class="language-python" scroll="set-scroll"%}}grid_list = grid.get_all_grid() # return details of all grids print(grid_list) {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": [ { "id": "3970000000006058", "name": "play", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 10, 2025 07:04 PM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 }, { "id": "3970000000005426", "name": "Automation", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 12:47 PM", "modified_time": "Sep 23, 2025 03:12 PM", "api_key_modified_time": "1757488669690", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 2 }, { "id": "3970000000005027", "name": "SDK", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 11:33 AM", "modified_time": "Sep 10, 2025 04:27 PM", "api_key_modified_time": "1757484201284", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 5, "max_concurrent_count": 5, "config_type": 1 }, { "id": "3970000000005015", "name": "Puppeteer_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 10, 2025 10:21 AM", "api_key_modified_time": "1757479864798", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 1 }, { "id": "3970000000005013", "name": "Selenium_Gridt", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 10:21 AM", "modified_time": "Sep 23, 2025 05:50 PM", "api_key_modified_time": "1757479864794", "created_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 2, "max_session_count": 1, "max_nodes_count": 1, "max_concurrent_count": 1, "config_type": 2 } ] }{{%/code%}} -------------------------------------------------------------------------------- title: "Get a Specific Browser Grid" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.732Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-grid/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get a Specific Browser Grid You can get the details of a specific browser grid in your project by passing the Grid ID or grid name to the {{%badge%}}getGrid(){{%/badge%}} SDK method. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}get_grid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_details = grid.get_grid(3970000000005013) # get grid details using the Grid ID print(grid_details) {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}get_grid(){{%/badge%}} SDK method. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-python" scroll="set-scroll"%}}grid_details = grid.get_grid("Selenium_Grid") # get grid details using the name of the grid print(grid_details) {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": { "id": "3970000000006058", "name": "Selenium_Grid", "memory": 1024, "browser_version": { "chrome_version": "137.0.7515.155", "firefox_version": "136.0.4" }, "created_time": "Sep 10, 2025 07:04 PM", "modified_time": "Sep 24, 2025 11:55 AM", "api_key_modified_time": "1757511270919", "created_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "modified_by": { "zuid": "111734674", "is_confirmed": false, "email_id": "emmy@zylker.com", "first_name": "Headless", "last_name": "2", "user_type": "SuperAdmin" }, "project_details": { "project_name": "Project-Rainfall", "id": "38119000000022053", "project_type": "Live" }, "endpoint_type": 1, "max_session_count": 1, "max_nodes_count": 10, "max_concurrent_count": 10, "config_type": 1 } }{{%/code%}} -------------------------------------------------------------------------------- title: "Get Details of a Node" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.732Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/get-specific-node/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/get-specific-node/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/get-specific-node/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Get Details of a Node By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, you can get the details of a node in that grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}node_details = grid.get_grid_nodes(3970000000005013) # get details of the node using its Grid ID print(node_details) {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}get_grid_nodes(){{%/badge%}} SDK method, to get its node details. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}node_details = grid.get_grid_nodes("Selenium_Grid") # get details of the node using the grid's name print(node_details) {{%/code%}} -------------------------------------------------------------------------------- title: "Stop the Browser Grid" description: "This page describes the Python method to get all the job pools present in your project with sample code snippets." last_updated: "2026-03-18T07:41:08.732Z" source: "https://docs.catalyst.zoho.com/en/sdk/python/v1/smartbrowz/browser-grid/stop-grid/" service: "SmartBrowz" related: - Browser Grid Help Documentation (/en/smartbrowz/help/browser-grid/introduction/) - Java SDK (/en/sdk/java/v1/smartbrowz/browser-grid/stop-grid/) - Node.js SDK (/en/sdk/nodejs/v2/smartbrowz/browser-grid/stop-grid/) - REST API (/en/smartbrowz/help/browser-grid/introduction/) -------------------------------------------------------------------------------- # Stop the Browser Grid By passing the **Grid ID** or name of the required browser grid to the {{%badge%}}stop_grid(){{%/badge%}} SDK method, you can terminate all executions and stop the browser grid. {{%info%}}{{%bold%}}Info:{{%/bold%}} To use this SDK method, you need intialize it with {{%bold%}}Admin{{%/bold%}} scope. You can learn more about this requirement from this {{%link href="/en/sdk/python/v1/sdk-scopes/" %}}section{{%/link%}}{{%/info%}} ### Using the Grid ID You can pass the **Grid ID** of the required browser grid to the {{%badge%}}stop_grid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_terminate = grid.stop_grid(3970000000005013) # stop the grid using the Grid ID {{%/code%}} ### Using the Grid's Name You can pass the name of the required browser grid to the {{%badge%}}stop_grid(){{%/badge%}} SDK method, to stop the grid, and terminate all its executions. The {{%badge%}}grid{{%/badge%}} instance used in the following snippet is the {{%link href="/en/sdk/python/v1/smartbrowz/browser-grid/get-instance/" %}}component reference{{%/link%}}. {{%code class="language-py" scroll="set-scroll"%}}grid_terminate = grid.stop_grid("Selenium_Grid") # stop the grid using the name of the grid {{%/code%}} ### Example of Expected Response {{%code class="language-json" scroll="set-scroll"%}}{ "status": "success", "data": true }{{%/code%}} --- ## FAQ — SmartBrowz # Headless {{% expand-container %}} {{% expand id="what_is_zia" header="How do I connect to headless browser from other Catalyst function types?" %}} You will need to use the CDP endpoint from the console and use it to initialize the browser instance in order to connect to headless browser from a function. {{%/expand%}} {{% expand id="what_is_zia" header="What is the maximum timeout of the browser instance created using CDP endpoint?" %}} 2 minutes . Browser can be alive upto 2 minutes. However in development, the functions will have a max timeout of upto 30 secs. Your browser instance will be killed if your function has faced a timeout. {{%/expand%}} {{% expand id="what_is_zia" header="How do I configure the browser headless memory?" %}} You can modify the memory from console. Upto 1024 MB can be configured. {{%/expand%}} {{%/expand-container%}} # Browser Logic {{% expand-container %}} {{% expand id="what_is_zia" header="What is the use of Browser Logic function over the other function types?" %}} You will have to create the browser instance using its CDP endpoint from other type of functions to connect to headless. Whereas, the browser object is supplied to you directly in the browserlogic functions. You can directly use that. Browser will not have a timeout in a browserlogic function in local debugging. However, browser logic function will have a max timeout of 30 sec in development. {{%/expand%}} {{% expand id="what_is_zia" header="How do I test a Browser Logic function in local?" %}} You can test Browser Logic function using catalyst serve command in CLI. A function URL will gets generated and served in localhost to test {{%/expand%}} {{%/expand-container%}} # PDF & Screenshot {{% expand-container %}} {{% expand id="what_is_zia" header="How do I create a PDF from a HTML page with placeholder values supplied dynamically?" %}} You can create a template from the Catalyst console. You have to design your template by using HTML, CSS, and JS. You can then pass the placeholders as a JSON and supply the data to the Smartbrowz Java, Node.js, or Python SDK in order to generate PDF from the HTML templates. {{%/expand%}} {{% expand id="what_is_zia" header="How do I take a screenshot of a publicly accessible webpage?" %}} You can use the smartbrowz sdk to take a screenshot of a publicly accessible webpage by passing the Webpage URL to the SDK method. {{%/expand%}} {{%/expand-container%}}