200 free requests/month — no credit card required

Screenshot, Scrape & Extract.
One API.

One API key for screenshots, PDFs, web scraping, and LLM-ready content extraction. 3.3x cheaper than ScreenshotOne. Start free in 60 seconds.

Join 38+ developers building with SnapAPI
200 free requests/month · No credit card required · 8 official SDKs
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 tier, forever
8
Official SDKs
99.9%
Uptime SLA
<2s
Median response time

Works with your existing stack

Zapier Make n8n OpenAI LangChain Bubble Airtable

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

Everything your product needs.
One endpoint at a time.

Six production-grade capabilities under a single API key. 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 scrolling page animations as MP4 or GIF. Unique to SnapAPI — ScreenshotOne doesn't offer this at any plan tier.

POST /v1/video
Developer Experience

Copy. Paste. Ship.

Real working code in every language you use. No boilerplate, no setup beyond your API key.

// 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 SaaS features — see how teams use SnapAPI in production.

AI / LLM Pipelines

Feed your AI real web data

Extract clean markdown from any URL and pipe it directly into GPT-4, Claude, or your own model. No HTML parsing, no noise — just the content your LLM needs to work with.

SaaS Product Features

Ship PDF exports in an afternoon

Add invoice PDFs, report exports, and OG image generation to your SaaS without managing a headless browser. One API call, one API key, done.

Monitoring & QA

Visual regression at scale

Screenshot 10,000 URLs per hour with zero infrastructure to manage. Compare diffs, catch visual regressions, and automate your QA pipeline.

E-Commerce Intelligence

Extract product data without proxies

Scrape competitor prices, product listings, and inventory data. Stealth mode handles bot detection so you focus on the data, not the infrastructure.

Pricing

Simple pricing.
Half the cost of alternatives.

Start free, no credit card. At 50,000 requests/month, SnapAPI Pro ($79) costs 3.3x less than ScreenshotOne ($259).

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
Pro
For high-volume applications
$79 /month
50,000 requests/month · ~$0.0016/req
  • 50,000 requests / month
  • Everything in Starter
  • Video capture (MP4 / GIF)
  • Custom JS injection
  • Response caching
  • Webhook notifications
  • 10 GB cloud storage + priority support
30-day money-back guarantee on paid plans. · Failed requests never count against your quota. · Need enterprise volume?
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

Real teams. Real use cases.

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.
Founder, SaaS team

"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 team

"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

Common 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?
Your API calls will return a 429 status code once you hit your monthly limit. You will never be charged overages automatically. Upgrade your plan from the dashboard 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.
Get started today

Stop building screenshot 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