Semrush × Metabase

How to build Semrush dashboards in Metabase

Semrush is an online-visibility platform covering keyword research, position tracking, backlinks, and competitive intelligence. Metabase is where you turn that SEO data into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI route that pulls live data with the Semrush MCP server and loads a CSV into Metabase with the Metabase CLI, and a durable pipeline route that syncs Semrush snapshots into a database so you can build dashboards anyone can read.

Heads up: Metabase connects to databases and warehouses — it does not ship a native Semrush connector. Sync dated snapshots — keyword positions, authority scores, referring-domain counts — on a schedule, because the warehouse only trends what you've stored.

How do you connect Semrush to Metabase?

Most teams combine both routes: use MCP and CLI uploads for a fast first pass, then move recurring SEO reporting to a warehouse-backed model.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair the Semrush MCP server with the Metabase CLI. Use MCP for live lookups, write a scoped result to CSV, then load it into Metabase as a ready-to-query table and model.

Best for
  • Quick lookups such as "show me organic keywords and estimated traffic trend"
  • Loading a Semrush export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed recurring reporting
  • MCP and API calls draw from the same plan quotas — scope requests tightly
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline route (warehouse-backed)

Durable dashboards with history

Sync Semrush snapshots and rollups into a database or warehouse on a schedule, then point Metabase at it.

Best for
  • Semrush reporting that SEO and content leads depend on
  • Joining Semrush data with Search Console, analytics, and revenue data
  • Long-run trends for organic keywords and estimated traffic trend and position-tracking visibility by campaign
Trade-offs
  • You own the refresh schedule and the snapshot grain
  • Sync dated snapshots and rollups — not one-off exports
  • API-unit budgets constrain how wide and how often you can pull

What can you analyze from Semrush data in Metabase?

  • Organic keywords and estimated traffic trend — built from domain visibility and position-tracking rows and the related organic keyword counts, position tracking campaigns, backlink summaries data your sync exposes.
  • Position-tracking visibility by campaign — built from domain visibility and position-tracking rows and the related organic keyword counts, position tracking campaigns, backlink summaries data your sync exposes.
  • Keyword movers: gains and losses by week — built from domain visibility and position-tracking rows and the related organic keyword counts, position tracking campaigns, backlink summaries data your sync exposes.
  • Backlink authority and referring-domain growth — built from domain visibility and position-tracking rows and the related organic keyword counts, position tracking campaigns, backlink summaries data your sync exposes.
  • Share of voice against tracked competitors — built from domain visibility and position-tracking rows and the related organic keyword counts, position tracking campaigns, backlink summaries data your sync exposes.

Which Semrush dashboards should you build in Metabase?

For: SEO leads

Visibility overview

Whether organic visibility is compounding or eroding.

  • Keywords in top 3 / top 10 / top 20 over time (stacked area)
  • Estimated organic traffic trend (line)
  • Average position, impression-weighted (line)
  • Visibility by keyword group (table)
For: Content teams

Keyword movement

Which queries and pages are winning or losing.

  • Biggest position gains and losses this week (table)
  • Newly ranking keywords (table)
  • Striking-distance keywords: positions 11–20 (table)
  • Position distribution by content cluster (bar)
For: Link builders

Authority and backlinks

The off-page trend behind the rankings.

  • Domain authority score trend (line)
  • Referring domains: new vs. lost by week (combo)
  • Backlink velocity vs. competitors (line)
  • Top new referring domains by authority (table)
For: Leadership

Competitive position

Your slice of the market's search demand.

  • Share of voice across tracked keywords (line)
  • Competitor visibility comparison (bar)
  • Keyword-gap counts by competitor (table)
  • Organic traffic vs. target (number + line)

How do you use the Semrush MCP server with the Metabase CLI?

Pair the Semrush MCP server with the Metabase CLI for fast, hands-on analysis. MCP is useful for scoped lookups and summarized exports; the Metabase CLI's upload command loads CSV data into Metabase and creates a ready-to-query table and model.

Example workflow

  • Ask the MCP server for the latest domain visibility and position-tracking rows for your tracked keywords, with search volume and position deltas.
  • Export the result as CSV, keeping keywords, domains, positions, and snapshot dates as stable columns.
  • Run mb upload csv to load it into Metabase as a table and model, then build questions and dashboards on top.

Be honest about the limits

  • MCP lookups are excellent for exploration, not scheduled reporting.
  • A CSV upload is a snapshot; refresh it with mb upload replace or move to the pipeline for real history.
  • Position and authority trends need dated snapshots — vendor UIs keep history, but your warehouse only trends what you've synced, so schedule pulls before you need the chart.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up Semrush MCP and the Metabase CLI?

Semrush MCP serverofficial

Transport
Hosted remote MCP via Streamable HTTP
Auth
OAuth, or a Semrush API key via an Apikey header
Best for
Live scoped lookup and export

Metabase CLIofficial

