SEO tools and consultants need to see pages the way search engines do: after JavaScript runs, on a phone first, with the status code and headers that tell crawlers what to do. Screenshots also make audit reports convincing: a picture of the empty page a crawler saw does more than a line in a spreadsheet.
Rendered page plus SEO metadata
One request returns a mobile screenshot with the title, Open Graph tags, status code and headers (including X-Robots-Tag):
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/products/blue-widget","viewport_device":"pixel_5","full_page":true,"format":"jpg","response_type":"json","metadata_page_title":true,"metadata_open_graph":true,"metadata_http_response_status_code":true,"metadata_http_response_headers":true,"ignore_host_errors":true}' \
--fail-with-body -o shot.jsonignore_host_errors captures 404 and 500 pages too, which an audit wants to see rather than skip.
Is the content there after JavaScript?
Compare the HTML a server sends with the HTML after rendering. If the product description, prices or links only exist in the rendered version, the site depends on JavaScript rendering to be indexed. Get the rendered HTML with format=html:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/products/blue-widget","format":"html","wait_until":["networkidle0"]}' \
--fail-with-body -o shot.htmlCompare it with a plain curl of the same URL: links, headings and text present only in the rendered version are at risk.
As a crawler identifies itself
Some sites serve different content to crawlers (dynamic rendering, or by mistake). Set a crawler's user agent to see that version:
curl -X POST "https://shotkit.net/api/take" \
-H "X-Access-Key: YOUR_ACCESS_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","viewport_device":"pixel_5","user_agent":"Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","full_page":true}' \
--fail-with-body -o shot.jpgSites that verify crawlers by IP address will treat this as a normal visitor, so use Search Console's URL Inspection for the definitive view of what Google indexed.
In audit reports
- Full-page mobile screenshots of key templates (home, category, product, article) show layout and above-the-fold problems at a glance.
- Before and after captures prove the effect of a fix.
- Markdown output (
format=markdown) shows the indexable content without design, handy for thin-content and heading reviews.
Frequently asked questions
Is this exactly what Googlebot sees?
It's very close: Googlebot also renders with a recent Chrome, on a mobile viewport. Differences come from crawl timing, blocked resources and sites that treat Googlebot's IP addresses differently. For the definitive answer, use Search Console's URL Inspection.
Can I check hundreds of URLs for a site audit?
Yes. Loop over the sitemap's URLs, or send them with async and a webhook_url. Each URL is one screenshot.
Can I get the page's Open Graph image to check it?
Yes. metadata_open_graph returns the og:* tags, including image, so you can check that it exists and loads.