Back to Tools

SERP Appearance Report

Use cases

Auditing how titles and snippets render in SERPs at scale Spotting title rewrites by comparing SERP titles to page titles Building SERP appearance reports from rank tracking batches Reporting organic visibility to stakeholders

Accepts one or more ValueSERP batch mode JSON files, loops through every search result set, and filters organic results to those whose URL contains the user-supplied domain (normalised: scheme, www and trailing slashes stripped).

Reports the query, position, link, title and snippet for each appearance.

Tries utf-8, utf-8-sig, latin-1 and iso-8859-1 encodings when decoding files.

Platform

Python script (requires Python 3.x)

Input

One or more ValueSERP batch JSON result files

Domain to filter by (e.g. example.com)

Output

CSV with columns: query, position, link, title, snippet. One row per organic appearance of your domain.

View Source

Features

  • Multi-file upload: process multiple ValueSERP batch JSON files at once
  • Domain normalisation: strips scheme, www prefix and trailing slashes
  • Encoding fallback: tries utf-8, utf-8-sig, latin-1 and iso-8859-1
  • Handles both JSON arrays (batch mode) and single result objects
  • Per-file warnings for malformed items (missing result key)
  • Output columns: query, position, link, title, snippet

How to use

  1. 1 Enter the domain to filter results by
  2. 2 Upload one or more ValueSERP batch JSON files
  3. 3 Review the results table showing all organic appearances
  4. 4 Download the SERP appearance report CSV

Frequently asked questions

What JSON format does ValueSERP batch mode produce?
A JSON array where each item is an object containing a 'result' key. That result object has 'search_parameters' (with the query in field 'q') and an 'organic_results' array. The tool also accepts a single (non-array) result object for files with one search.
How is the domain matching done?
The domain you enter is normalised: scheme (http/https), www prefix and trailing slashes are stripped. Each organic result's link URL is checked with a case-insensitive substring match against this normalised domain. So entering 'example.com' matches both www.example.com/page and blog.example.com/post.
Can I upload multiple JSON files?
Yes. The file uploader accepts multiple files and results are merged across all of them. Each file's appearances are combined into a single output table and CSV download. Warnings are reported per file if any items are malformed.
What encodings does it try when reading files?
Four encodings in order: utf-8, utf-8-sig, latin-1 and iso-8859-1. It tries each until one produces valid JSON. If all four fail, the file is skipped with an error message.
What columns are in the output?
Five columns: query (the search term), position (rank), link (the URL), title (the SERP title) and snippet (the meta description or extracted snippet shown in the SERP).

Need something built for your business?

This tool started as bespoke client work. I build custom scripts, data pipelines, and full apps for SEO and product data problems that off-the-shelf tools don't solve.

Tell Me What You Need