What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Use a real browser, wait for the specific content your screenshot needs, then call page.screenshot() and save its image buffer. A navigation or load event alone may happen before a JavaScript application has finished rendering; a selector or page condition tied to the target content is usually a better readiness signal. Apify’s examples use Puppeteer with Crawlee and can store the image in the Actor key-value store. Apify’s SDK example demonstrates that capture-and-store flow.
Capture after the required content is ready
JavaScript-driven pages can update after the initial document loads. A browser automation tool runs the page’s scripts; a static HTML request may not include content created by those scripts. The important question is not whether every script or network request has stopped, but whether the element or state you want to show is ready.
- Open the page in a browser controlled by Puppeteer or Playwright.
- Navigate to the target URL or trigger the navigation.
- Wait for a selector or condition that represents the content needed in the screenshot.
- Capture the page with
page.screenshot(). - Save the returned image locally or store it in Apify’s key-value store.
Choose a wait condition that matches the page
| Wait strategy | Use it when | Limitation |
|---|---|---|
| Navigation or load event | A click or action should load a new document. In Playwright, Apify’s tutorial shows waiting for page.waitForLoadState('load') after the action. |
The event can arrive before late client-side rendering finishes. Apify’s page methods tutorial covers the navigation pattern. |
| Specific selector | A particular element signals that the needed content exists, such as a results panel or rendered title. | The selector may never appear. Set a timeout and handle the failure; confirm the selector is stable and means the content is ready. |
| Page condition | Readiness depends on application state rather than one element. | The condition must reflect the actual screenshot requirement; an overly broad condition can still capture too early. |
| Fixed delay | No reliable selector or condition is available, so a delay is a last-resort fallback. | A fixed delay can waste time and still miss slow or variable rendering. The Apify sources establish no universal delay. |
Waiting for all network activity to stop is not a universal readiness test. Some sites keep requests running or continue updating; as Apify’s Puppeteer Scraper tutorial puts it, “It would never stop waiting.” Wait for the material that needs to appear instead. Apify Documentation: Scraping with Puppeteer Scraper.
Capture and store a screenshot with Apify’s Puppeteer example
This example follows Apify’s documented SDK flow: launch Puppeteer through Crawlee, navigate, wait for a page-specific selector, capture a full-page PNG buffer, store it in the Actor key-value store, and close the browser and Actor. Replace the illustrative selector with one that genuinely indicates the content is ready on your page.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows 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 reinstall#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
import { Actor } from 'apify';
import { launchPuppeteer } from 'crawlee';
await Actor.init();
const browser = await launchPuppeteer();
try {
const page = await browser.newPage();
await page.goto('https://example.com');
// Replace with a stable selector for the content to capture.
await page.waitForSelector('[data-page-ready="true"]', { timeout: 15000 });
const screenshot = await page.screenshot({ fullPage: true });
await Actor.setValue('screenshot', screenshot, { contentType: 'image/png' });
} finally {
await browser.close();
await Actor.exit();
}
The selector and 15-second timeout here are illustrative choices, not a tested guarantee for any particular website. Adapt both to the target page and handle a timeout if the content is optional or may not appear. Apify’s example also describes utils.puppeteer.saveSnapshot() as an alternative that can save screenshot data and optionally page HTML. Check the matching current SDK documentation and Actor image for setup details; the cited example does not establish a complete current compatibility matrix for Apify Actor images, Crawlee, Puppeteer, and Playwright.
Wait for navigation in Playwright, then for application content
When an interaction initiates navigation, Apify’s tutorial demonstrates this pattern:
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
await page.click('a.some-link');
await page.waitForLoadState('load');
await page.screenshot({ path: 'screenshot.png' });
If the desired content is rendered after the load event, insert a content-specific wait before the screenshot:
await page.click('a.some-link');
await page.waitForLoadState('load');
await page.waitForSelector('[data-page-ready="true"]', { timeout: 15000 });
await page.screenshot({ path: 'screenshot.png', fullPage: true });
Use a selector that belongs to the destination content, not merely the clicked link. If navigation can finish before your code starts waiting for it, use the navigation-wait pattern recommended by the Playwright version in your project; a late wait can miss the event. For a target that does not navigate, wait directly for the target content instead.
Recommended Free Tools
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
Save the image locally or change its format
For a local file, Apify’s Academy example uses path:
await page.screenshot({ path: 'screenshot.png' });
PNG is the default in that tutorial. To request JPEG, set the screenshot type option:
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
await page.screenshot({ path: 'screenshot.jpg', type: 'jpeg' });
For Apify storage, page.screenshot() returns image data that can be passed to Actor.setValue() with an image content type, as in the Puppeteer example above. Use fullPage: true when you need the full document rather than only the visible viewport.
Troubleshoot missing or failed captures
- The screenshot lacks the JavaScript-rendered material: The wait may describe document loading rather than application readiness, or the selector may be too early or unrelated. Wait for an element or condition that represents the content itself.
waitForSelectortimes out: Check that the selector exists on the live page, is not inside a different frame, and is expected for that URL and state. Increase the timeout only if the page legitimately needs longer; handle cases where the content may not appear.- The click target is missing: Wait for the target selector before interacting, as Apify’s page-method guidance illustrates. A click cannot succeed before its element exists.
- The expected navigation wait misses the transition: Navigation may complete before the code begins waiting. Use a navigation-wait pattern appropriate to your Playwright version and place it around the action that triggers navigation.
- Waiting for network quiet hangs or remains unreliable: Ongoing polling and background requests can prevent a universal “everything finished” state. Replace it with a content-specific signal.
- The file is saved but looks incomplete: A successful screenshot call only proves that an image was captured. Revisit the readiness condition and verify that it corresponds to all content the image must include.
- Imports or launch setup fail: The example’s package setup is not a version compatibility promise. Consult the current Apify SDK documentation matching your Actor image and installed Crawlee/Puppeteer packages.
Or skip the browser setup
ScreenshotNeo provides a screenshot API: one GET request with a URL returns a PNG, JPEG, WebP, or PDF. Its capture can accept cookie and consent banners and remove more than 60 known consent platforms, newsletter popups, and chat widgets before the shot; each of those steps can be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and the response identifies the page verdict and billing status in headers. An MCP server exposes take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. Plans include 1,000 screenshots per month free with no card; paid plans start at $5 for 3,000.
For example, capture a URL with cURL:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. To try it, sign up for 1,000 free screenshots a month with no card.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
FAQ
Does page.waitForLoadState('load') mean all JavaScript has finished?
No. It waits for a navigation load state; an application can render or update the content you need afterward. Add a selector or condition tied to that content.
Can I use a fixed sleep instead of a selector?
Yes, as a fallback when no dependable readiness signal exists, but it may be slower than necessary and can still be too short on a delayed page.
Does the example guarantee compatibility with every Apify project?
No. Package and Actor image compatibility depends on the project’s versions; use the Apify documentation that matches your environment.
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.

