Use a real browser engine such as Playwright or Puppeteer, wait for the page content you need to appear, and then capture the rendered page or a specific element. For a crawl-and-review workflow, Screaming Frog SEO Spider also supports JavaScript rendering and rendered-page screenshots. Record the URL, capture time, viewport, browser and tool versions, and wait or interaction conditions: a screenshot is evidence of one browser’s view, not proof of what Google indexed.
Why JavaScript rendering matters for competitor research
A page’s initial HTML response may not contain its substantive content. Google describes crawling, rendering and indexing as separate stages; its renderer executes JavaScript in headless Chromium when resources permit. Blocked pages or files can prevent rendering, and not every crawler or bot runs JavaScript. Google’s JavaScript SEO documentation explains this pipeline.
A browser screenshot gives you a visual record of what that browser rendered at capture time. It can help compare visible copy, headings, layout and page elements, but it does not establish that Google fetched, rendered or indexed the same content. For a site you control, use Google’s Search Console debugging tools to investigate Google’s view rather than treating an ordinary browser screenshot as a proxy. Google’s guidance on JavaScript and rendering also notes that blocked resources can affect what is rendered.
Choose a capture method
| Need | Practical method | Trade-off |
|---|---|---|
| Capture a handful of pages or automate a repeatable workflow | Playwright or Puppeteer | Flexible browser interactions and screenshot output; you maintain the code and browser environment. Playwright and Puppeteer document screenshot capture. |
| Crawl a site and inspect screenshots alongside SEO signals | Screaming Frog SEO Spider with JavaScript rendering | Crawl-oriented workflow; configure screenshot viewport and full-height behavior. Its configuration guide documents these settings. |
| Track visual changes over time | Repeat captures with a fixed browser and machine setup | More reproducible when rendering conditions remain consistent. Playwright identifies environment differences as a source of visual changes. Playwright’s visual comparison guidance. |
| Determine how Google rendered a page | Google’s site-owner debugging tools | A generic screenshot cannot substitute for Google’s own rendering and inspection tools. See Google’s documentation. |
Capture a JavaScript-rendered page with Playwright
Install Playwright and its browser once in your project, then run the script below. It waits for a page-specific selector instead of assuming that the generic load event means the content you care about is ready. Replace the example URL and selector with the competitor page and a stable element on it.
#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.
npm init -y
npm install playwright
npx playwright install chromium
// capture.mjs
import { chromium } from 'playwright';
const url = 'https://example.com/competitor-page';
const readySelector = 'main';
const browser = await chromium.launch({ headless: true });
try {
const page = await browser.newPage({
viewport: { width: 1440, height: 1000 },
locale: 'en-US'
});
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
await page.locator(readySelector).waitFor({ state: 'visible', timeout: 30000 });
await page.screenshot({ path: 'competitor-desktop.png', fullPage: true });
await page.locator(readySelector).screenshot({ path: 'competitor-main.png' });
console.log(`Captured ${url}`);
} finally {
await browser.close();
}
Run it with node capture.mjs. The full-page call captures the page vertically; the locator call captures only the selected element. Playwright documents page, full-page and element screenshots in its screenshot guide.
Wait for the content that answers your question
The example waits for main to become visible, but that may be too broad or too early for a particular application. Prefer a stable selector for the rendered heading, product grid or other content being compared. If the page populates that area asynchronously, wait for an application-specific state or the relevant text. A fixed delay can be useful for a known animation or delayed widget, but it is less reliable than waiting for the actual element.
Capture mobile as a separate, specified state
Use a separate page with a deliberate mobile viewport rather than resizing a desktop screenshot after capture:
const mobile = await browser.newPage({
viewport: { width: 390, height: 844 },
deviceScaleFactor: 1,
isMobile: true,
hasTouch: true,
locale: 'en-US'
});
await mobile.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
await mobile.locator(readySelector).waitFor({ state: 'visible', timeout: 30000 });
await mobile.screenshot({ path: 'competitor-mobile.png', fullPage: true });
await mobile.close();
Viewport size, device behavior and locale can change the rendered page. Note these settings with each image so comparisons are meaningful.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →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.
Capture with Puppeteer
Puppeteer is another browser automation option, particularly for Node.js teams already using it. This minimal script launches Chromium, waits for a page-specific selector and writes a full-page PNG:
npm install puppeteer
// capture.cjs
const puppeteer = require('puppeteer');
(async () => {
const url = 'https://example.com/competitor-page';
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
await page.setViewport({ width: 1440, height: 1000 });
await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 60000 });
await page.waitForSelector('main', { visible: true, timeout: 30000 });
await page.screenshot({ path: 'competitor.png', fullPage: true });
} finally {
await browser.close();
}
})();
Confirm current API details in the maintained Puppeteer screenshot documentation. Chrome for Developers describes Puppeteer as a JavaScript library for automating Chrome and Firefox, including screenshots and PDFs: Puppeteer overview.
Use Screaming Frog for crawl-oriented screenshots
If you need screenshots across a crawl rather than a few scripted pages, Screaming Frog SEO Spider’s JavaScript rendering mode includes rendered-page screenshots. Its vendor guide says screenshots are enabled by default when JavaScript rendering is selected.
- Open Configuration > Spider > Rendering and select JavaScript rendering.
- In the screenshot configuration, set the desired viewport width, height and scaling. The documented options include Googlebot desktop or smartphone and custom window dimensions, along with mobile and touch settings.
- Choose resize-to-content if you need a full-height capture. The guide states this aims to capture the page up to 8192 pixels; without it, the screenshot is limited to the configured viewport.
- Run the crawl, then inspect the rendered screenshots alongside the crawl data.
Check the current Screaming Frog configuration guide for exact controls in your installed version; the 8192-pixel figure is the product limit stated in that guide, whose year is not specified.
Free tools Windows power users keep installed
One-click scans. No signup required.
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.
Make competitor screenshots reproducible
For a useful comparison, define the page state before capture and hold the rendering environment steady between runs. Playwright notes that operating system, browser version, settings, hardware, power source and headless mode can affect rendering. Its visual comparison guide explains why environment changes can create image differences unrelated to the page itself.
Record the state and context
- Exact URL and capture date/time in UTC.
- Viewport width and height, device scale, mobile/touch settings and locale.
- Browser and automation-tool versions, operating system and headless setting.
- Whether you were logged in or out, which consent choice was made, and any other relevant interaction.
- The selector, application state or delay used as the readiness condition.
- Whether you captured the full page or a particular element.
Store this information in a sidecar text or JSON file, or in a consistent filename scheme. When revisiting a page, keep those conditions fixed unless a change is intentional; record any changed setting so it is not mistaken for a competitor redesign.
Capture the state you intend to compare
Some content appears only after scrolling, clicking a tab, dismissing consent, or waiting for a lazy-loaded section. Note the interaction and reproduce it consistently. Capture desktop and mobile separately when both matter. A screenshot of one viewport or consent state should not be treated as a complete record of every page state.
Interpret the screenshot without overclaiming
Use the image to compare what was visible in the selected browser and state. Pair it with source inspection or other evidence if your question concerns underlying content or SEO behavior. Google’s crawling, rendering and indexing stages are distinct, and a browser capture does not prove a page was crawled or indexed. For a property you control or are authorized to inspect, consult Google’s JavaScript SEO guidance and Search Console debugging tools when asking what Google can render.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated 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 matchRank #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
Or skip the browser setup
ScreenshotNeo provides a website screenshot API and MCP server for developers. One GET request can return a rendered PNG, JPEG, WebP or PDF. Cookie and consent banners are accepted as a visitor and removed, along with 60+ known consent platforms, newsletter popups and chat widgets; each cleanup step can be turned off. Bot checks/CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and billing status. Its MCP server offers take_screenshot, get_page_info and capture_pdf for Claude, Cursor and other MCP clients. The free plan includes 1,000 screenshots per month without a card; paid plans start at $5 for 3,000 screenshots. See ScreenshotNeo and the API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/competitor-page -o shot.webp
Sign up for 1,000 free screenshots a month, with no card required.
Common capture problems and fixes
The screenshot is blank or missing the main content
The capture may have happened before client-side rendering completed, or the content may require a different state. Wait for a meaningful selector or application-specific condition, then check that the selector actually matches visible content. If the page blocks or fails to load in the selected browser environment, record that result rather than interpreting a blank image as the page’s normal appearance.
The capture ends before the bottom of the page
In Playwright or Puppeteer, request a full-page screenshot. In Screaming Frog, enable resize-to-content; otherwise its screenshot uses the configured viewport height, and the documented full-height capture aims only up to 8192 pixels.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Images or sections appear after the capture
Lazy-loaded content may not load until its area approaches the viewport or the page is scrolled. Scroll through the relevant sections or wait for the content to appear before capturing, and repeat the same procedure on later runs. There is no universal wait condition for every competitor page.
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.
Images differ between runs even though the page seems unchanged
Check for changes in browser version, operating system, viewport, settings, hardware or headless mode. Keep them constant for longitudinal comparisons and document intentional changes. These are among the environment factors Playwright identifies as affecting rendering.
The mobile capture looks like a scaled desktop page
Set a mobile viewport and, when relevant, mobile and touch behavior before navigation. Do not infer mobile layout from a resized desktop image. Record the viewport and device settings for each capture.
The capture fails on a restricted or gated page
Do not bypass login requirements, technical controls or other access restrictions. Capture only pages and states you are authorized to access, and follow the site’s terms and access instructions.
Access, legal and reuse considerations
Public visibility is not blanket legal permission to automate collection or republish page material. The Ninth Circuit’s 2019 hiQ Labs v. LinkedIn opinion concerned a preliminary-injunction dispute about publicly viewable LinkedIn profile data and the Computer Fraud and Abuse Act; it does not establish a general right to ignore terms, circumvent controls, reuse copyrighted material or collect personal data. See the 2019 opinion.
W3C says permission is not required for screenshots of part of its own website when they are not used to imply W3C sponsorship or endorsement. That guidance is specific to W3C’s site, not a general permission for competitor screenshots. W3C copyright guidance.
Quick Recap
- Read the specific site’s terms and access instructions.
- Avoid circumventing login requirements or technical controls, and keep request volume reasonable.
- Minimize collection of personal data and take care before publishing captured material.
- Seek legal review for systematic collection or publication; applicable law and contract consequences depend on the site, facts and jurisdiction.
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.




