Lee Foot

SERP Appearance Report

Parse ValueSERP batch JSON exports and report your domain's organic appearances.

View the source

#about

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 filesDomain to filter by (e.g. example.com)
Output
CSV with columns: query, position, link, title, snippet. One row per organic appearance of your domain.
Category
Reporting

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

#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. Enter the domain to filter results by
  2. Upload one or more ValueSERP batch JSON files
  3. Review the results table showing all organic appearances
  4. Download the SERP appearance report CSV

#faq

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).

/contact

Want me to run this for you? I run this tool as a managed service, or build something custom around your data. You get the insights without touching the code.