ScreenshotNeo

BlogHow-to

How to Capture SERP Screenshots When Google Consent Prompts Block the Page

Capture the Google Search page as it appears, even when a consent prompt covers it. Learn when to use Playwright, Search Console, or ScreenshotNeo.

By the ScreenshotNeo team4 October 20268 min read

When a Google consent prompt covers a search results page, capture the page in the state your browser actually shows. Playwright can save a viewport, element, or full-page screenshot, but the cited Playwright documentation does not describe a Google-specific way to dismiss or bypass the prompt. Do not remove or alter Search interface elements or results in a screenshot presented as an authentic SERP.

If you are diagnosing a page that you own, Google Search Console’s URL Inspection tool serves a different purpose: after a successful live test, it can show a rendered screenshot of that page as Google’s inspection tool sees it. It does not capture the public Search results page.

1. Choose which view you need

Goal Use Limit
Document what a visitor sees on a public SERP Local browser capture with Playwright The prompt may remain visible; that is a valid record of the obstructed state.
Inspect how Google renders a page you control Search Console URL Inspection live test The screenshot is available only after a successful live test when the page is reachable. It is not available for indexed-URL inspection or an unsuccessful fetch.

Decide whether your evidence needs to show the public results page or a site page rendered by Google’s inspection tool. Those are different views and should not be described as interchangeable.

2. Capture the visitor-visible SERP with Playwright

Playwright supports viewport, selected-element, and full-page screenshots. The example below opens a search URL and saves the page as it renders. It intentionally does not attempt to click, hide, or remove the consent prompt.

Install

npm init -y
npm install playwright
npx playwright install chromium

Runnable Node.js example

// capture-serp.js
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({ headless: true });
  const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } });
  try {
    await page.goto('https://www.google.com/search?q=playwright', {
      waitUntil: 'domcontentloaded',
      timeout: 30000,
    });
    await page.screenshot({ path: 'serp.png' });
  } finally {
    await browser.close();
  }
})();

Run it with node capture-serp.js. The screenshot records the browser’s rendered viewport, including a prompt if one is present. A search page may continue loading after DOM content is ready; choose a wait condition and any additional delay based on the evidence you need, and record that choice when reproducibility matters.

Capture the full scrollable page

await page.screenshot({ path: 'serp-full.png', fullPage: true });

Use full-page capture when results or page content extend below the viewport. It produces a taller image and can include content reached through scrolling; it does not make an overlay disappear.

Capture a selected element

const results = page.locator('#search');
await results.screenshot({ path: 'serp-results-region.png' });

Element capture is useful for a specific region when the locator identifies the intended element. Be careful: cropping to a region can omit a prompt or other context. If the purpose is to document what the visitor saw, keep enough surrounding page visible to avoid misrepresenting the state.

Screenshot options to choose deliberately

  • path: output filename; Playwright infers the image format from the extension.
  • fullPage: capture the full scrollable page instead of only the current viewport.
  • type: choose png or jpeg when specifying the format explicitly.
  • quality: JPEG quality from 0 to 100; it applies to JPEG screenshots, not PNG.
  • clip: capture a specified rectangle of the page.
  • omitBackground: make the default background transparent where supported.
  • animations: control handling of finite and infinite animations during capture.
  • caret: hide or show the text caret.
  • scale: use CSS pixel sizing or device pixel sizing.

