Get in touch
INSIGHTS · COMPETITIVE INTELLIGENCE

Turn Semrush Market Explorer into a competitive market map you can actually analyse

Size a market before you enter it, see who owns the traffic in a category, and get the data into Power BI without the export breaking every time Semrush moves a field.

AR
Axel Rübenhagen
The Seventy 2 Digital
4 min read Semrush · Market Explorer · Power BI

Semrush Market Explorer answers one question well. Who owns the traffic in a category, and how much room is left. The harder part is getting that answer out of the interface and into a place where you can slice it. That is where most teams stall, and that is what this guide fixes.

01What is Semrush Market Explorer?

Semrush Market Explorer is a competitive-intelligence tool that sizes a market and shows how estimated traffic is split across the domains competing in it. It takes a seed domain or a manually built list of competitors, then returns market share, traffic volume, audience overlap, and growth trajectory for that competitive set. You are not looking at a single site’s keywords here. You are looking at a whole category from above.

The practitioner value sits in two moves. Building the competitive set yourself, and reading share-of-traffic as a proxy for who is actually winning attention.

Market Explorer is a map of a category. Your job is to find the whitespace nobody is defending.

02What is Semrush Market Explorer used for?

Semrush Market Explorer is used for competitive market sizing and share-of-traffic benchmarking, the two jobs a challenger brand needs before committing budget. You use it to answer where a market’s demand sits, who currently captures it, and how large the gap is between the leader and everyone else. Two examples from our own work make the pattern concrete.

In B2C fashion, we build a competitive set of rival labels and retailers, then benchmark share-of-traffic across it before a campaign or a market push. The point is not vanity ranking. It is knowing, in advance, which competitors already own the attention you are about to pay for, so the campaign targets ground you can realistically take.

In B2B labeling and self-adhesive materials, the question is market entry. Who is visible in a new segment, how large is the demand, and where is the gap a challenger can move into. Market Explorer gives us the visibility picture. The sizing tells us whether the segment is worth the effort at all.

Two questions Market Explorer answers well
  • 01Share-of-traffic - who owns attention in this category right now.
  • 02Whitespace - which segment has demand but no dominant incumbent.

03How do you get Semrush Market Explorer data into Power BI?

You get Semrush Market Explorer data into Power BI by exporting the All Domains report as CSV, then reshaping it with a transform that renames columns to a stable schema before Power BI ever touches the file. Power BI cares about consistent column names. Semrush exports do not guarantee them. The transform sits in between and settles the argument.

Here is the function we use. It verifies both file paths first, so a missing export or a missing mapping fails loudly instead of producing a silently wrong table. It then renames every column through a mapping CSV you own, reindexes to the exact column shape Power BI expects, and fills gaps deterministically - empty strings for text, zero for numbers - so nothing lands as an ambiguous null.

import pandas as pd
import os

def verify_file_path(path):
    """Check if a file exists at the given path and print a message."""
    if os.path.exists(path):
        print(f"File found: {path}")
        return True
    else:
        print(f"File not found: {path}")
        return False

def transform_and_prepare_for_power_bi(input_file_path, mapping_file_path, output_file_path):
    # Verify file paths
    if not verify_file_path(input_file_path) or not verify_file_path(mapping_file_path):
        return  # Exit the function if any file is missing

    # Load the mapping table with the correct delimiter
    mapping_data = pd.read_csv(mapping_file_path, delimiter=';')
    mapping_dict = mapping_data.dropna().set_index('Mapping.New')['Mapping.Old'].to_dict()

    # Load the data
    data = pd.read_csv(input_file_path)

    # Rename columns according to the mapping table, reindex to ensure all 'Mapping.Old' columns are present
    data_transformed = data.rename(columns=mapping_dict).reindex(columns=mapping_data['Mapping.Old'].tolist(), fill_value="")

    # Filling missing values - empty strings for text, 0 for numbers
    text_columns = data_transformed.select_dtypes(include=['object']).columns
    numeric_columns = data_transformed.select_dtypes(include=['number']).columns
    data_transformed[text_columns] = data_transformed[text_columns].fillna("")
    data_transformed[numeric_columns] = data_transformed[numeric_columns].fillna(0)

    # Save the transformed data
    data_transformed.to_csv(output_file_path, index=False, encoding='utf-8')
    print(f"Data transformed and saved successfully to {output_file_path}")

# Define file paths within the main block of the script to ensure they are recognized
input_file_path = 'Your Input File Path!\\2024-03-Worldwide.csv'
mapping_file_path = 'Your Mapping File Path!\\mapping-semrush.csv'
output_file_path = 'Your Output Path!\\Transformed_Data_for_PowerBI.csv'

# Run the transformation function
transform_and_prepare_for_power_bi(input_file_path, mapping_file_path, output_file_path)

Read the transform as three decisions, not as boilerplate.

01
Verify paths before anything else
Both the export and the mapping CSV must exist. If either is missing the function returns early and prints why. A bad import should fail on line one, not three dashboards later.
02
Rename through a mapping CSV you own
Semrush's column names become your stable names via a two-column file you version in git. When Semrush renames a field, you edit one row. Nothing downstream moves.
03
Reindex and fill deterministically
Reindexing to the mapping's column order guarantees Power BI sees the same shape every load. Empty strings for text, zero for numbers, no surprise nulls.

04How do you keep the pipeline stable when Semrush changes fields?

You keep the pipeline stable by putting a mapping CSV between Semrush’s column names and your Power BI schema, so a field change is a one-line edit rather than a broken report. The mapping file has two columns, Mapping.New and Mapping.Old. New is whatever Semrush calls the column today. Old is the stable name your Power BI model already expects. The transform reads that file and does the translation for you.

This pattern earns its keep the first time Semrush moves something. In March 2024, Semrush restructured the dimensions on the Trends Market Explorer All Domains report. For anyone importing raw columns, that broke every dashboard bound to the old names. For anyone using a mapping CSV, it was a handful of edited rows and one re-run. That is the whole argument for owning the mapping instead of hardcoding column names in Power BI.

Why the mapping CSV, not Power Query renames
  • 01It lives in git, so every field change has a diff and a date.
  • 02It is one file, reusable across every market and every export.
  • 03A vendor rename becomes an edited row, not a rebuilt report.

The dimension change is history now. The pattern is not. Any competitive-intelligence export you feed into BI will drift eventually, and a mapping file you control is the cheapest insurance against that drift. Build the map once. Keep it in version control. Let the vendor rename whatever it likes.

Let's
talk.

A 30-minute call to talk through what your data shows.

Book a call