Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run Scan×
Skip to content
iOS

How to Capture Website Screenshots on iOS with an API

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a website displayed inside your iOS app, load it in WKWebView and use Apple’s asynchronous takeSnapshot(with:completionHandler:) API after the page is ready. For a screenshot of a URL without maintaining a web view—or for a long, full-page capture—use a hosted screenshot API. A web-view snapshot is not automatically a complete full-page image, and a hosted API’s mobile emulation is not a photograph of a physical iPhone screen.

Choose the capture method that matches the result

There are two different jobs commonly called “taking a website screenshot on iOS”:

  • Capture a page your app displays: use WKWebView. It renders the page in the app, and takeSnapshot(with:completionHandler:) asynchronously returns a platform-native image of the web view’s contents. This is a good fit when the page is already part of an app flow or needs to be rendered in the app’s own web view.
  • Send a URL and receive an image or document: use a hosted screenshot API. A remote browser renders the page, so the iOS app does not need to host and manage a rendering surface. Check whether the service supports full-page capture, the required output format, and any authentication or dynamic-content behavior your app needs.

Apple’s WKWebView snapshot reference describes an asynchronous image generated from web-view content. The WKWebView reference also lists PDF and web-archive capture capabilities. These are distinct from a general-purpose REST endpoint that accepts any URL.

Capture a page locally with WKWebView

Use this route when the app should render the page itself. Keep the web view alive until the snapshot completion handler runs, and trigger capture only after navigation and any app-specific readiness condition have been met.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
  • This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
  • Please check with your carrier to verify compatibility.
  • The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
  • Tested for battery health and guaranteed to have a minimum battery capacity of 80%.

1. Create and retain a web view

Create the WKWebView with the viewport dimensions you intend to capture. Its visible size and layout affect the result. Retain it in your view controller or another owner for the duration of loading and capture; do not create it as a short-lived local object and let it disappear while navigation is in progress.

2. Load the URL

Construct a URLRequest and load it in the web view. Handle navigation failures as well as successful completion. If the page requires app-controlled cookies, headers, or authentication, configure those as part of the web-view loading flow rather than assuming a screenshot call will provide them.

3. Wait for the content you need

A completed navigation is a useful baseline, but not a guarantee that every page element is ready. JavaScript may insert content after the initial document load; images may load later; and a single-page app may update without a new navigation. Use an app-specific readiness signal where possible, such as a message from page JavaScript or a known element becoming available. A fixed delay can help with simple pages, but it is not a reliable substitute for knowing what content must be present.

4. Request and handle the snapshot

Call takeSnapshot(with:completionHandler:), optionally providing a WKSnapshotConfiguration when the capture rectangle or related behavior needs to be specified. The completion handler is asynchronous: check its error and image result before saving, displaying, or uploading the image. The exact pixel dimensions depend on the web view’s size and the capture configuration; do not assume a viewport image includes content below the visible area.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Save or upload the image

Pass the returned image into the app’s normal image or file pipeline. If you convert it to a file, choose an image encoding and destination appropriate to the feature, then handle write or upload failures separately from rendering failures. For long pages, decide explicitly whether the product needs a PDF or full-page image; a normal viewport snapshot is not a full-page guarantee.

Full-page capture is a separate requirement

A web view snapshot represents web-view content, but it should not be treated as an automatic capture of an arbitrarily long page. A full-page artifact may need a PDF route, a suitable capture configuration, or a server-side renderer that explicitly supports full-page behavior. Choose based on whether the consumer needs a paginated document, one tall image, or just the current viewport.

