SnapAPI does everything ScreenshotAPI.net does — plus web scraping, structured data extraction, and PDF generation. Same REST API simplicity, more capability, better pricing.
ScreenshotAPI.net is a functional screenshot service that covers the basics. But once a product grows, teams routinely hit the same ceiling: they need to scrape text from pages, extract structured data for feeds or AI pipelines, or generate PDFs from URLs or HTML templates. With ScreenshotAPI.net, each of those is a separate vendor, a separate integration, and a separate monthly bill. SnapAPI bundles all four capabilities — screenshot, scrape, extract, PDF — into a single REST API and a single key.
| Feature | ScreenshotAPI.net | SnapAPI |
|---|---|---|
| Screenshot from URL | ✓ | ✓ |
| Full-page screenshot | ✓ | ✓ |
| Custom viewport (width/height) | ✓ | ✓ |
| JavaScript rendering | ✓ | ✓ |
| Web scraping (clean Markdown) | ✗ | ✓ |
| Structured data extraction (JSON schema) | ✗ | ✓ |
| PDF generation (URL or HTML) | ✗ | ✓ |
| Official SDKs (JS, Python, Go, PHP, Swift, Kotlin) | ✗ | ✓ |
| Free tier | 100/mo | 200/mo (all endpoints) |
ScreenshotAPI.net uses a query-parameter based API similar to SnapAPI. The parameter names differ slightly but the pattern is identical. Most migrations complete in under 30 minutes:
# ScreenshotAPI.net GET https://shot.screenshotapi.net/screenshot ?token=YOUR_TOKEN&url=https://example.com&width=1280&height=800&output=image # SnapAPI — same concept GET https://api.snapapi.pics/v1/screenshot ?url=https://example.com&width=1280&height=800&format=png Headers: X-API-Key: YOUR_SNAP_KEY
| Tier | ScreenshotAPI.net | SnapAPI |
|---|---|---|
| Free | 100 screenshots/mo | 200 calls/mo (all endpoints) |
| Starter | ~$19/mo — screenshot only | $19/mo — 5,000 calls, all 4 endpoints |
| Growth | ~$79/mo — screenshot only | $79/mo — 50,000 calls, all 4 endpoints |
The moment you switch to SnapAPI, the same API key that takes screenshots also gives you:
Hit /v1/scrape with any URL. Get back clean Markdown stripped of navigation, ads, and boilerplate. Works on React and Vue SPAs.
Pass a JSON schema to /v1/extract and get back structured data from any page. Powers price monitors, AI agents, and competitive intelligence tools.
Generate pixel-perfect PDFs from live URLs or raw HTML. Supports Google Fonts, Tailwind CSS, SVG, and Canvas. Replaces wkhtmltopdf and PDFShift.
const res = await fetch('https://api.snapapi.pics/v1/screenshot?url=https://example.com&width=1280', {
headers: { 'X-API-Key': process.env.SNAP_API_KEY }
});
const buffer = Buffer.from(await res.arrayBuffer());
fs.writeFileSync('screenshot.png', buffer);
import requests
resp = requests.get(
'https://api.snapapi.pics/v1/screenshot',
headers={'X-API-Key': 'YOUR_KEY'},
params={'url': 'https://example.com', 'width': 1280, 'format': 'png'}
)
with open('screenshot.png', 'wb') as f:
f.write(resp.content)
Yes. SnapAPI runs a real Chromium browser for every request. JavaScript executes, SPAs render, lazy-loaded content appears. You can also add custom delays or wait for specific CSS selectors before capture.
Yes, pass a CSS selector via the selector parameter and SnapAPI clips the screenshot to that element only.
Yes. The free tier includes 200 API calls per month across all endpoints — no credit card required. Upgrade when you need more volume.
Async webhook support is on the roadmap. Currently all calls are synchronous and return the result directly. For high-volume async workflows, use the async Python or Node.js patterns from the docs.
200 free calls. No credit card. Takes 2 minutes to integrate.
Get Your Free API KeyMost teams start with a screenshot API and only later realize they need more. The pattern is predictable: you integrate a screenshot tool, ship the feature, and within two or three sprints someone asks whether you can also pull the text content of those pages, or whether you can export that dashboard view as a PDF. With a screenshot-only API like ScreenshotAPI.net, the answer to both questions is "add another service." That means another vendor evaluation, another API key to manage, another failure mode in production, and another line item on the monthly bill.
SnapAPI was designed to solve this from day one. The same API key, the same base URL, and the same HTTP pattern covers four distinct operations. You start with screenshots, and when you need scraping or PDFs, you change one path segment and one set of parameters. No new vendor, no new pricing negotiation, no new docs to read.
Both ScreenshotAPI.net and SnapAPI run real Chromium instances under the hood, which means JavaScript executes before capture. SnapAPI exposes additional controls over the rendering lifecycle that matter for complex applications. You can specify a custom CSS selector to wait for before capture, ensuring that lazy-loaded images and asynchronous data fetches have completed. You can add a fixed delay in milliseconds as a fallback for pages without predictable DOM signals. And you can pass custom HTTP headers including cookies and authorization tokens to access pages that require session state.
For SPA applications built with React, Vue, or Angular, SnapAPI’s default network idle wait strategy handles the common case: it waits until there are no more than two in-flight network requests before capturing. This covers the majority of dashboard and data visualization pages without any additional configuration.
Teams that self-host Chromium for screenshots manage a non-trivial infrastructure layer. A Chromium instance consumes around 300-400MB of RAM at idle and can spike to 1-2GB per concurrent page render. Browser processes crash, hang, or accumulate memory over time, requiring a watchdog to detect and restart them. Docker images that include Chromium are typically 700MB to 1.2GB, significantly increasing build times and registry storage costs.
Teams using a managed API like ScreenshotAPI.net or SnapAPI eliminate this infrastructure layer entirely. Your application makes an HTTP request and receives a binary response. The browser lifecycle, crash recovery, memory management, and scaling are handled by the API provider. When you switch from ScreenshotAPI.net to SnapAPI, you keep those infrastructure benefits and gain access to three additional capabilities.
The teams that get the most value from SnapAPI are typically building one of several common product types. Website monitoring tools use screenshots to track visual changes over time. SaaS dashboards use the PDF endpoint to generate exportable reports. AI pipelines use the scrape and extract endpoints to feed structured content into LLM workflows. Content aggregators use scraping to pull article text from hundreds of sources daily. E-commerce tools use extraction to monitor competitor pricing and availability. Each of these use cases fits under a single SnapAPI plan, eliminating the multi-vendor complexity that teams running ScreenshotAPI.net alongside separate scraping and PDF services face.
The most successful teams using SnapAPI build around three core workflow patterns. The first is on-demand generation triggered by user action: a user clicks Export or Share, the application calls SnapAPI synchronously or via a background job, and the result is returned to the user within a few seconds. This pattern works well for PDF invoices, screenshot thumbnails, and OG image generation. Response time matters, so caching the result in S3 or a CDN and serving subsequent requests from cache is essential at any meaningful scale.
The second pattern is scheduled batch processing: a cron job or queue-based worker runs overnight or on a fixed schedule, processing a list of URLs and storing the results. Website monitoring tools use this pattern to capture daily screenshots for visual diff alerts. Price monitoring pipelines use it to extract product data from thousands of e-commerce pages. Content aggregators use it to scrape and index hundreds of sources daily. SnapAPI handles all of these with the same endpoints and the same authentication.
The third pattern is event-driven processing: a webhook or message queue triggers a SnapAPI call whenever a relevant event occurs. A new product is added to the catalog, triggering a screenshot for the listing thumbnail. A customer submits a URL for monitoring, triggering an initial capture. A content management system publishes a new article, triggering OG image generation. This pattern integrates SnapAPI into the normal event flow of an application rather than treating it as a standalone feature.
SnapAPI keys should never appear in client-side code, public repositories, or URL parameters. Store them in environment variables and access them server-side only. If you need to trigger screenshots from a frontend application, proxy the request through your backend: the frontend calls your API, your backend adds the SnapAPI key and forwards to SnapAPI, and returns the result to the frontend. This keeps the key out of browser network logs and JavaScript bundles entirely.
Unlike some screenshot APIs that pass the API key as a query parameter (which appears in server logs and browser history), SnapAPI uses the X-API-Key header. This is the correct pattern for production API authentication because headers are not logged by most reverse proxies and CDNs in their default configuration, and they are not visible in browser address bars or shared link previews.