# PageCapture > A web page capture API. Send a URL, HTML or Markdown and get back an image, PDF, rendered HTML, Markdown or video. - 144 documented parameters, 26 stable error codes. - Image formats: png, jpeg, jpg, webp, gif, jp2, tiff, avif, heif, pdf, html, markdown, text. Video: mp4, mov, avi, webm, gif. - A successful, non-cached capture costs one credit. Failures and cache hits are never charged. ## API - [OpenAPI 3.1](https://www.pagecapture.dev/openapi.json): the complete machine-readable contract. - [Full reference for LLMs](https://www.pagecapture.dev/llms-full.txt): every parameter, default and error code inline. - [Device catalog](https://www.pagecapture.dev/v1/devices): 93 viewport presets. - [Region catalog](https://www.pagecapture.dev/v1/regions): 18 proxy countries. - [Egress IP ranges](https://www.pagecapture.dev/egress-ips.json): versioned, for firewall automation. ## Integrations - [Agent skill](https://www.pagecapture.dev/skill.md): a single SKILL.md for AI agents — copy-paste calls, the error envelope and the exact list of retryable codes. - MCP server: `npx -y @pagecapture/mcp`, with `PAGECAPTURE_API_KEY` in the client configuration. Three tools: screenshot, PDF, content extraction. - CLI: `npx -y @pagecapture/cli take `. - [Seven official SDKs](https://www.pagecapture.dev/docs/sdks): TypeScript, Python, Go, Java, PHP, Ruby and .NET. Every one of them speaks the same public HTTP API. There is no agent-only endpoint, no separate pricing and no parallel billing path. ## Documentation - [Quickstart](https://www.pagecapture.dev/docs/quickstart): From signup to your first capture in a few lines. - [Official SDKs](https://www.pagecapture.dev/docs/sdks): Seven first-party clients, their shared contract and publication status. - [Agents and MCP](https://www.pagecapture.dev/docs/agents): The skill, the MCP server, and what the API records about agent traffic. - [Authentication](https://www.pagecapture.dev/docs/authentication): API keys, signed URLs, and when to use each. - [All options](https://www.pagecapture.dev/docs/options): Every public parameter, its type, default and limits. - [Full-page screenshots](https://www.pagecapture.dev/docs/full-page): Long pages, lazy images and sticky headers. - [Selectors and clip](https://www.pagecapture.dev/docs/selectors-and-clip): Capture one element, or an exact rectangle. - [Navigation and waiting](https://www.pagecapture.dev/docs/waiting): When the capture happens, and how to move it later. - [Devices and emulation](https://www.pagecapture.dev/docs/device-emulation): Viewport presets, dark mode, timezone and media type. - [Authenticated pages](https://www.pagecapture.dev/docs/authenticated-pages): Cookies, headers and what happens to them afterwards. - [Blocking](https://www.pagecapture.dev/docs/blocking): Ads, trackers, chat widgets and cookie banners. - [Async and webhooks](https://www.pagecapture.dev/docs/async-and-webhooks): 202, signed callbacks, retries and deduplication. - [Caching](https://www.pagecapture.dev/docs/caching): Free repeat captures, and what makes two requests identical. - [S3 and compatible storage](https://www.pagecapture.dev/docs/storage): Deliver straight into your own bucket. - [Bulk captures](https://www.pagecapture.dev/docs/bulk): Up to 1,000 items in one call. - [Video and animated GIF](https://www.pagecapture.dev/docs/animated-screenshots): Scroll-through recordings from 1 to 30 seconds. - [Errors](https://www.pagecapture.dev/docs/errors): Every error code, what causes it, and whether it is billed. - [Limits](https://www.pagecapture.dev/docs/limits): Body size, rate limits, pixels and retention. - [Egress IP ranges](https://www.pagecapture.dev/docs/egress-ip-ranges): Allow-list our capture traffic in your WAF or firewall. - [Security](https://www.pagecapture.dev/docs/security): SSRF defence, isolation and what we never store. ## Guides Deep tutorials. Each reproduces a real failure, shows the minimal do-it-yourself version, states where it breaks and when it stays enough, then ends in a request executed against a fixture in CI. - [Full-page screenshots with Puppeteer — and where they break](https://www.pagecapture.dev/guides/full-page-screenshot-puppeteer): how to take a full-page screenshot with Puppeteer. Last verified 2026-08-12. - [Running Playwright screenshots in serverless functions](https://www.pagecapture.dev/guides/playwright-screenshot-serverless): Playwright screenshot in serverless. Last verified 2026-08-12. - [Why lazy-loaded content is missing from screenshots](https://www.pagecapture.dev/guides/lazy-load-incomplete-screenshots): avoid incomplete lazy-load screenshots. Last verified 2026-08-12. - [Loading web fonts reliably in HTML-to-image jobs](https://www.pagecapture.dev/guides/web-fonts-html-to-image): load fonts in HTML to image. Last verified 2026-08-12. - [PNG or JPEG when your application generates the image](https://www.pagecapture.dev/guides/png-or-jpeg-for-generated-images): choose PNG or JPEG for a generated image. Last verified 2026-08-26. - [Why a transparent background arrives white, and how to keep the alpha](https://www.pagecapture.dev/guides/transparent-background-renders-white): why a transparent background renders white. Last verified 2026-08-26. - [Generate PDFs with headers, footers and print CSS](https://www.pagecapture.dev/guides/pdf-header-footer-print-css): generate PDF with header footer and print CSS. Last verified 2026-08-12. - [SSRF defense for screenshot APIs](https://www.pagecapture.dev/guides/ssrf-screenshot-apis): SSRF security in screenshot APIs. Last verified 2026-08-12. - [Queue, retry and idempotency for browser jobs](https://www.pagecapture.dev/guides/browser-jobs-queue-retry-idempotency): queue retry idempotency for browser jobs. Last verified 2026-08-12. - [Build vs buy a screenshot API: an editable calculator](https://www.pagecapture.dev/guides/screenshot-api-build-vs-buy): screenshot API build vs buy calculator. Last verified 2026-08-12. - [Turn an authenticated dashboard into a PDF report](https://www.pagecapture.dev/guides/authenticated-dashboard-to-pdf): generate a PDF of a dashboard behind login. Last verified 2026-08-12. - [Invoice PDFs your application can reproduce](https://www.pagecapture.dev/guides/invoice-pdf-from-application-data): generate an invoice PDF from application data. Last verified 2026-08-12. - [Turning Markdown into a file that renders the same everywhere](https://www.pagecapture.dev/guides/markdown-to-standalone-html): turn Markdown into a self-contained HTML file. Last verified 2026-08-26. - [Delivering report PDFs without holding a request open](https://www.pagecapture.dev/guides/scheduled-report-pdf-delivery): deliver a generated PDF report without holding the request open. Last verified 2026-08-12. ## Capabilities One page per option that people search for, with the request executed against a fixture in CI and the limits read from the same table the API validates against. - [Remove the cookie banner before the shutter, not after](https://www.pagecapture.dev/capabilities/block-cookie-banners-screenshot): block cookie banners screenshot. Documents `block_cookie_banners`, `block_banners_by_heuristics`, `hide_selectors`. - [Drop ad, tracker and chat requests before the page renders](https://www.pagecapture.dev/capabilities/block-ads-and-trackers-screenshot): block ads screenshot api. Documents `block_ads`, `block_trackers`, `block_chats`, `block_requests`, `block_resources`. - [Inject your own CSS into a page you do not control](https://www.pagecapture.dev/capabilities/screenshot-with-custom-css): screenshot with custom css. Documents `styles`, `hide_selectors`, `reduced_motion`, `media_type`. - [Hide an element without the page collapsing around it](https://www.pagecapture.dev/capabilities/hide-elements-before-screenshot): hide element before screenshot. Documents `hide_selectors`, `error_on_selector_not_found`, `styles`. - [Run your JavaScript in the page, then capture the result](https://www.pagecapture.dev/capabilities/run-javascript-before-screenshot): run javascript before screenshot. Documents `scripts`, `scripts_wait_until`, `bypass_csp`, `click`, `hover`. - [Wait for the element that means the page is ready](https://www.pagecapture.dev/capabilities/wait-for-selector-screenshot): wait for selector screenshot. Documents `wait_for_selector`, `wait_for_selector_algorithm`, `wait_until`, `delay`, `timeout`. - [Capture one element instead of the whole page](https://www.pagecapture.dev/capabilities/screenshot-element-by-css-selector): screenshot of an element css selector. Documents `selector`, `selector_algorithm`, `selector_scroll_into_view`, `error_on_selector_not_found`, `capture_beyond_viewport`. - [Capture a very long page without one unusable image](https://www.pagecapture.dev/capabilities/screenshot-long-page-in-slices): long page screenshot slices. Documents `full_page`, `full_page_slices`, `full_page_slice_height`, `full_page_slice_overlap_height`, `full_page_max_height`, `full_page_algorithm`. - [Put your own header and footer on every PDF page](https://www.pagecapture.dev/capabilities/pdf-header-and-footer-template): pdf header footer api. Documents `pdf_header_template`, `pdf_footer_template`, `pdf_margin_top`, `pdf_margin_bottom`, `pdf_print_background`, `media_type`. - [Capture the dark version of a page you do not control](https://www.pagecapture.dev/capabilities/dark-mode-screenshot-api): dark mode screenshot api. Documents `dark_mode`, `media_type`, `reduced_motion`, `omit_background`. - [Capture with a transparent background instead of white](https://www.pagecapture.dev/capabilities/transparent-background-screenshot): transparent background screenshot. Documents `omit_background`, `format`, `selector`, `image_quality`. - [Two ways to change the size, and they are not the same one](https://www.pagecapture.dev/capabilities/retina-screenshot-and-resize): retina screenshot api resize. Documents `device_scale_factor`, `image_width`, `image_height`, `image_quality`, `viewport_width`. - [Tell the page where and when it is being viewed](https://www.pagecapture.dev/capabilities/geolocation-screenshot-api): geolocation screenshot api. Documents `geolocation_latitude`, `geolocation_longitude`, `geolocation_accuracy`, `time_zone`, `ip_country_code`. - [The only capture that costs nothing is the one you do not repeat](https://www.pagecapture.dev/capabilities/screenshot-api-caching): screenshot api cache. Documents `cache`, `cache_ttl`, `cache_key`. ## Pricing - Free: $0/mo, 100 credits, 5 starts/minute. - Basic: $10/mo, 2,000 credits, 40 starts/minute. - Growth: $47/mo, 10,000 credits, 80 starts/minute. - Scale: $155/mo, 50,000 credits, 150 starts/minute. - Enterprise: custom, custom credits, 400 starts/minute.