Install
npm install -g @metabase/cli
Auth
mb auth login
Load data
mb upload csv --file data.csv
Requires
An uploads database (Admin → Settings → Uploads)
MCPExample MCP client config
{
  "mcpServers": {
    "semrush": {
      "url": "https://mcp.semrush.com/v2/mcp",
      "headers": {
        "Authorization": "Apikey YOUR_API_KEY"
      }
    }
  }
}

API access is plan-gated: SEO data needs a Semrush One Starter/Pro plan or higher (or an API-units package; legacy SEO Classic Pro/Guru plans also qualify) with 50,000 API units included, and Trends traffic data needs a separate Trends API subscription. Budget units before pointing an agent at wide keyword pulls.

TerminalLoad a Semrush CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load a domain-visibility-and-position-tracking-rows export — creates a table AND a model
mb upload csv --file semrush-domain-visibility-and-position-tracking-rows.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file semrush-domain-visibility-and-position-tracking-rows.csv

Can you generate a Semrush dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Semrush MCP server and the Metabase CLI. It works end to end: if Semrush tables already exist in Metabase it analyzes those; otherwise it pulls scoped, summarized data over MCP, loads it with mb upload csv, then builds the dashboard and caveats any metric that needs missing history.

Prompt for creating a Semrush SEO Overview dashboard
Create a polished Metabase dashboard for Semrush seo analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help SEO and marketing leaders understand keyword visibility, position movement, backlink growth, and share of voice against competitors from Semrush data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for semrush tables and
  models). If durable Semrush data is already present — synced from a warehouse
  or uploaded earlier — use it and skip to Step 2.
- If nothing is there, pull a scoped, summarized export with the Semrush MCP server:
  domain visibility and position-tracking rows, plus organic keyword counts, position tracking campaigns, backlink summaries.
  Prefer dated snapshots and rollups over wide raw pulls — API units cost money.
  Write each result to a CSV, then load it with the Metabase CLI — run
  "mb upload csv --file <export>.csv" so each upload creates a table and a
  ready-to-query model. Use "mb upload replace <table-id> --file <export>.csv"
  to refresh an existing table instead of creating duplicates.

Step 2 — Inspect before querying:
Do not assume exact table or column names. Inspect available keywords, domains,
dates, and whether multiple snapshot dates exist before creating trend cards.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  Semrush — it reads a database or CLI-uploaded tables.
- Trend cards need multiple dated snapshots; a single export only supports
  point-in-time cards — label them as such.
- Keep vendor metrics separate from Search Console data: estimated traffic and
  search volume are modeled numbers, clicks and impressions are measured ones.
- State the position convention (best rank per keyword vs. all appearances)
  once and reuse it on every card.
- Segment branded from non-branded keywords before reporting averages.

Dashboard title: Semrush SEO Overview

Sections:
1. Executive summary: Estimated organic traffic; Keywords in top 10; Domain
   authority; Referring domains; Share of voice.
2. Visibility: Top 3/10/20 keyword counts over time; average position trend.
3. Movement: Biggest gains and losses; newly ranking; striking-distance table.
4. Authority: Authority-score trend; new vs. lost referring domains; velocity.
5. Competitors: Share of voice and visibility comparison across rivals.

Filters: Date range, Domain/Project, Keyword group, Search engine, Location,
Competitor.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. Include caveats for any metric
that cannot be calculated from the available data.

How do you sync Semrush data into a database or warehouse?

For dashboards that need history and reliability, land Semrush snapshots and rollups in a database first, then connect Metabase to that database.

Connector options

  • Managed ETL — use a connector when one covers the objects you need.
  • Custom pipeline — use the Semrush API for control over grain, fields, and refresh cadence.
  • MCP + CSV — use this for quick exploration and one-off slices.

No managed Airbyte or Fivetran connector exists (the Airbyte source is an open request, not a shipped connector) — schedule scripts against the Semrush API and land daily domain and position-tracking rollups, watching per-call API-unit costs.

Notes

  • Decide the snapshot grain first (daily per keyword for rankings, weekly for backlinks is the workhorse) — it drives API-unit spend and every trend card.
  • Land raw snapshot tables first, then build clean Metabase models on top.
  • Normalize keyword, target domain, snapshot date, position, search volume, and URL fields.

How should you model Semrush data in Metabase?

Core tables

TableGrainKey columns
semrush_domain_dailyone row per domain per daydomain, stat_date, organic_keywords, organic_traffic_est, organic_cost_est, authority_score
seo_keyword_positionsone row per keyword per campaign per snapshot datekeyword, campaign, stat_date, position, previous_position, search_volume, url, serp_features
semrush_backlinks_summaryone row per domain per snapshot datedomain, stat_date, backlinks_total, referring_domains, authority_score, follow_ratio

