Browser Automation for .NET
Puppeteer Sharp is a .NET port of the official Node.JS Puppeteer API. Control Chrome and Firefox with a high-level, easy-to-use API.
Quick Start
dotnet add package PuppeteerSharp
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();
await page.GoToAsync("https://example.com");
await page.ScreenshotAsync("screenshot.png");
Key Features
Browser Automation
Automate Chrome and Firefox with full support for navigation, input, network interception, and more. Works with both headless and headful modes.
Screenshots & PDFs
Generate pixel-perfect screenshots and PDF documents. Supports full-page capture, custom viewports, clipping, and PDF formatting options.
Locators
Smart element location with built-in auto-retry and auto-wait. Configure visibility, timeouts, and preconditions with a fluent API.
await page.Locator("button.submit")
.SetWaitForEnabled(true)
.SetEnsureElementIsInTheViewport(true)
.ClickAsync();
Dual Protocol Support
First-class support for both Chrome DevTools Protocol (CDP) and WebDriver BiDi, giving you flexibility to choose the best protocol for your use case.
Cross-Platform
Runs on Windows, macOS, and Linux. Targets .NET Standard 2.0 and .NET 10, so it works with .NET Framework 4.6.1+, .NET Core, and modern .NET.
Sponsor
If you are making money using Puppeteer-Sharp, consider sponsoring this project. This will give you priority support and help this community-based project keep moving.