Store screenshots are marketing images: a headline, a device frame and a capture of your app, repeated for every required size and every language you sell in. Five screens in eight languages at two sizes is 80 images, redone each release. Build the layout as an HTML template and render the whole matrix with a script.
Exact pixel sizes
The image size is the viewport times device_scale_factor. Design the template at the device's size in points and render at 3×:
| Store size | Viewport | Scale | Image |
|---|---|---|---|
| iPhone 6.9" | 440 × 956 | 3 | 1320 × 2868 |
| iPhone 6.5" | 414 × 896 | 3 | 1242 × 2688 |
| iPad 13" | 1032 × 1376 | 2 | 2064 × 2752 |
| Google Play phone | 360 × 640 | 3 | 1080 × 1920 |
Check Apple's and Google's current requirements before you submit; required sizes change with new devices.
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"<div style=\"box-sizing:border-box;width:100vw;height:100vh;padding:56px 32px 0;display:flex;flex-direction:column;align-items:center;gap:32px;background:linear-gradient(#4f46e5,#7c3aed);color:#fff;font-family:system-ui;text-align:center\"><h1 style=\"font-size:34px;margin:0\">Track every habit in one tap</h1><img src=\"https://example.com/raw/home-en.png\" style=\"width:82%;border-radius:36px;box-shadow:0 30px 60px rgba(0,0,0,.35)\"></div>","viewport_width":440,"viewport_height":956,"device_scale_factor":3,"format":"png"}' \
--fail-with-body -o shot.pngEvery language and theme
Keep the template on a route of your site, like /store/home?lang=de, and loop over screens × languages × sizes. Translations, right-to-left layouts and per-locale fonts are just CSS and HTML:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/store/home?lang=de&theme=dark","viewport_width":440,"viewport_height":956,"device_scale_factor":3,"format":"png","wait_until":["networkidle0"]}' \
--fail-with-body -o shot.pngWhere the app screenshots come from
The API renders web content; it doesn't run your native app. Capture the raw app screens with the iOS Simulator, Android emulator or fastlane snapshot, then place them in the template as images. If your app is a web app or PWA, you can capture its screens directly with a device preset.
Frequently asked questions
Will the images be exactly the size the store requires?
Yes. The output is exactly the viewport width and height times device_scale_factor, so 440 × 956 at 3× is 1320 × 2868 pixels.
Can I use device frames?
Yes. Use a transparent PNG of the device frame from Apple's or Google's design resources and position your app screenshot inside it with CSS.
Can it screenshot my native iOS or Android app?
No. It renders web pages and HTML. Use the simulator, emulator or fastlane to capture native screens, and this API to compose the marketing images around them.
PNG or JPG?
The App Store accepts both; PNG keeps text in headlines sharp. Google Play accepts PNG or JPG up to 8 MB.