Back to Tools

Competitor Content Gap Finder

Use cases

Improving product title completeness Finding missing product attributes and specifications Competitive content gap analysis for e-commerce Bulk product title optimisation

Matches products by SKU/MPN across your catalogue and competitor feeds, then analyses title differences using NLTK stopword filtering and word frequency counting.

Identifies words present in competitor titles but missing from yours, with median title length gap calculation.

Platform

Python script (requires Python 3.x)

Input

Your products CSV with SKU/MPN and titles

Competitor product CSVs

Output

CSV with missing words and competitor comparisons

View Source

Features

  • Exact SKU/MPN matching across multiple competitor files
  • NLTK English stopword filtering
  • Word frequency counting (Python Counter)
  • Median title length gap calculation
  • Supports wildcard patterns for competitor file loading

How to use

  1. 1 Prepare your product CSV with SKU/MPN and title columns
  2. 2 Gather competitor product CSVs with the same identifier format
  3. 3 Configure column names for the matching key and title fields
  4. 4 Run the analysis to match products and extract word gaps
  5. 5 Review missing words ranked by frequency across competitors
  6. 6 Export results with competitor match counts and sample URLs

Frequently asked questions

What columns do my CSV files need?
Every file, yours and each competitor's, needs a matching column and a title column. The defaults are mpn for matching and h1 for the title, which line up with a Screaming Frog export; override them with --match-col and --title-col. A URL column (default url) is optional. Competitor files missing a required column are skipped with a warning rather than stopping the run, so check the log if a competitor seems absent from the results.
Why are products that both sites sell not matching?
Matching is exact after lowercasing and trimming whitespace, so any formatting difference in the SKU or MPN breaks the match. A common trap is that the CSVs are read with pandas defaults, so a numeric-looking MPN like 00123 is parsed as the number 123 in one file while staying as text 00123 in another. Dashes, spaces or supplier prefixes inside the identifier will also prevent matches.
Why do some of my products not appear in the output at all?
Only products that matched at least one competitor are written to the output. Anything with no competitor match is dropped silently, so the output row count tells you your match rate, not your catalogue size.
What exactly counts as a missing word?
Titles are stripped of punctuation and NLTK English stopwords, then compared as unordered word sets: a word is missing if it appears in a matched competitor title but nowhere in yours. Because punctuation is deleted rather than replaced with a space, hyphenated or dotted terms merge, so anti-spatter becomes antispatter and 1.5mm becomes 15mm, which can create odd-looking gap words. Synonyms also count as missing since there is no semantic matching.
Does it use every competitor listing for a product?
One per competitor file: if the same match key appears more than once in a competitor CSV, only the first row is used. In the output CSV, matching_urls is truncated to the first three URLs and matching_titles keeps only the first title; use the most_verbose_title column to see the longest competitor title in full.

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