Consult the [Playwright Screenshots documentation](https://playwright.dev/docs/screenshots) and [Page API](https://playwright.dev/docs/api/class-page#page-screenshot) for the supported parameters and current behavior. Keep the capture settings consistent when comparing screenshots across runs.

3. Preserve the integrity of a Search screenshot

Google’s Search screenshot guidance asks users to show the interface naturally and not alter the Search interface, autocomplete terms, or results. Do not manufacture, remove, or change displayed results to make a cleaner-looking image, and do not imply Google endorses your project. Visible third-party material may require approval from its owner before publication.

Google states that permission is not needed for screenshots of Search pages and results pages in print for educational or instructional purposes. That statement is specifically bounded to print and educational or instructional use; do not assume it covers every medium or purpose. See Google’s [Search screenshot guidelines](https://about.google/brand-resource-center/products-and-services/).

4. For site-owner diagnostics, use URL Inspection

If your question concerns how Google renders a page you control, open Search Console’s URL Inspection tool, enter the URL, and run a live test. When the test succeeds and the page is reachable, inspect the rendered screenshot. If the live fetch fails, or you are looking at indexed-URL inspection rather than a successful live test, that rendered screenshot is not available. See Google’s [URL Inspection tool help](https://support.google.com/webmasters/answer/9012289).

This is a diagnostic view of a page, not a screenshot of the public SERP. It cannot replace a local browser capture when you need evidence of what a visitor saw on Search.

A consent overlay in your local browser is not the same thing as a crawl or snippet problem. Google explains that a robots.txt rule can prevent Google from crawling page content and generating a snippet even when the URL remains listed in Search. For a site you control, check crawl access if a result lacks a snippet; allowing Googlebot to crawl is relevant to that issue, but it does not resolve a prompt covering your local browser’s SERP.

Google Search Central also cautions site owners against redirecting all incoming requests to one consent or data-provision page, because Googlebot may then fetch only that page. This is site design and crawling guidance, not a recipe for dismissing an individual browser prompt. See [Google’s interstitials and dialogs guidance](https://developers.google.com/search/docs/appearance/avoid-intrusive-interstitials) and [Search Console’s missing-page-information guidance](https://support.google.com/webmasters/answer/7489871).

6. Troubleshooting

Symptom Likely cause What to do
The saved image still shows the consent prompt The browser rendered the prompt, and the capture records that state. Keep it if the goal is faithful documentation. The cited sources do not establish a stable Google prompt-dismissal selector or bypass procedure.
Navigation times out The page did not reach the selected navigation condition before the timeout. Set an explicit timeout appropriate to your environment, use a less strict navigation wait such as domcontentloaded, and still check that the page actually rendered before saving evidence.
The image is blank or incomplete Capture may have happened before useful content rendered, or the response may have failed. Inspect the page state before capture, wait for a relevant visible condition when one can be identified, and retain the rendered state rather than editing the screenshot afterward.
A result is missing a snippet The page may be unavailable for crawling, including because of robots.txt. For a page you own, inspect crawl access and Search Console diagnostics. This is distinct from a local consent overlay.
URL Inspection has no rendered screenshot The live test may have failed or the inspected URL is not available through a successful live test. Confirm the URL is reachable and rerun the live test. The inspection screenshot is conditional on successful retrieval.
Screenshot differs between runs Viewport, timing, browser state, or page content may vary. Keep viewport and capture settings fixed, note when the capture was made, and preserve the unaltered output used as evidence.

7. Reliability, performance, and cost considerations

  • Wait only as long as the task needs. A short, explicit readiness condition can be more predictable than waiting for every network request to stop; third-party pages may keep network activity open.
  • Keep the viewport stable. Width and height affect wrapping, visible results, overlays, and the amount of content in a viewport screenshot.
  • Use full-page mode selectively. It can create large images and takes longer than a viewport capture on long pages.
  • Do not equate a successful screenshot call with a useful record. Review whether the page loaded and whether the prompt or other state is visible in the saved artifact.
  • Account for local browser costs. A self-hosted Playwright workflow uses your compute and browser setup; runtime and storage depend on your environment and capture scope.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. One GET request returns a screenshot; its API accepts the parameter names used by other screenshot APIs, which makes switching straightforward. See the ScreenshotNeo site and API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.google.com/search?q=playwright -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://www.google.com/search?q=playwright"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://www.google.com/search?q=playwright',
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);

ScreenshotNeo accepts cookie and consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. A particular Google prompt is not guaranteed to be among the supported platforms, so verify the returned capture. Bot checks, 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 a month 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

No. The cited Playwright sources do not document a Google-specific dismissal workflow, and ScreenshotNeo does not guarantee that a particular prompt is covered. Capture and check the state you receive.

Does Search Console show the SERP screenshot?

No. URL Inspection can show a rendered screenshot of an inspected page after a successful live test, not the public Search results page.

Should I crop out a prompt before publishing?

If the image is presented as a faithful record of the visitor-visible SERP, preserve the prompt and surrounding context. Google’s guidance says to present Search naturally and not modify the interface or results.