200 free requests/month — no credit card required

Screenshot, Scrape & Extract.
One API. Zero Headaches.

Capture pixel-perfect screenshots, generate PDFs, scrape web data, and extract LLM-ready markdown — all from a single API key. No extra services. No browser infrastructure. 3.3x cheaper than ScreenshotOne.

Used by developers at 30+ companies worldwide
200 free requests/month · No credit card required · 8 official SDKs
🎁 50% off first month — code FIRSTMONTH
screenshot.sh
$ curl -X POST https://api.snapapi.pics/v1/screenshot \
  -H "X-Api-Key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://github.com","format":"png","full_page":true}' \
  --output screenshot.png

✓ screenshot.png saved — 1280x3200px, PNG, 412 KB, 2.1s
$0
Free forever, no card needed
8
Official SDKs
99.9%
Uptime SLA
<2s
Avg. screenshot time

Try it right now

Enter any URL and capture a screenshot, video or scroll recording in real-time.

Preview
--

Your screenshot will appear here

Capturing screenshot...

Screenshot result
Features

Six powerful tools.
One API key to rule them all.

Six production-grade capabilities under a single API key — screenshots, PDFs, scraping, extraction, OG images, and video. No stitching together multiple services.

Screenshot API

URL to pixel-perfect PNG, JPEG, WebP, or AVIF in milliseconds. Full-page, element selectors, mobile viewports, dark mode, retina 2x.

POST /v1/screenshot

PDF Generation

Render any URL or raw HTML to a production-quality PDF. Control margins, page size, headers and footers.

POST /v1/screenshot?format=pdf

Web Scraping

Extract structured JSON data from any page. Stealth mode bypasses bot detection. Works on JS-heavy SPAs.

POST /v1/scrape

Content Extraction

URL to clean markdown in one call. Powered by Mozilla Readability. Feed articles, docs, and pages straight into your LLM pipeline.

POST /v1/extract

OG Image Generation

Render dynamic Open Graph and social media preview images from a URL template. Ship social sharing in an afternoon.

GET /v1/screenshot?og=true

Video Recording

Record page animations, scroll demos, and interactions as MP4 or GIF. Unique to SnapAPI — no competitor offers this at any plan tier.

POST /v1/video
Developer Experience

Copy. Paste. Ship in minutes.

Working code in 8 languages, ready to drop into your project. Your API key is the only setup required.

// npm install snapapi-js
import SnapAPI from 'snapapi-js';

const client = new SnapAPI({ apiKey: 'sk_live_your_key' });

// Screenshot
const screenshot = await client.screenshot.capture({
  url: 'https://github.com',
  format: 'png',
  fullPage: true,
  blockAds: true,
});
fs.writeFileSync('screenshot.png', screenshot);

// Extract content for LLMs
const content = await client.extract.markdown({ url: 'https://example.com/article' });
console.log(content.markdown);  // Clean markdown, ready for your LLM
# pip install snapapi-python
from snapapi import SnapAPI

client = SnapAPI(api_key="sk_live_your_key")

# Screenshot
screenshot = client.screenshot.capture(
    url="https://github.com",
    format="png",
    full_page=True,
    block_ads=True,
)
with open("screenshot.png", "wb") as f:
    f.write(screenshot)

# Extract content for LLMs
content = client.extract.markdown(url="https://example.com/article")
print(content.markdown)  # Clean markdown, ready for your LLM
// go get github.com/Sleywill/snapapi-go
package main

import (
    "os"
    snapapi "github.com/Sleywill/snapapi-go"
)

func main() {
    client := snapapi.New("sk_live_your_key")

    // Screenshot
    data, _ := client.Screenshot.Capture(snapapi.ScreenshotRequest{
        URL:      "https://github.com",
        Format:   "png",
        FullPage: true,
    })
    os.WriteFile("screenshot.png", data, 0644)

    // Scrape structured data
    result, _ := client.Scrape.Extract(snapapi.ScrapeRequest{
        URL: "https://example.com/product",
    })
    fmt.Println(result.Data)
}
// composer require snapapi/snapapi-php
use SnapAPI\Client;

$client = new Client('sk_live_your_key');

// Screenshot
$screenshot = $client->screenshot->capture([
    'url'       => 'https://github.com',
    'format'    => 'png',
    'full_page' => true,
    'block_ads' => true,
]);
file_put_contents('screenshot.png', $screenshot);

