How to capture Google SERP screenshots with ads and organic results labeled
Capture Google search results with sponsored and organic listings clearly identified. Learn when to use a screenshot, full-page capture, or Google Ads preview.
To capture a Google search results page with ads and organic results clearly labeled, search the exact query, preserve Google’s own sponsored labels in the screenshot, and record the query, locale, device, and capture time in a caption. Use the browser or operating system screenshot command for the visible area; use a full-page capture when results below the fold matter. If you need to explain the distinction, add separate callouts without covering Google’s labels or changing the results. For diagnosing your own campaign, use Google Ads’ Ad preview and diagnosis tool instead of repeatedly searching Google.
1. Decide what you need to capture
There are two different jobs that are easy to confuse:
- Document a live SERP: capture the page that appeared for a particular query and context. This is useful for a report, design review, or dated reference.
- Inspect your own ad: use Ad preview and diagnosis in Google Ads to check how an eligible ad may appear and diagnose why it might not show. Google recommends this tool over searching for your own ad because searches can accumulate impressions. Its results may change over time and may not reflect all campaign activity. Google Ads: Ad preview and diagnosis.
A screenshot is a record of one rendering at one moment. It does not establish that every searcher sees the same results, or that an ad will always appear in that position.
2. Identify ads using Google’s labels
Use the sponsorship label displayed by Google as the primary evidence that a placement is an ad. Do not infer that every result above an organic listing is paid based on its position, appearance, or wording. Google announced that text ads would be grouped under a “Sponsored results” label, and that other ad units, such as Shopping ads, would use a “Sponsored” label. The presentation can vary by market, device, and over time. Google’s announcement about sponsored result labels.
If your report needs extra “Ad” and “Organic” callouts, add them outside the original screenshot or in a clearly separate annotation layer. Keep Google’s label visible, preserve an unannotated copy, and make it clear which markings are yours. Do not relabel a result based on a guess.
3. Capture the visible results
- Open Google in the market and language you need. Search the exact query and wait for the page to finish loading.
- Check the visible sponsored labels. Avoid scrolling or dismissing page elements if doing so would change the state you intend to document.
- Capture the visible screen with your operating system’s normal screenshot command. On most systems, the built-in screenshot utility lets you select a window or region; use its instructions for your operating system.
- Save the original image without edits. If annotations are necessary, make a copy and add clear callouts to that copy.
- Add a caption with the query, country or market, language, device or viewport, date and time, sign-in state if known, and scroll position.
A viewport screenshot is usually clearest for showing the first visible sponsored placements and nearby organic results together. If a result is cut off at the bottom edge, either capture a little farther down in a second image or use a full-page method and inspect the output for continuity.
4. Capture the whole page when needed
When results below the fold matter, use your browser’s full-page capture feature if available, or a browser extension designed for full-page screenshots. Long-page tools may scroll and stitch multiple screen captures. Inspect the saved image for duplicated, omitted, or misaligned sections, especially around sticky elements and content that loads as you scroll.
Extensions can also add parsed labels or colored overlays. Those are optional aids, not authoritative evidence: verify the result against Google’s own sponsorship labels. Store descriptions for extensions such as SERPshot and SERP Feature Annotator describe stitched captures or overlays; those descriptions do not establish independent reliability, pricing, privacy, or current availability. Before installing any extension, check its current publisher, permissions, privacy information, and functionality.
5. Make captures comparable
Search results and ad eligibility can change. For a series of screenshots, keep a capture log. Record:
- The exact query, including punctuation where relevant.
- Market or country, interface language, and any location setting used.
- Device type, browser, viewport dimensions, and zoom level.
- Date, time, time zone, sign-in state, and whether the page was personalized where known.
- Scroll position and whether the image is a viewport or full-page capture.
Matching these conditions makes differences easier to interpret, but it cannot guarantee identical SERPs. Google’s Ad preview documentation notes that preview results can change over time.
6. Use Google Ads preview for campaign diagnosis
If the question is “Why isn’t my ad showing?” or “How does my campaign appear for this location and device?”, open Tools → Troubleshooting → Ad preview and diagnosis in Google Ads. Set the query and relevant context, then review the preview and diagnostic information. Google’s help page says this tool is preferable to conducting a Google search yourself for checking ad appearance. The preview is a diagnostic view, not a permanent record: results can change and may not reflect every campaign interaction. Read Google’s tool guidance.
7. ScreenshotNeo option: capture a SERP by API
For repeatable capture jobs or an automated report, ScreenshotNeo provides a website screenshot API and MCP server. Its API takes a URL and returns an image or PDF; it captures the Google results page as rendered for the requested URL and supplied settings. A screenshot API does not guarantee a particular ad will be eligible or appear: the query, locale, device, personalization, and Google’s changing results still matter. See ScreenshotNeo and the ScreenshotNeo API documentation.
First construct the Google search URL for the query and locale you want, then pass that URL to the API. Replace the example URL below with the exact search URL you intend to capture and use your API key. Keep the original response as the unannotated capture; add report labels separately.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.google.com/search?q=site%3Aexample.com -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=site%3Aexample.com",
},
timeout=90,
)
r.raise_for_status()
with open("shot.webp", "wb") as f:
f.write(r.content)
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://www.google.com/search?q=site%3Aexample.com',
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const image = new Uint8Array(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', image));
Use URL encoding for the search query when constructing the search URL. The examples above use a simple query; add the appropriate Google search parameters for the market, language, and device context you need, then verify the rendered page and retain those settings in your capture log. API parameter names commonly used by other screenshot APIs also work. The API supports image formats including PNG, JPEG, and WebP, as well as PDF; consult the documentation for current parameter names and configuration.
Or skip the browser setup
Send one GET request with the search URL to ScreenshotNeo. It removes cookie banners, newsletter popups, and chat widgets before the shot; bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The Free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.google.com/search?q=site%3Aexample.com -o shot.webp
See the API documentation and sign up for 1,000 free screenshots a month with no card.
8. Usage, reliability, and cost notes
- Capture variability: a screenshot records a page state; it cannot force Google to show a specific ad or identical result set. Keep the context with each image.
- Full-page reliability: lazy content may load during scrolling, while sticky headers or dynamic modules can create stitching artifacts. Review the final image before relying on it.
- Campaign checks: use Google’s preview and diagnosis tool for your own ad. It avoids accumulating impressions from repeated manual searches, but its output is time-sensitive.
- API billing: ScreenshotNeo bills clean shots only. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing; response headers identify the page verdict and billing status. Configure caching only when a repeated capture may reuse an acceptable prior result. Check the docs for request options.
- Plans: ScreenshotNeo has a free plan with 1,000 shots per month and no card. Paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000; yearly billing gives two months free. Every feature is on every plan.
9. Troubleshooting
| Problem | Likely cause | What to do |
|---|---|---|
| No sponsored result appears | The ad may not be eligible for that query or context, or the live result set may have changed. | Do not label a result as paid by position. For your own campaign, check Ad preview and diagnosis and record the preview context. |
| The label says “Sponsored results” instead of “Ad” | Google’s text-ad label presentation can differ from older examples. | Preserve the label shown in the capture and describe it as a sponsored placement in your caption. |
| The screenshot cuts off a result | The capture only includes the visible viewport. | Capture a second viewport or use full-page capture, then check for stitching problems. |
| Full-page image has repeated or missing content | Scrolling capture may interact with lazy-loaded content, sticky elements, or dynamic modules. | Inspect at the section boundaries; try a different capture method or capture overlapping viewports. |
| Two screenshots of the same query differ | Time, market, device, sign-in state, personalization, or changing results may differ. | Compare the capture logs and state only the conditions you know. Do not promise exact reproducibility. |
| ScreenshotNeo request returns an error or unexpected page | The API key, URL encoding, target page load, or response status may be wrong; the target may also present a bot check. | Check the key and encoded URL, inspect the response and its verdict/billing headers, and consult the API docs. Do not treat a bot-check page as a valid SERP capture. |
10. Publication and rights checklist
- Keep Google’s sponsored label visible, and do not manufacture, remove, or alter search results or interface elements in a screenshot presented as an authentic Search capture.
- Keep annotations distinct from the original capture and retain the original file.
- Google’s guidance says permission is not needed to use Search screenshots in print for educational or instructional purposes, while some uses are prohibited or require approval. It also calls for the trademark tagline beneath images featuring Search in the specified print context. Check the precise guidance for your medium and use. Google brand and screenshot guidance.
- You are responsible for obtaining any third-party permissions needed for content visible in the screenshot.
FAQ
Should I call a result organic just because it is below an ad?
Use Google’s displayed sponsorship label to identify paid placements. Position alone is not enough to classify a result.
Can I guarantee the same Google results on another computer?
No. Record the capture context and date so readers can interpret it; the screenshot is a record of that particular rendering.
Should I search Google repeatedly to see whether my ad appears?
For your own campaign, use Ad preview and diagnosis. Google recommends it for checking appearance and it avoids accumulating impressions from repeated searches.
Can I add “Ad” and “Organic” labels to a screenshot?
For explanation, add separate callouts that do not obscure Google’s own labels, and preserve an unannotated original. Follow Google’s screenshot guidance for the publication context.


