Full-Page Website Screenshots with Apple Shortcuts

Build an iPhone, iPad or Mac shortcut that saves a full-page screenshot of any web page from the share sheet, using Get Contents of URL and our API.

By Simon Chiu · Updated

iOS can capture a whole web page, but only from Safari's screenshot editor, and the result is a PDF. A shortcut that calls a screenshot API gives you a full-length JPEG in Photos from the share sheet of any app: Safari, Chrome, Mail, Slack or a link in Notes. This page builds that shortcut action by action, plus a second one that copies a public image link instead of saving a file. It is part of the screenshot API integrations.

What you can build

  • "Save full page to Photos". Share any link, get the whole page as one tall image at phone width, ready to mark up or send.
  • "Copy screenshot link". Share a link, get a public image URL on the clipboard to paste into a chat or a ticket. Nothing is saved on the phone.
  • Desktop view from a phone. Swap the device for a laptop such as macbook_air to see how a page looks on a laptop while you are away from one.

Prerequisites

  • iOS or iPadOS 17 or later, or macOS 14 or later, with the Shortcuts app.
  • A RenderScreenshot API key that starts with rs_live_. Get a free key. Use a key only for this shortcut, so you can revoke it if the phone is lost.

Shortcut 1: Save full page to Photos

Create a new shortcut named Save Full Page. Open its details (the i button) and turn on Show in Share Sheet. Then add these actions in order:

  1. Receive input from Share Sheet. Set the types to URLs and Safari web pages. Set If there's no input to Ask For URLs, so the shortcut also works from the home screen.
  2. Text. Paste your rs_live_ key. Rename the output to API Key (tap the variable, then Rename).
  3. Get URLs from Input with Shortcut Input. A Safari web page becomes its address here.
  4. Get Contents of URL. Enter https://api.renderscreenshot.com/v1/screenshot, then tap Show More and set:
    • Method: POST
    • Headers: Authorization = Bearer followed by the API Key variable
    • Request Body: JSON, with the fields in the table below
  5. Get Dictionary Value for key error in Contents of URL.
  6. If Dictionary Value has any value:
    • Show Alert with Dictionary Value, then Stop This Shortcut.
  7. Otherwise: Save to Photo Album with Contents of URL (album: Recents).
  8. End If.

The JSON body, entered as fields in the action:

Key Type Value
url Text the URLs variable from step 3
device Text iphone_14
viewport Dictionary scale (Number) = 2
capture Dictionary mode (Text) = full_page; scroll (Dictionary) with max_height (Number) = 6000
output Dictionary format (Text) = jpeg; quality (Number) = 85
block Dictionary ads (Boolean) = true; cookie_banners (Boolean) = true

This is the same request, written out, so you can test it in a terminal before you build the shortcut:

curl -X POST https://api.renderscreenshot.com/v1/screenshot \
  -H "Authorization: Bearer $RS_API_KEY" \
  -H "Content-Type: application/json" \
  -o page.jpg \
  -d '{
    "url": "https://example.com",
    "device": "iphone_14",
    "viewport": { "scale": 2 },
    "capture": { "mode": "full_page", "scroll": { "max_height": 6000 } },
    "output": { "format": "jpeg", "quality": 85 },
    "block": { "ads": true, "cookie_banners": true }
  }'

Why these values:

  • device is a top-level field. It sets the iPhone viewport, mobile mode and Safari user agent. Nested inside viewport it is accepted but ignored in the current API version, as the device reference explains.
  • Scale 2, not 3. iphone_14 renders at scale 3 by default. A 6,000-pixel page at scale 3 is 18,000 pixels tall, which is slow to open in Photos and adds little detail. An explicit viewport.scale wins over the device.
  • A height cap. Infinite feeds would otherwise grow to the default limit. The full-page guide covers lazy loading and the other scroll options.
  • JPEG at 85. Long pages are mostly photos and gradients, where JPEG is much smaller than PNG.

Duplicate the first shortcut and rename it Copy Screenshot Link. Change three things:

  1. In Get Contents of URL, add a second header: Accept = application/json. The API then answers with JSON that holds a public CDN link, not the image (response formats).
  2. Add cache (Dictionary) to the body with ttl (Number) = 604800, so the link works for 7 days.
  3. Replace Save to Photo Album with two Get Dictionary Value actions: key image from Contents of URL, then key url from that result. End with Copy to Clipboard and Show Notification "Link copied".

The link needs no key and expires after the TTL. The X-Cache-URL guide explains how long it lives and when to keep your own copy.

Parameter mapping

Shortcut input API field Notes
Shared URL or Safari page url Only http and https pages; a shared file has no URL
(fixed) iphone_14 device Try ipad_pro_11 or macbook_air for other views; see mobile screenshots
(fixed) full page capture.mode, capture.scroll.max_height Remove capture for the first screen only
(fixed) JPEG 85 output.format, output.quality Use png for text-heavy pages
Accept header response shape Image bytes, or JSON with image.url

Errors and retries

Do not count on Get Contents of URL to stop the shortcut on an HTTP error. The API always sends a JSON body with an error object when a request fails, so the shortcut checks for that key itself. The alert then shows the API's error object, including a code such as navigation_failed, timeout or too_many_requests and a link to its page under error codes. The shortcut does not retry. Run it again for a retryable error. A missing_credentials error means the Text action holds no key or a wrong one.

Limits and costs

  • Each run is one fresh render and costs one credit. See pricing.
  • The rate limit is per account and shared with every other key on the account. A shortcut is far below it, unless it shares an account with a busy production app.
  • The page renders on our servers, signed out. Pages that need your login, or that only work on your home network, will not render as you see them.

Troubleshooting

Symptom Cause Fix
The shortcut is missing from the share sheet Show in Share Sheet is off, or the input types exclude URLs Turn it on and add URLs and Safari web pages
Alert shows invalid_url The input was text or a file, not a link Share the page itself, not a selection
Photos gets a tiny image The response was an error JSON saved as a file Keep the If check before Save to Photo Album
A long wait, then a timeout alert The page is slow or very long Lower max_height, or remove capture for one screen
A cookie banner covers the top The site's banner is not in the blocklist Add page.hide with the banner's CSS selector to the body

Last checked 2026-10-18. The request body follows the API spec and the device reference. The shortcut has not yet been built and run on iOS or macOS, and there is no shareable iCloud link yet.

Frequently asked questions

Can an iOS Shortcut take a full-page screenshot of a website?
Not with the built-in actions alone. Safari's own full-page capture saves a PDF, and Shortcuts has no action that scrolls and stitches a page. A shortcut can send the page URL to a screenshot API with Get Contents of URL and save the PNG or JPEG it returns.
Where should I keep the API key in a shortcut?
In a Text action at the top of the shortcut. If you share the shortcut, clear that action first and add it as an import question, so each person who adds the shortcut types their own key.
Does the page load with my Safari login?
No. The page is rendered by the API's browser, not by Safari, so it sees what a signed-out visitor sees. Pages behind a login need cookies or headers in the request.

Related in this topic

Try RenderScreenshot free

150 free credits every month, no credit card required.