// Generate PDF
$pdf = $client->screenshot->capture([
    'url'    => 'https://example.com/report',
    'format' => 'pdf',
]);
file_put_contents('report.pdf', $pdf);
# Screenshot → PNG
curl -X POST https://api.snapapi.pics/v1/screenshot \
  -H "X-Api-Key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://github.com","format":"png","full_page":true}' \
  --output screenshot.png

# PDF generation
curl -X POST https://api.snapapi.pics/v1/screenshot \
  -H "X-Api-Key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","format":"pdf"}' \
  --output page.pdf

# Content extraction → Markdown
curl -X POST https://api.snapapi.pics/v1/extract \
  -H "X-Api-Key: sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/article","type":"markdown"}'
// swift package add SnapAPISwift
import SnapAPISwift

let client = SnapAPIClient(apiKey: "sk_live_your_key")

// Screenshot
let image = try await client.screenshot.capture(
    url: "https://github.com",
    format: .png,
    fullPage: true
)
try image.write(to: URL(fileURLWithPath: "screenshot.png"))

// Scrape data
let data = try await client.scrape.extract(url: "https://example.com")
print(data.structured)
// build.gradle.kts: implementation("pics.snapapi:snapapi-kotlin:3.1.0")
import pics.snapapi.SnapAPIClient

val client = SnapAPIClient(apiKey = "sk_live_your_key")

// Screenshot
val screenshot = client.screenshot.capture(
    url = "https://github.com",
    format = "png",
    fullPage = true
)
File("screenshot.png").writeBytes(screenshot)

// Extract content for LLMs
val content = client.extract.get(url = "https://example.com")
println(content.markdown)
# gem install snapapi-client
require 'snapapi'

client = SnapAPI::Client.new(api_key: 'sk_live_your_key')

# Screenshot
screenshot = client.screenshot.capture(
  url: 'https://github.com',
  format: 'png',
  full_page: true
)
File.write('screenshot.png', screenshot)

# Extract for LLMs
content = client.extract.get(url: 'https://example.com')
puts content.markdown
Use Cases

Built for real workflows.

From AI pipelines to production SaaS features — here's how teams are using SnapAPI today.

AI / LLM Pipelines

Feed your AI real web data

Extract clean markdown from any URL and send it directly to GPT-4, Claude, or your own model. No HTML parsing, no noise — just clean content your LLM can actually use.

SaaS Product Features

Add PDF exports without the headaches

Invoice PDFs, report exports, and OG image generation — all via one API call. No headless browser to manage, no infrastructure to maintain.

Monitoring & QA

Visual regression testing at scale

Screenshot thousands of URLs per hour with zero infrastructure to manage. Compare diffs, catch visual regressions, and automate your QA pipeline end-to-end.

E-Commerce Intelligence

Scrape product data without getting blocked

Monitor competitor prices, listings, and inventory at scale. Built-in stealth mode defeats bot detection so you focus on insights, not infrastructure.

MCP Server

Use SnapAPI inside your AI assistant.

Install the official MCP server and give Claude, Cursor, Windsurf, VS Code, or any MCP-compatible AI direct access to screenshots, scraping, extraction, and more — no code required.

npm
snapapi-mcp v3.1.0
npx snapapi-mcp

Claude Desktop

Screenshots, scraping, and extraction — all inside Claude conversations.

"command": "npx", "args": ["-y", "snapapi-mcp"]

Cursor

Give your AI coding assistant the ability to see and scrape the web.

~/.cursor/mcp.json

VS Code

Native MCP support — add SnapAPI to your workspace or user settings.

.vscode/mcp.json

Windsurf

Drop-in MCP integration for the Windsurf AI editor.

~/.codeium/windsurf/mcp_config.json

9 tools available out of the box

screenshotCapture any URL as an image
scrapeExtract page content as text/HTML/links
extractClean content extraction for LLMs
pdfGenerate PDFs from URLs or HTML
videoRecord browser sessions as WebM
analyzeExtract + AI-analyze in one call
pingVerify connectivity and API key
get_usageCheck quota and account stats
list_devicesList device presets for emulation
View on GitHub View on npm
Pricing

Simple pricing.
Half the cost of alternatives.

Start free — no credit card required. Scale to 50,000 requests/month for $79, while ScreenshotOne charges $259 for the same volume.

