Screenshot API for C#
Capture screenshots and PDFs from C# and .NET using HttpClient. No package required.
There is no official .NET package. HttpClient with System.Net.Http.Json covers the API in a few lines.
Install
// nothing to install - HttpClient is part of .NET
Your first screenshot in C#
One POST, one JSON body, one URL back. The response is a CDN link to the finished image.
HttpClient
using System.Net.Http.Json;
using var client = new HttpClient
{
Timeout = TimeSpan.FromSeconds(60)
};
client.DefaultRequestHeaders.Add("X-API-Key", "sk_live_YOUR_KEY");
var response = await client.PostAsJsonAsync(
"https://api.getsnap.dev/v1/screenshot",
new { url = "https://github.com", format = "png" });
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadFromJsonAsync<ShotResult>();
Console.WriteLine(result!.Url); // CDN URL to your screenshot
record ShotResult(string Url);
Full-page captures and other options
Every option is a field in the same JSON body. The common ones are full-page capture, popup and ad removal, viewport size, and lazy-load scrolling.
var response = await client.PostAsJsonAsync(
"https://api.getsnap.dev/v1/screenshot",
new
{
url = "https://example.com",
format = "png",
full_page = true,
remove_popups = true,
block_ads = true,
viewport_width = 1280,
viewport_height = 720,
});
Saving the image to disk
By default you get a CDN URL. Ask for a binary response instead and you get the bytes directly, which saves a round-trip when you are storing the file yourself.
var response = await client.PostAsJsonAsync(
"https://api.getsnap.dev/v1/screenshot",
new
{
url = "https://example.com",
format = "webp",
quality = 90,
response_type = "binary",
});
await using var file = File.Create("screenshot.webp");
await response.Content.CopyToAsync(file);
Handling errors
Every failure returns JSON with an error code and a human-readable message. These are the ones worth branching on:
| Status | error | What it means |
|---|---|---|
| 400 | validation_error | A field is missing or out of range. The body names the field. |
| 401 | unauthorized | Missing or unknown API key. |
| 402 | quota_exceeded | Monthly capture limit reached. |
| 429 | rate_limit_exceeded | Too many requests this minute. Back off and retry. |
| 500 | capture_failed | The page could not be rendered - usually a timeout on a page that never settles. |
var response = await client.PostAsJsonAsync(
"https://api.getsnap.dev/v1/screenshot",
new { url = "https://example.com" });
if (!response.IsSuccessStatusCode)
{
// e.g. {"error":"rate_limit_exceeded","message":"..."}
var problem = await response.Content.ReadAsStringAsync();
throw new InvalidOperationException(
$"{(int)response.StatusCode} {problem}");
}
Rate limits and quotas
| Plan | Captures / month | Requests / minute |
|---|---|---|
| Free | 100 | 5 |
| Starter | 5,000 | 30 |
| Pro | 25,000 | 60 |
| Business | 100,000 | 120 |
Exceeding the per-minute limit returns 429; exceeding the monthly quota returns
402. See pricing for the full breakdown.
Frequently asked questions
Is there an official C# SDK for taking screenshots?
No, and you do not need one. The API is a single JSON POST to one endpoint, so C#'s standard HTTP client is enough. Everything on this page uses it.
Do I need to run or manage a headless browser?
No. getSnap.dev runs Chromium server-side and returns a finished image, PDF or video. You never install Playwright or Puppeteer, and you never maintain a browser pool.
Is there a free tier?
Yes - 100 captures a month at 5 requests a minute, with no credit card required. Paid plans start at $9/month for 5,000 captures at 30 requests a minute.
How do I capture a page that requires login from C#?
Pass your own cookies or HTTP headers in the request body and the capture runs authenticated. Use a dedicated least-privilege account rather than your own session.
Next steps
- Code examples — every feature, with cURL, Node.js and Python tabs
- API reference — every request field and response shape
- Playground — try a capture in the browser before writing any C#
- Pricing — plans, quotas and overage
Related reading
- Best screenshot API in 2026 — how the managed options compare
Start capturing from C#
100 screenshots a month on the free tier. No credit card required.
Get Free API Key