KRM Services logo

Data Analytics Case Study

SEO Market Opportunity Analysis for a Travel Vertical

A data-driven case study using keyword, intent and competitor-ranking data to assess whether a travel company should launch a new organic bus travel vertical across Spain, France and the UK.

SEO Analytics Data Cleaning Market Analysis Excel SQL Reproducibility

Project Overview

This project evaluates a new organic growth opportunity using a keyword research dataset and a competitor-ranking sample. The goal was to move from raw SEO data to a clear business recommendation: which market to enter first, what type of page to prioritise and where the most accessible opportunity was located.

3
Markets analysed: Spain, France and the UK
213
Keyword rows in the cleaned dataset
125
Competitor-ranking rows in the sample
France
Recommended first launch market

Business Question

Which market should be prioritised first for a new organic bus travel vertical, and which type of SEO page should anchor the launch strategy?

1. Validate demand

Assess whether the bus travel category had enough organic search demand to justify a dedicated SEO vertical.

2. Compare markets

Compare Spain, France and the UK using raw search volume, non-brand opportunity, intent mix and competitive accessibility.

3. Recommend priorities

Translate the data into a launch recommendation: first market, second market, selective pilots and page-type priority.

Dataset Structure

The project was based on keyword demand data and a competitor-ranking sample. For public portfolio use, the data was cleaned, anonymised and converted into a documented workbook.

Keyword Research

Description

Bus-related keywords across Spain, France and the UK.

Key fields

Keyword, market, search volume, CPC, competition and intent.

Purpose

Demand analysis and market comparison.

Competitor Rankings

Description

Sample of ranking competitor domains for bus-related searches.

Key fields

Domain, keyword, estimated position, estimated traffic and URL.

Purpose

Competitive landscape and SERP accessibility.

Clean Crosswalk

Description

Joined analytical table created after cleaning and normalisation.

Key fields

Keyword norm, market, intent, segment, brand flag and ranking signals.

Purpose

Combined opportunity assessment.

Data Cleaning Process

The original dataset needed to be inspected before analysis. The cleaning process focused on making keywords comparable, standardising numeric fields and separating raw demand from addressable SEO opportunity.

Inconsistent CPC formatting

Standardised CPC into a numeric field so calculations would not break.

Duplicate keyword-market entries

Created a duplicate flag and excluded duplicates from summary metrics.

Keyword spelling and accent variations

Created a normalised keyword field to support matching and duplicate checks.

Brand and operator terms

Separated brand/operator demand from non-brand demand to estimate accessible opportunity.

Missing ranking markets

Inferred market where route, language or competitor domain made the market clear.

Different competitor types

Classified competitor domains as Operator, Aggregator/OTA, Marketplace or Unclear.

Workflow

Raw keyword data
Clean fields and normalise keywords
Clean competitor rankings
Join into crosswalk table
Build summaries, charts and recommendation

Analysis

The analysis compared markets using demand size, addressable non-brand opportunity, intent mix, query segment distribution and competitive structure.

2.15M
Monthly searches in the cleaned dataset
1.11M
Estimated non-brand monthly searches
1.23M
Estimated transactional monthly searches
69.7%
France non-brand share

Search demand by market

Compares raw monthly search demand across Spain, France and the UK.

Brand vs non-brand opportunity

Shows how much of each market's demand is accessible beyond operator or brand-specific searches.

Intent mix by market

Compares transactional, navigational and informational demand across markets.

Competitor landscape by player type

Classifies visible competitors as operators, aggregators/OTAs or marketplaces.

Query segment heatmap

Identifies which query types matter most in each market: route, cheap tickets, airport transfers, schedules and other segments.

Brand/Operator

ES
305,800
FR
162,200
UK
571,700

Route Query

ES
233,300
FR
228,700
UK
226,300

Price/Cheap

ES
39,900
FR
73,400
UK
49,000

Airport Transfer