Monthly Annual Save 20%
Free
For testing and side projects
$0 /month
200 requests/month
Get started free
  • 200 requests / month
  • PNG, JPEG, WebP
  • Full-page capture
  • Mobile viewports
  • REST API access
  • Ad & cookie blocking
  • PDF & video capture
Most Popular
Starter
For growing projects and teams
$19 /month
5,000 requests/month · ~$0.0038/req

7 days free — then $19/mo. Cancel anytime.

  • 5,000 requests / month
  • All formats + AVIF + PDF
  • Ad & cookie blocking
  • Custom CSS injection
  • Dark mode capture
  • 5 GB cloud storage
  • Email support
30-day money-back guarantee on paid plans. · Failed requests never count against your quota. · Need enterprise volume?
View full pricing comparison →
Comparison

Why developers choose SnapAPI.

More features, lower cost, and the only all-in-one API that includes video recording and content extraction.

Feature SnapAPI ScreenshotOne Urlbox Firecrawl
50K req/mo price $79/mo $259/mo $149/mo $83/mo (scrape only)
Free tier 200/mo — no card 100/mo 100/mo 500/mo
Screenshot API Yes Yes Yes No
PDF generation Yes Yes Yes No
Web scraping Yes No No Yes
Content extraction (Markdown) Yes No No Yes
Video recording (MP4/GIF) Yes No No No
AVIF format Yes No No No
Official SDKs 8 languages 8 languages 6 languages 4 languages
Failed requests billed Never Never Never Never
Trusted by developers

Trusted by developers who ship.

Paying customers on Starter and Pro plans — here's what they say.

"Switched from ScreenshotOne after hitting their pricing wall. Same quality screenshots, the PDF and scraping endpoints saved us from running a second service. Migrated in half a day."

Diogo M.
Indie SaaS Founder

"We pipe the content extraction endpoint directly into our LLM workflow. Clean markdown, no noise. At $79/mo for 50K calls it's a no-brainer for the AI stack."

Team Lab Software
AI Product Engineer

"The Python SDK is excellent. Four lines of code to add screenshot exports to our dashboard. The free tier was enough to validate the idea before we committed to a plan."

Natalia S.
Full-stack developer
FAQ

Frequently asked questions.

What can I do with SnapAPI?
Screenshot any URL to PNG/JPEG/WebP/AVIF, generate PDFs from web pages, scrape structured data from any site, extract clean markdown for LLM pipelines, generate OG images, and record browser sessions as video. All under one API key.
Do I need a credit card to start?
No. The free tier (200 requests/month) requires no payment information. Sign up with email, Google, or GitHub and your API key is ready in under a minute.
Do failed requests count against my quota?
No. Only successfully rendered responses count. Network errors, timeouts, and invalid URLs do not consume your monthly quota.
How does pricing compare to ScreenshotOne?
At 50,000 requests/month, SnapAPI Pro is $79 vs ScreenshotOne at $259 — 3.3x cheaper. SnapAPI also includes video capture, web scraping, and content extraction that ScreenshotOne doesn't offer at any tier.
Which languages have official SDKs?
JavaScript/TypeScript, Python, Go, PHP, Swift, Kotlin, Ruby, and Java. The REST API also works with any language that can make HTTP requests — see our docs for examples.
Can I capture pages behind login?
Yes. Pass cookies, HTTP authentication headers, or custom request headers with your API call to capture authenticated pages and internal dashboards.
How do I capture full-page screenshots?
Add "full_page": true to your request body. Works with all image formats and is available on every plan including free.
What happens if I exceed my monthly quota?
Once you hit your monthly limit, requests return a 429 status. You're never charged automatically for overages. Upgrade your plan from the dashboard at any time to instantly restore access.
Does it work for LLM and AI pipelines?
Yes. The /v1/extract endpoint converts any URL to clean markdown via Mozilla Readability. Feed it directly into GPT-4, Claude, or Gemini without writing an HTML parser.
How fast are screenshots rendered?
Median response time is under 2 seconds for most pages. Heavy JavaScript-rendered pages may take 3-5 seconds. Use "cache": true to serve cached results instantly for repeated URLs.
Is there a money-back guarantee?
Yes. All paid plans come with a 30-day money-back guarantee. If you're not satisfied, contact support@snapapi.pics for a full refund.
Start for free

Stop building browser infrastructure.

200 free requests/month. Your API key in 60 seconds. No credit card required.

30-day money-back guarantee 99.9% uptime SLA Cancel anytime