To export Apify website screenshots to Amazon S3, keep each screenshot as a binary file in an Apify key-value store, retrieve its bytes, then upload those bytes to an S3 object key with the AWS SDK or API. Apify’s S3 Uploader is documented for dataset content; its documentation does not establish that it copies screenshot files from a key-value store.
Choose the right Apify storage for screenshots
A screenshot is an image file, not a structured data row. Apify identifies key-value stores as suitable for files such as screenshots, and its JavaScript SDK v1.3 example saves a screenshot buffer with the image/png content type. Use a dataset separately for structured information about the screenshot, such as its source URL, storage key, capture time, or S3 destination.
As an Amazon Associate I earn from qualifying purchases.
| What you need to store or move | Appropriate path | Important distinction |
|---|---|---|
| Screenshot image bytes | Apify key-value store | Designed for file-like records, including screenshots. Apify key-value store documentation |
| Structured screenshot details or a manifest | Apify dataset | Datasets hold sequential structured items and support standard data exports. Apify dataset documentation |
| Dataset content destined for S3 | Apify S3 Uploader | The official integration is described as a dataset-to-S3 transfer, not as a key-value-store image copier. Apify S3 Uploader listing |
| Binary screenshot records destined for S3 | Manual download/upload or a custom SDK/API bridge | Read the image bytes from the key-value store and send them as the S3 object body using PutObject. AWS PutObject API |
Capture and save the screenshot in Apify
If your Actor already creates screenshots, identify the key-value store name and record key it uses. Otherwise, the Apify JavaScript SDK v1.3 documentation illustrates capturing a page into a buffer, then saving it as a key-value-store record with its MIME type. Adapt this documented pattern to the browser library and SDK version used by your Actor; do not assume the example is drop-in compatible with every current Actor.
const screenshotBuffer = await page.screenshot({ type: 'png' });
const screenshotKey = 'screenshots/example-page.png';
await Actor.setValue(screenshotKey, screenshotBuffer, {
contentType: 'image/png',
});
See the Apify JavaScript SDK v1.3 screenshot example and the Apify storage overview. If you use JPEG or WebP instead, match the record’s content type to the actual encoded format.
#1 Best Overall
- Easily store and access 2TB to content on the go with the Seagate Portable Drive, a USB external hard drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
For repeatable exports, record the store name and key along with any metadata needed to locate the corresponding S3 object. Check the chosen store’s name and retention behavior before relying on it for long-term retention. The seven-day expiry stated for unnamed datasets is a dataset rule; it should not be assumed to establish the retention period for an unnamed key-value store. Apify dataset documentation
Upload screenshot bytes to Amazon S3
For a one-off transfer, retrieve or download the image record and pass its bytes to S3. For recurring transfers, an Actor or external service can read the record and call S3 PutObject. This is an implementation pattern based on Apify’s file storage and AWS’s object-upload API, not a claim that an upload has been run or verified.
Rank #2
- Easily store and access 5TB of content on the go with the Seagate portable drive, a USB external hard Drive
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Plan the object key and access
- Choose a stable prefix and naming convention before batch uploads, for example a run identifier plus a sanitized source identifier.
- Do not use a source URL as an S3 key without normalization. The object key is the object’s name/path in the bucket; encode or sanitize characters and avoid collisions. AWS PutObject API
- Give the upload identity only the permissions it needs for the destination bucket or prefix, and protect its credentials.
- Choose intentionally how consumers will access the objects. AWS states that newly added objects are private by default unless access is granted. AWS PutObject API
Upload with the AWS SDK for JavaScript
In a Node.js service or Actor with AWS SDK v3 installed and credentials configured through your deployment’s secure credential mechanism, pass the retrieved image bytes as Body. Supply the matching content type so downstream tools can recognize the object format.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3';
const s3 = new S3Client({ region: process.env.AWS_REGION });
// screenshotBytes must be the bytes read from the Apify key-value store.
await s3.send(new PutObjectCommand({
Bucket: process.env.S3_BUCKET,
Key: 'apify-screenshots/run-123/example-page.png',
Body: screenshotBytes,
ContentType: 'image/png',
}));
This example shows the S3 side of the bridge. Your Apify integration must still retrieve the intended record and supply its bytes as screenshotBytes. Consult AWS PutObject documentation for request behavior and permissions.
Rank #3
- Easily store and access 1TB to content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop. Reformatting may be required for Mac
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Choose a transfer workflow
One-off export
- Find the screenshot record in the correct Apify key-value store.
- Download or retrieve the record as bytes, preserving its actual image format.
- Upload those bytes to your chosen bucket and object key with S3
PutObject. - Confirm the object key, content type, and that the intended consumer can read the object.
Recurring export
- Have your Actor or external worker identify each screenshot record and its store key.
- Read the binary record and upload it to S3 with the appropriate content type.
- Use a predictable, collision-resistant key convention, such as a run ID plus a normalized page identifier.
- Track completion and failures in structured metadata; a dataset can serve as a manifest without becoming the image store.
- Define retry behavior and handle credentials outside source code.
Dataset export
If the material you need in S3 is structured rows—such as a manifest of screenshot URLs, keys, or statuses—the Apify S3 Uploader may fit that dataset workflow. Apify’s help article and the official listing describe dataset uploads; check the current Actor input schema and output layout before relying on a particular export format. They do not establish that the integration reads binary screenshot records from a key-value store. Apify help: uploading a dataset to AWS S3 · Apify S3 Uploader listing
Verify the exported object
After uploading, verify the exact bucket and key, check that the stored content type matches the file, and test access using the same identity or delivery path the eventual consumer will use. A successful API call alone does not confirm that your key convention, permissions, or downstream access setup is correct.
Rank #4
- Easily store and access 4TB of content on the go with the Seagate Portable Drive, a USB external hard drive.Specific uses: Personal
- Designed to work with Windows or Mac computers, this external hard drive makes backup a snap just drag and drop
- To get set up, connect the portable hard drive to a computer for automatic recognition no software required
- This USB drive provides plug and play simplicity with the included 18 inch USB 3.0 cable
- The available storage capacity may vary.
Troubleshoot common failures
- The S3 Uploader does not show the screenshot image. The documented integration targets dataset content. Use a custom bridge or manual download/upload for image records in a key-value store.
- The uploaded object is unreadable or mislabeled. Ensure the request body contains the raw image bytes rather than a URL or encoded text, and set
ContentTypeto the actual format, such asimage/png. - The object appears at an unexpected path or overwrites another image. Review the bucket and key passed to the upload call. Normalize source identifiers and include a run ID or other uniqueness component where needed.
- The upload is denied or the object cannot be read later. Check the AWS identity’s permissions for the destination and the intended consumer’s access path. S3 objects are private by default unless access is granted.
- A record cannot be found later. Confirm the key-value store name and record key used by the Actor, and check the store’s retention behavior rather than assuming it follows dataset rules.
- Example capture code does not work with your Actor. The cited screenshot snippet is for Apify JavaScript SDK v1.3. Check the API and browser tooling used by your current Actor before adapting it.
Or skip the browser setup
If you need a screenshot API rather than an Apify browser workflow, ScreenshotNeo returns PNG, JPEG, WebP, or PDF from one GET request and also offers an MCP server for AI agents. It accepts consent banners like a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each cleanup step can be switched off. Bot checks, blank pages, failed loads, timeouts, and cache hits are not billed, with response headers indicating the page verdict and billing status. This is an alternative capture service, not a direct Apify-to-S3 transfer; you would still need to store or upload the returned bytes to your bucket.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchOne-call cURL example, using the ScreenshotNeo API documentation:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo includes 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000 screenshots. Sign up for ScreenshotNeo free.
Best Value
- Plug-and-play expandability
- SuperSpeed USB 3.2 Gen 1 (5Gbps)
Frequently Asked Questions
Can Apify’s S3 Uploader copy a screenshot from a key-value store directly?
Its documented scope is uploading dataset content to S3; direct key-value-store image copying is not established. Use a custom byte-transfer bridge for screenshot files.
Should screenshot metadata go in the same place as the image?
A useful pattern is to keep image bytes in a key-value store and put structured metadata or a manifest in a dataset.
Recommended Free Tools
Quick Recap
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.




