SEO Analytics Project

Finding Signals in Small Data

Using Google Search Console, keyword research, and Python to identify search trends, establish historical baselines, and uncover opportunities for future search marketing experiments.

← Back to Projects

SEO Analytics Project

Finding Signals in Small Data

Data Exploration and Historical SEO Baseline

Python Pandas Matplotlib Google Search Console Google Ads Keyword Planner Jupyter Notebook

Project Overview

This project looks at the organic search performance of one page on my climbing website, Best Climbing Spots in Thailand for Beginners .

I used Google Search Console data to understand how the page was performing over time, establish a historical baseline, and identify patterns in clicks, impressions, and search queries before running any paid search experiment.

Questions I Wanted to Explore

  • How have organic clicks and impressions changed over time?
  • What does normal daily performance look like for this page?
  • Which search queries already generate organic visibility?
  • Which relevant keywords have search demand but limited or no organic visibility?

Dataset

The analysis uses 181 days of Google Search Console data for the target page. The dataset includes daily clicks, daily impressions, and query-level search performance.

I also used Google Ads Keyword Planner to compare keyword demand with existing organic visibility. The raw Keyword Planner export is not included in the public repository.

Approach

  1. Imported and cleaned Google Search Console data using Python and Pandas.
  2. Explored daily click and impression trends over 181 days.
  3. Calculated mean, standard deviation, and 95% confidence intervals.
  4. Reviewed query-level performance to understand existing organic visibility.
  5. Compared search demand with current organic performance.
  6. Identified keywords that may be suitable for a future paid search experiment.

Key Insights

Historical SEO Baseline

Based on the last 181 days of data, the page averaged between 0.29 and 0.49 daily clicks. Daily impressions averaged between 32.9 and 38.3 impressions per day, providing a benchmark for the page's typical search visibility.

Clicks Were More Variable Than Impressions

While impressions remained relatively stable throughout the analysis period, clicks were much more inconsistent, with many days recording 0 clicks. This suggests the page is consistently appearing in search results, but attracting clicks remains more challenging.

Established a Baseline for Future Testing

Together, these confidence intervals estimate the historical average daily performance and provide a baseline for comparing average performance during the planned Google Ads experiment.

ß

What I Learned

This project helped me move beyond simply checking SEO metrics and start using statistical methods to understand what normal performance actually looks like.

More importantly, it showed me why establishing a historical baseline matters before testing new marketing activities. Instead of relying on assumptions, future results can be compared against measured historical performance

Explore the Full Analysis

The notebook, code, documentation, and visualisations are available on GitHub.

← Back to Projects