How to Send Apify Website Screenshots to Google Drive Automatically
Set up Apify to capture websites and send run results to Google Drive. Learn how to verify the screenshot file, schedule runs, and troubleshoot missing images.
Short answer: Apify has a native Google Drive integration you can configure for an Actor or saved task. Connect your Google account, set a filename and format, then enable the integration. By default, it runs after a successful Actor run and uploads results to an Apify Uploads folder. For screenshot workflows, verify that Drive contains the actual image file: an Actor may store screenshot binaries in a Key-Value Store and put only links or metadata in its dataset.
How the workflow fits together
An Apify Actor is a program that accepts structured input and performs a task, such as opening a page in a browser and capturing it. An Actor run can produce more than one kind of output. For screenshots, the image may be stored as a file in a Key-Value Store, while the dataset contains structured results or links. Those are distinct outputs, so a dataset export does not necessarily mean the image binary was copied to Drive.
- Capture: An Actor opens the target website and produces a screenshot. Available device and format settings depend on the Actor and its version.
- Store: The Actor saves its output. Check whether the image is a Key-Value Store file or is included directly in the dataset.
- Deliver: The Drive integration transfers run results to the configured folder after a successful run by default.
Apify documents its screenshot workflow and the separation between screenshot files and dataset links in its website screenshot Actor information and screenshot tutorial. The exact output behavior depends on the Actor you select.
Set up automatic uploads with the native Drive integration
- Choose a screenshot Actor. Select an Actor that captures the website and supports the output you need. Review its current input fields, output formats, and where it stores files. Enter one or more target URLs and configure its capture options.
- Save a task if you will reuse the setup. A task keeps a reusable Actor configuration. This is useful for recurring captures because you can schedule a saved Actor or task run.
- Open Integrations. In the Actor or task configuration, find the Integrations tab and select the Google Drive upload integration.
- Connect Google Drive and configure output. Authorize the Google account, choose a filename and format, and review any available filename variables. The documented destination is a folder named
Apify Uploads. - Save and enable the integration. Successful runs trigger the integration by default. Confirm the integration is enabled and attached to the Actor or task you intend to run.
- Run a test capture. Open the run details and confirm the Actor succeeded. Then inspect
Apify Uploadsin Drive. Open or download the result and confirm it is the screenshot image, not only a dataset export, URL, or metadata record. - Schedule the run if needed. Configure a schedule for the Actor or task when you want recurring captures. Run one scheduled cycle and check both run status and the resulting Drive file before relying on the workflow.
See Apify’s documentation for integrations and scheduled runs for the current controls and available options.
Check that Drive received the screenshot itself
The most important validation is file-level: does Drive contain an image that opens as the expected capture? A successful Actor run and a Drive upload can still leave you with a dataset export that contains a link rather than the screenshot bytes.
- Look at the Drive filename and file type. Confirm the extension and that Drive recognizes the file as the intended image format.
- Open or download the file. Check that the image renders and depicts the requested page.
- Compare it with the Actor run’s output. If the Actor stores the screenshot in its Key-Value Store, confirm that the Drive result corresponds to that stored file.
- Repeat the check after changing the Actor, its version, output settings, or the integration configuration.
If only records or links appear in Drive, use a downstream workflow that retrieves the screenshot file from the Actor’s Key-Value Store and uploads those bytes to Google Drive. Apify supports API and external integration workflows, but the precise implementation depends on the Actor’s output and the workflow platform you use. See the Apify API reference and integration documentation. Check the selected Actor’s current documentation for the key name and file retrieval details; do not assume a dataset URL is the binary file.
Choose the right delivery route
| Route | Best fit | What to verify |
|---|---|---|
| Native Google Drive integration | Quick setup when the integration’s run output matches what you need | Whether it transfers screenshot binaries or only run results such as datasets; filename, format, and destination |
| Scheduled Actor or task plus native integration | Recurring captures with a reusable configuration | Schedule, success-trigger behavior, and whether failed runs need a separate alert or retry step |
| API, webhook, or integration-ready downstream step | File-level control, custom failure handling, or retrieval from a Key-Value Store | How the step retrieves the correct file, handles authorization, uploads the binary, and reports failures |
Apify documents scheduled runs and integrations that can react to run events. Choose based on the output you need and verify actual file transfer in a test run.
Make the workflow reliable
- Use a stable naming pattern. Include a site or job identifier and a date or run value if the integration supports filename variables. Check how repeated names behave in the destination before scheduling frequent runs.
- Separate capture failures from delivery failures. A screenshot may fail to load even when the integration is configured correctly; a Drive upload may fail after a successful capture. Inspect both the Actor run and the integration result.
- Keep a known-good test URL. Use a page you are authorized to capture and whose behavior is predictable. Re-run it after changing Actor versions or settings.
- Plan for missing artifacts. If a failed run does not trigger the default success-based upload, decide how you will notice and retry it. Event-based integrations or an external workflow can handle follow-up actions.
- Review storage and run frequency. The workload grows with the number of pages, capture frequency, and retained files. Estimate those before setting a high-frequency schedule.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| No file appears in Drive | Integration is not enabled, the wrong Actor or task was configured, Google authorization needs attention, or the run did not succeed. | Check the run status, attached integration, connection, and integration result. Run a test after correcting the configuration. |
| Drive contains a dataset or JSON, but no image | The screenshot binary is stored separately in a Key-Value Store and the integration transferred run results without that binary. | Inspect the Actor’s output stores. Add a downstream step to retrieve and upload the image file, then verify the resulting Drive file. |
| The uploaded file is a link or metadata record | The dataset contains a reference to the screenshot rather than its bytes. | Use the reference to locate the actual stored file and upload the binary. Confirm by opening the Drive file. |
| The run succeeds but the capture is blank or incomplete | The page may not have finished loading, may require interaction, or may behave differently in the Actor’s browser environment. | Review the Actor’s wait and browser options, inspect its run output, and test the URL manually with the same Actor configuration. Available controls vary by Actor. |
| Recurring uploads stop | The schedule may be disabled or misconfigured, a run may be failing, or the integration may need reconnection. | Check recent scheduled run history and integration status. Run the task manually to isolate capture from schedule behavior. |
| Unexpected duplicate or overwritten files | The chosen filename may be constant across runs, and destination behavior depends on integration settings. | Use supported filename variables or a unique run/date component. Test the naming behavior with two runs. |
| Only some target pages are captured | Some pages may time out, block automated access, or fail independently during a multi-URL run. | Check per-page results and Actor logs. Retry failed URLs separately and follow the selected Actor’s guidance for access and wait settings. |
Performance, reliability, and cost considerations
Capture time depends on the pages, the Actor’s browser setup, page loading, and the number of URLs. Large pages and slow resources can extend runs. Keep batches and schedules sized to the Actor and workflow limits documented for your setup, and test representative pages before increasing volume.
For reliability, treat capture, storage, and Drive delivery as separate stages. A successful capture does not prove the image binary reached Drive. Check run and integration outcomes, and use a retry or alerting step when missed files matter. Apify supports schedules and event-driven integrations; their exact behavior and configuration should be checked in the current docs.
Costs depend on the Actor, platform usage, run frequency, and any downstream services. Estimate the number of pages and runs, then review the applicable Apify pricing and the chosen Actor’s usage model. The research available for this guide does not establish a specific cost for this workflow.
Or skip the browser setup
ScreenshotNeo is a website screenshot API and MCP server. You can capture a page with one GET request; see the ScreenshotNeo API docs for options and setup.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
- 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.
- 1,000 screenshots a month are free with no card; paid plans start at $5 for 3,000.
Sign up free for 1,000 screenshots a month, with no card required.
FAQ
Does the Drive integration run after every Actor run?
It runs after successful runs by default. Confirm the integration’s current trigger settings for your Actor or task.
Where does Apify put uploaded results?
The documented destination folder is named Apify Uploads. The integration lets you configure a filename and format.
Can I schedule automatic screenshots?
Yes. Apify supports scheduled Actor and task runs. The capture options and file-level delivery still depend on the selected Actor and integration.
Will Drive always contain the screenshot image?
Do not assume so. Verify the image binary is present; a dataset may contain only a link or metadata while the screenshot is stored separately.