Modeling advice

  • Build a clean seo_keyword_positions model with common columns across tools, so multi-tool SEO dashboards don't fork definitions.
  • Every snapshot table needs an explicit snapshot or crawl date column — trends live or die on it.
  • Keep modeled vendor estimates (volume, traffic, difficulty) in separate columns from measured Search Console data.
  • Store keyword and domain join keys in a consistent normalized form (lowercase, no protocol, no trailing slash).

Which Semrush metrics should you track in Metabase?

MetricDefinitionNotes
Keywords in top 10Tracked keywords ranking in positions 1–10 per snapshot.Fix the keyword set before trending the count.
Average positionImpression- or volume-weighted mean rank across keywords.Weight it, or one long-tail batch moves the average.
Domain authority scoreThe vendor's 0–100 link-authority score for a domain.Compare within one vendor's scale, never across vendors.
Referring domainsUnique domains linking to the target at a snapshot date.Count domains, not backlinks — one domain can add 10,000 links.
Backlink velocityNet new referring domains per week or month.Watch lost domains, not just gains.
Share of voiceYour volume-weighted share of tracked-keyword visibility.Only comparable within a fixed keyword set.

What SQL powers Semrush dashboards in Metabase?

These assume a cleaned analytical model in a warehouse (PostgreSQL dialect). Adjust table and column names to match your pipeline.

Keywords in top 3 / top 10 / striking distance over timePostgreSQL

The visibility headline from position snapshots.

SELECT
  stat_date,
  COUNT(*) FILTER (WHERE position <= 3) AS top_3,
  COUNT(*) FILTER (WHERE position <= 10) AS top_10,
  COUNT(*) FILTER (WHERE position BETWEEN 11 AND 20) AS striking_distance
FROM seo_keyword_positions
WHERE target_domain = 'yoursite.com'
GROUP BY 1
ORDER BY 1;
Referring-domain growth between snapshotsPostgreSQL

Semrush returns running totals rather than a change log, so velocity is the delta between consecutive snapshots.

SELECT
  stat_date,
  referring_domains,
  referring_domains - LAG(referring_domains) OVER (
    PARTITION BY domain ORDER BY stat_date
  ) AS net_ref_domain_change,
  backlinks_total,
  authority_score
FROM semrush_backlinks_summary
WHERE domain = 'yoursite.com'
ORDER BY stat_date;
Share of voice across tracked keywordsPostgreSQL

Volume-weighted visibility share per domain.

WITH weighted AS (
  SELECT
    stat_date,
    target_domain,
    -- weight each ranking by its keyword's volume and a CTR-by-position curve
    SUM(search_volume * CASE
      WHEN position = 1 THEN 0.28
      WHEN position <= 3 THEN 0.15
      WHEN position <= 10 THEN 0.05
      ELSE 0.01 END) AS weighted_clicks
  FROM seo_keyword_positions
  GROUP BY 1, 2
)
SELECT
  stat_date,
  target_domain,
  ROUND(100.0 * weighted_clicks
    / NULLIF(SUM(weighted_clicks) OVER (PARTITION BY stat_date), 0), 1)
    AS share_of_voice_pct
FROM weighted
ORDER BY 1, 3 DESC;

What are common mistakes when analyzing Semrush in Metabase?

Treating vendor estimates as measured analytics.→ Search volume, traffic estimates, and difficulty scores are modeled numbers. Keep them in separate columns from Search Console clicks and impressions, and label which is which on every card.
Comparing authority scores across vendors.→ Ahrefs DR, Semrush Authority Score, and Moz DA are different models on different scales. Trend one vendor's score over time; never chart two vendors' scores on one axis.
Trending an average position over a changing keyword set.→ Adding 500 long-tail keywords moves the average without any ranking change. Fix the keyword set per trend card, and version it when it changes.
Building dashboards from live MCP lookups only.→ MCP is useful for exploration; durable dashboards need a database-backed model with dated snapshots.

Related analytics

Related dashboards

Related integrations

FAQ

Does Metabase connect natively to Semrush?
No. Metabase reads databases and warehouses. Sync Semrush snapshots and rollups into a database first, or upload a CSV with the Metabase CLI, then build Metabase models and dashboards on top.
Should Metabase replace Semrush?
No — they answer different questions. Semrush is built for day-to-day SEO work in its own UI. Metabase is where you build governed, shareable reporting on top of the same data, keep history the vendor eventually drops, and join it with Search Console, analytics, and revenue data.
Why don't Semrush numbers match Google Search Console?
They measure different things. Vendor tools model search volume, traffic estimates, and rankings from their own crawls and clickstream panels; Search Console measures your actual clicks and impressions. Keep both in the warehouse — vendor data for competitive context and keyword universes, GSC for ground truth — and never mix them in one metric.
How much history can I get on a new sync?
Less than you'd hope. Authority scores and backlink counts usually come with vendor history, but position tracking starts when your campaigns start, and API pulls return current snapshots. The warehouse only trends what you've stored — schedule daily or weekly snapshot pulls from day one.