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.
FIRSTMONTH
$ 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
Integrates with your stack
Try it right now
Enter any URL and capture a screenshot, video or scroll recording in real-time.
Your screenshot will appear here
Capturing screenshot...
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
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
Built for real workflows.
From AI pipelines to production SaaS features — here's how teams are using SnapAPI today.
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.
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.
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.
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.
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.
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 imagescrapeExtract page content as text/HTML/linksextractClean content extraction for LLMspdfGenerate PDFs from URLs or HTMLvideoRecord browser sessions as WebManalyzeExtract + AI-analyze in one callpingVerify connectivity and API keyget_usageCheck quota and account statslist_devicesList device presets for emulationSimple 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.
- 200 requests / month
- PNG, JPEG, WebP
- Full-page capture
- Mobile viewports
- REST API access
- Ad & cookie blocking
- PDF & video capture
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
7 days free — then $79/mo. Cancel anytime.
- 50,000 requests / month
- Everything in Starter
- Video capture (MP4 / GIF)
- Custom JS injection
- Response caching
- Webhook notifications
- 10 GB cloud storage + priority support
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 |
Frequently asked questions.
"full_page": true to your request body. Works with all image formats and is available on every plan including free./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."cache": true to serve cached results instantly for repeated URLs.
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."
"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."
"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."