Rank #2
Apple iPhone 16, 128GB, Pink - Unlocked (Renewed)
  • 6.1" Super Retina XDR OLED, HDR10, Dolby Vision, 1000nits (typ), 2000nits (HBM), 2556x1179px at 460ppi, 3561mAh Battery
  • 128GB 8GB RAM, Apple A18 (3nm), Hexa-core (2x4.04 GHz + 4x2.20 GHz), Apple GPU 5-core, 16‑core Neural Engine
  • Rear camera: 48MP, f/1.6, wide + 12MP, f/2.2, ultrawide, Front Camera: 12MP, f/1.9, wide, iOS 18, upgradable to iOS 18.5
  • 4G LTE: 1/2/3/4/5/7/8/12/13/14/17/18/19/20/25/26/28/29/30/32/34/38/39/40/41/42/48/53/66/71, 5G: n1/2/3/5/7/8/12/14/20/25/26/28/29/30/38/40/41/48/53/66/70/71/75/76/77/78/79 - Dual eSIM
  • Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Sprint., Etc.

Test the actual pages and output format. Lazy-loaded images can appear only after scrolling; sticky headers can be repeated or positioned differently; animations can produce inconsistent frames; cookie banners may obscure content; and cross-origin resources may load differently from first-party content. Validate the result at the viewport and page lengths your app supports.

Do not confuse UIScreenshotService with a URL screenshot API

UIScreenshotService is for integrating with the system screenshot flow, not for making a generic network request that turns an arbitrary URL into an image. Apple describes it as coordinating PDF screenshots of app content: the app assigns a delegate, and UIKit asks that delegate for PDF data when a person takes a screenshot. Apple also says that beginning with iOS 17 and iPadOS 17, people can share or save the generated full-page screenshot as a PDF or image. See Apple’s UIScreenshotService documentation for the system integration details.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use this framework when your feature belongs in the user-initiated screenshot experience. If your app needs to submit a URL and receive a rendered artifact under its own workflow, use a web view or a hosted screenshot API instead.

Use a hosted screenshot API from an iOS app

A hosted API is appropriate when you want to request a screenshot without embedding a browser surface in the app. The client sends a URL and request options; the provider renders it remotely and returns an image or document. This can simplify rendering infrastructure in the iOS client, but it means the page is rendered by the provider’s browser environment, not by the user’s physical iPhone.

What to check before choosing a provider

  • Full-page behavior: confirm the exact option and whether the service handles scrolling or lazy-loaded content.
  • Mobile rendering: determine whether the provider offers viewport or device emulation, and test important pages against the physical-device result you actually need.
  • Output: verify supported formats, image or PDF behavior, and any size or page-range controls.
  • Dynamic pages: check the controls for delays, scrolling, reduced motion, or waiting for a page condition.
  • Privacy and access: establish how credentials, cookies, and private URLs are supplied and handled before sending sensitive pages to a remote renderer.
  • Operations: compare asynchronous jobs, batching, documented limits, pricing, and failure handling against your expected workload. Feature documentation alone does not establish comparative latency, price, or accuracy.

Documented options to consider

ScreenshotNeo is the first option to try when a clean capture and predictable billing matter: it removes cookie/consent banners, newsletter popups, and chat widgets before capture, and only clean shots are billed. Its API returns PNG, JPEG, WebP, or PDF, and its MCP server provides screenshot tools for AI agents.

Urlbox documents URL or HTML rendering, full_page=true, element-specific capture, PNG/JPEG/WebP/AVIF/SVG/PDF output, and stitch or native full-page modes. Its POST endpoint accepts URL or HTML payloads and can return results synchronously or asynchronously.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

ScreenshotOne documents HTTPS GET and POST requests, full_page=true, scrolling and delay controls, reduced-motion options, and mobile viewport or device emulation such as an iPhone profile. Its documentation warns that it uses browser emulation rather than a physical device, so device screenshots are approximations.

ApiFlash documents a screenshot API with a full_page option for capturing an entire target website.

Rank #3
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
  • 6.1inch Super Retina XDR display. Aluminum with color-infused glass back. Ring/Silent switch
  • Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU
  • Advanced dual-camera system. 48MP Main | Ultra Wide. Super-high-resolution photos (24MP and 48MP). Next-generation portraits with Focus and Depth Control. 4X optical zoom range
  • Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
  • Up to 26 hours video playback. USB C, Supports USB 2. Face ID

