SERP Appearance Report
Parse ValueSERP batch JSON exports and report your domain's organic appearances.
#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
- Enter the domain to filter results by
- Upload one or more ValueSERP batch JSON files
- Review the results table showing all organic appearances
- 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.