ES
8,000
FR
8,100
UK
45,100

Schedule/Timetable

ES
21,200
FR
11,000
UK
0

Key Insights

The analysis showed that raw volume and accessible SEO opportunity were not the same. Market prioritisation depended on demand quality, brand concentration and competitive accessibility.

1

The UK had the largest raw demand, but it was less accessible.

The UK market showed high total search demand, but a larger share was concentrated around strong operator brands and entrenched competitors.

2

France was the cleanest first-entry market.

France combined meaningful non-brand demand with the highest accessible share, making it the strongest first launch candidate.

3

Spain was a logical second market.

Spain showed strong route-led search demand and meaningful timetable or support intent that could be integrated into commercial route pages.

4

Route pages were the strongest scalable SEO asset.

City-to-city route pages offered the best combination of search demand, commercial intent and scalable page architecture across the three markets.

Final Recommendation

The recommendation was based on the relationship between demand size, addressable opportunity and competitive accessibility.

Priority 1

Launch France first

France offered the strongest accessible opportunity because of its high non-brand share and clearer first-entry profile.

Priority 2

Launch Spain second

Spain had strong route-led demand and enough commercial search behaviour to support a second-stage rollout.

Priority 3

Treat the UK selectively

The UK showed the largest raw demand, but stronger operator dominance made a selective pilot more appropriate than a broad launch.

Strategic conclusion

The core SEO strategy should be route-page-led rather than blog-first. City-to-city route pages should anchor the vertical, supported by country hubs and selected commercial pages such as cheap bus tickets where demand justifies it.

Technical Appendix

The original analysis can be reproduced with spreadsheet formulas and summary tables. The SQL examples below show how the same logic could be translated into a database environment.

SQL query: total demand by market
SELECT
    market,
    SUM(avg_monthly_searches) AS total_search_volume,
    COUNT(DISTINCT keyword_norm) AS unique_keywords
FROM keyword_clean
WHERE dup_keyword_market_flag = FALSE
GROUP BY market
ORDER BY total_search_volume DESC;
SQL query: non-brand opportunity by market
SELECT
    market,
    SUM(avg_monthly_searches) AS non_brand_search_volume,
    COUNT(DISTINCT keyword_norm) AS non_brand_keywords
FROM keyword_clean
WHERE brand_flag = FALSE
  AND dup_keyword_market_flag = FALSE
GROUP BY market
ORDER BY non_brand_search_volume DESC;
SQL query: intent mix by market
SELECT
    market,
    intent,
    SUM(avg_monthly_searches) AS search_volume,
    COUNT(DISTINCT keyword_norm) AS keyword_count
FROM keyword_clean
WHERE dup_keyword_market_flag = FALSE
GROUP BY market, intent
ORDER BY market, search_volume DESC;
SQL query: query segment analysis
SELECT
    market,
    query_segment,
    SUM(avg_monthly_searches) AS segment_search_volume,
    COUNT(DISTINCT keyword_norm) AS keyword_count
FROM keyword_clean
WHERE dup_keyword_market_flag = FALSE
GROUP BY market, query_segment
ORDER BY market, segment_search_volume DESC;
SQL query: competitor landscape by player type
SELECT
    market,
    player_type,
    COUNT(*) AS ranking_rows,
    SUM(estimated_monthly_traffic) AS estimated_traffic,
    MIN(estimated_position) AS best_position
FROM rankings_clean
WHERE market IS NOT NULL
  AND market <> ''
GROUP BY market, player_type
ORDER BY market, estimated_traffic DESC;

Project Files

Download the executive case summary or inspect the cleaned workbook with the documented data structure, summary tables, QA checks, data dictionary and SQL examples.

Cleaned workbook

Cleaned and anonymised workbook with source data structure, formula-driven summary tables, QA checks, data dictionary and SQL examples.

Case summary PDF

Short executive summary of the analysis, including the business context, methodology, key findings, recommendation and limitations.