These documented features establish possible capabilities, not a neutral ranking for speed, accuracy, or cost. Compare the providers against representative pages and your own privacy, output, and reliability requirements.

Or skip the browser setup

Instead of configuring and managing a rendering surface in the iOS client, send a URL to ScreenshotNeo’s screenshot API. The following cURL request saves a WebP screenshot of the example page:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Get an API key and see the request options in the ScreenshotNeo API documentation. The response can be a PNG, JPEG, WebP, or PDF. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots, and the Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Each response includes X-Page-Verdict and X-Billed headers to indicate the page result and billing status. Sign up for 1,000 free screenshots a month with no card.

Swift example for calling a screenshot endpoint

For an iOS app using a hosted API, send an HTTPS request with URLSession and treat the response as data to validate before saving. The endpoint, authentication parameter, and response behavior depend on the selected provider. For ScreenshotNeo, the API base is https://api.screenshotneo.com/v1/shot and the request uses an access key and URL. Keep the key out of source control and avoid logging it.

import Foundation

func captureWebsite(url: URL, accessKey: String) async throws -> Data {
    var components = URLComponents(string: "https://api.screenshotneo.com/v1/shot")!
    components.queryItems = [
        URLQueryItem(name: "access_key", value: accessKey),
        URLQueryItem(name: "url", value: url.absoluteString)
    ]

    var request = URLRequest(url: components.url!)
    request.httpMethod = "GET"
    request.timeoutInterval = 90

    let (data, response) = try await URLSession.shared.data(for: request)
    guard let http = response as? HTTPURLResponse,
          (200...299).contains(http.statusCode) else {
        throw URLError(.badServerResponse)
    }
    return data
}

This example returns response bytes after an HTTP success status. Before presenting or persisting them, validate the content type or decode the image, and handle API-specific error responses and headers according to the provider’s documentation. A timeout or non-success response is a request failure, not proof that the target page itself is blank.

Other request examples

The same API request can be made from scripts or a backend. Replace the example target URL if needed, use your own access key, and consult the API documentation for supported options.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python

import requests

r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

The Python example writes the response body directly, so production code should check the status and response headers before treating the bytes as an image. The Node.js example shows request construction; production code should check res.ok and handle the response body and errors.

Rank #4
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
  • This pre-owned product is not Apple certified, but has been professionally inspected, tested and cleaned by Amazon-qualified suppliers.
  • There will be no visible cosmetic imperfections when held at an arm’s length.
  • This product is eligible for a replacement or refund within 90 days of receipt if you are not satisfied.
  • Product may come in generic Box.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Options that affect screenshot results

When implementing a hosted capture, specify only the controls the use case needs. ScreenshotNeo documents these options:

  • Page extent and target: full-page capture with lazy images loaded, or a single element selected by CSS selector.
  • Viewport and appearance: 12 device presets or a custom viewport, retina scale, and dark mode.
  • Output: PNG, JPEG, WebP, or PDF, including PDF paper size, margins, landscape orientation, and page ranges; image resizing and transparent backgrounds are also available.
  • Timing and interaction: wait for a selector, a delay, or network idle; click an element before capture; apply custom CSS or JavaScript.
  • Request environment: custom headers, cookies, user agent, Authorization, timezone, and geolocation.
  • Page cleanup and network control: remove known consent platforms, newsletter popups, and chat widgets, with each cleanup step switchable; block ads, trackers, requests, or resource types.
  • Delivery and scale: caching with a chosen TTL, signed links for public <img> tags, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API, and an OpenAPI specification.

ScreenshotNeo says parameter names used by other screenshot APIs also work, which can make switching easier. Still, check each parameter’s documented behavior and validate output when moving between providers; similar names do not guarantee identical rendering.

Troubleshooting capture failures and mismatches

The WKWebView image is blank or incomplete

Confirm that navigation succeeded and that the view remains alive through snapshot completion. If the page fills content asynchronously, wait for the relevant app or page readiness condition instead of capturing at navigation completion alone. Check whether the missing content is below the viewport or lazy-loaded; a viewport snapshot is not a full-page capture.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The capture misses images or shows an intermediate state

