SERP Appearance Report
Use cases
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.
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
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).
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.
Related Tools
Forecast search trends using NeuralProphet ML.
Generate BCG matrix visualisations from GA landing page reports with cascading folder analysis.
Capture screenshots at GA visitor resolutions using Pyppeteer async browser automation.
Analyse Google core update impact by URL folder using Ahrefs data.
Calculate competitive share of voice from Ahrefs traffic data with Excel chart export.
Follow redirect chains and see every hop along the way.
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