Wait for the content that matters, and test whether images load only after scrolling or a script runs. On a hosted renderer, use its documented selector, delay, network-idle, or scrolling controls where appropriate. A fixed wait may be too short on a slow page and unnecessarily long on a fast one.

The screenshot differs from a real iPhone

A hosted service’s iPhone profile is browser/device emulation, not capture from a physical iPhone. Differences can arise from viewport, user agent, device scale, browser engine, fonts, permissions, and site behavior. If physical-device fidelity is essential, render and capture in the app’s own WKWebView and test on the target devices.

A long page is truncated

Check whether the chosen method is limited to the visible viewport. For a document, use a PDF route where it fits; for one tall image, select a renderer with explicit full-page support and test lazy content and sticky elements on the target pages.

A hosted request fails or returns unexpected bytes

Check the HTTP status, provider-specific response headers, output format, access key, URL encoding, and request timeout. Do not save an error response as though it were an image. With ScreenshotNeo, inspect X-Page-Verdict and X-Billed to distinguish a clean capture from a page outcome that was not billed.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Apple iPhone 16e, 128GB, Black - Unlocked (Renewed)
  • 6.1" Super Retina XDR OLED, HDR10, 800 nits (HBM), 1200 nits (peak), 2532x1170px at 460ppi, 4005mAh Battery
  • 8GB RAM, Apple A18 6-core CPU (2 performance + 4 efficiency cores), Apple GPU 4-core, 16‑core Neural Engine
  • Rear camera: 48MP, f/1.6, wide, Front Camera: 12MP, f/1.9, wide, iOS 18.3.1, upgradable to iOS 18.5
  • Connectivity: Global 4G LTE, Sub-6 GHz 5G, LTE, Wi-Fi 6, Bluetooth 5.3, NFC, USB-C, Wireless Charging (7.5W). (does not have mmWave 5G or MagSafe or physical SIM card) - Dual eSIM Only
  • Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Straight Talk., Etc.

Performance, reliability, and cost decisions

A local web view avoids a remote screenshot-rendering request, but your app must manage page loading, readiness, memory, and capture behavior. A hosted API separates rendering from the iOS client, but adds network latency and dependence on a remote service. The available provider documentation establishes feature sets; it does not provide a comparable independent speed or accuracy benchmark, so measure representative URLs under your own conditions before making performance claims.

For cost planning, establish expected monthly volume, retry behavior, and what happens on bot checks, timeouts, blank pages, and cache hits. ScreenshotNeo’s stated billing policy charges only clean shots: bot checks/CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, with page and billing outcomes reported in response headers. Its listed plans are monthly allowances; yearly billing gives two months free.

ScreenshotNeo plan Price and allowance
Free 1,000 shots/month, no card
Starter $5 for 3,000 shots
Growth $15 for 15,000 shots
Pro $39 for 60,000 shots
Scale $99 for 250,000 shots
Business $249 for 1,000,000 shots

All listed ScreenshotNeo plans include every feature; yearly billing provides two months free. Check the current plan terms before committing, especially if your volume is sensitive to retries or burst traffic.

Frequently Asked Questions

Can an iOS app screenshot a website without showing a web view?

Yes. A hosted screenshot API can render a URL remotely and return an image or document, so the app need not display its own web view.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does an iPhone-profile API screenshot prove what a physical iPhone displays?

No. Browser-based device emulation is an approximation; validate against physical devices if exact device output matters.

Is UIScreenshotService a REST API for arbitrary URLs?

No. It supports the system’s user-requested screenshot flow for app content.

Quick Recap

Bestseller No. 1
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed)
Please check with your carrier to verify compatibility.; Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
$308.00
Bestseller No. 3
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
Apple iPhone 15, 128GB, Black - Unlocked (Renewed)
Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU; Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
$410.00
Bestseller No. 4
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed)
There will be no visible cosmetic imperfections when held at an arm’s length.; Product may come in generic Box.
$262.00

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read next

Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.