PeakKR

SEMrush API integration

SEMrush API Integration for Daily Agency Workflows

Most agencies have a SEMrush seat for every strategist and almost no SEMrush data inside the systems where work actually gets assigned. Rankings live in one tab, the Site Audit lives in another, and the sprint board is populated by whatever someone remembered on Monday morning. The gap between "we can see the problem" and "someone is working the problem" is where retainer value quietly leaks out.

This is a guide to closing that gap. Specifically: how to use SEMrush API integration — plus the cheaper, non-API routes — to get ranking, audit and backlink signals into daily workflows without building a data engineering department.

Why SEMrush data dies in dashboards

A dashboard answers "what happened." A workflow answers "who is doing what about it, by when." Almost every agency over-invests in the first and under-invests in the second.

The symptom is familiar. You build a beautiful Looker Studio report with position tracking, visibility index and a Site Audit health score. It updates daily. Nobody opens it between reporting cycles. Three weeks later a client asks why their category page dropped from position 4 to 11, and the answer was sitting in the dashboard the whole time.

The fix isn't a better dashboard. It's routing a small number of high-signal events into the place your team already looks — the task board — and leaving everything else in reporting. That distinction is worth being strict about, because the temptation to pipe everything in is what makes these integrations fail.

What SEMrush data actually belongs in daily work

Sort SEMrush outputs into three tiers before you write a line of code.

Tier 1: Event data that should create a task

Tier 2: Cadence data that should populate a recurring review

Tier 3: Reporting data that belongs in the client deck only

Tier 1 goes into tasks. Tier 2 goes into a standing agenda item. Tier 3 stays in the reporting layer. If you skip this triage, you end up with a Slack channel that everyone mutes in week two.

Three ways to get the data out

1. Scheduled exports and the Looker Studio connector

Cheapest and most underrated. Position Tracking and Site Audit both support scheduled PDF/CSV email reports, and SEMrush maintains a Looker Studio connector that pulls Domain Analytics and project data without consuming API units in the same way custom calls do.

This route is fine for Tier 2 and Tier 3. Its hard limit: it's read-only and passive. It can show you a drop; it can't create a task about the drop.

2. The Standard API

At the time of writing, API access ships with Business plans (around $500/month) and is available to Guru users as a paid add-on. Calls are metered in API units purchased on top of your subscription, and the cost varies sharply by endpoint — roughly 10 units per line for organic keyword and domain reports, and around 40 units per line for backlink data.

That pricing shapes design decisions more than anything else. Pulling the top 100 organic keywords for 40 client domains once a week is a few tens of thousands of units — trivial. Pulling full backlink profiles for the same 40 domains daily will vaporise your balance in a fortnight. Pull frequency should match how fast the underlying data actually changes.

3. The Projects API

Separate from Domain Analytics, the Projects API covers Site Audit and Position Tracking data for domains you've set up as projects. This is the highest-value endpoint set for agency workflows, because it's scoped to accounts you own and it returns the exact issue-level detail you want to turn into tickets: URL, issue type, severity, first seen date.

A working pipeline you can build in a day

You don't need Airflow. A version that runs reliably for a 20-client agency looks like this:

  1. Google Sheet as the config file. One row per client: domain, project ID, keyword traffic floor, position-drop threshold, task owner, priority label. Non-technical account managers can edit it, which matters more than elegance.
  2. Apps Script or a small Python job on a scheduler. Runs Monday 06:00 and Thursday 06:00. Hits Position Tracking and Site Audit endpoints for each active project.
  3. A state table. Store last run's results. Diffing is the whole game — you only want changes, not the full dataset. This is also how you enforce the "persists across two pulls" rule that kills most false positives.
  4. A task-creation step. Post to your PM tool's API with a templated title ("Rankings: /commercial-cleaning-london dropped 4→12, 880 vol"), the evidence in the description, the owner from config, and a due date of +3 business days.
  5. A digest. Everything below task threshold goes into one weekly summary message per account, not individual pings.

Two implementation notes from experience. First, deduplicate aggressively — Site Audit will re-report the same broken link every crawl, so key your tasks on a hash of issue type plus URL and skip anything already open. Second, close the loop: when a task is marked done, write the completion date back to your state table so you can measure fix latency. Time-to-fix on technical issues is one of the few genuinely useful internal SEO KPIs, and almost nobody tracks it.

Where these integrations break

Alert fatigue. A 3-position wobble on a keyword with 20 monthly searches is not an event. Set a traffic floor — we'd suggest ignoring anything under 100 monthly volume unless it's explicitly a client priority term — and require persistence before firing.

No owner. An auto-created task assigned to "the team" is an auto-created task nobody does. Assign to a human in the config file, per client.

Tool sprawl. If the tasks land in a board that isn't where delivery actually happens, you've just built a fourth place to look. The whole point is consolidation — the same argument applies here as to consolidating PM, time tracking and reporting rather than stitching four subscriptions together.

Data with no context. A ranking drop is only actionable if the person seeing it knows what shipped last week. That's why the audit trail matters: deploy notes, content updates and

Featured in this list? Grab your “Featured on PeakKR” badge and add it to your site — free.
Get your badge →

Frequently asked questions

Do I need a Business plan to use the SEMrush API?

Yes. Standard API access is bundled with SEMrush Business plans, and Guru users can request it as a paid add-on. API calls are also metered in units, which you buy separately from your seat cost, so budget for both the plan and the consumption.

What's the difference between the SEMrush API and the Looker Studio connector?

The Looker Studio connector is read-only and built for charts — it's great for client dashboards but can't trigger anything. The API returns raw JSON or CSV you can script against, which is what you need if you want ranking drops or new 5xx errors to create tasks automatically.

How often should I pull SEMrush data into my project management tool?

Match the pull frequency to how fast the data actually changes. Position tracking is worth a daily or weekly pull, Site Audit weekly after each crawl, and backlink or Domain Overview data monthly — pulling everything daily just burns API units and creates noise.

How do I stop automated SEO alerts from spamming my team?

Set thresholds that reflect commercial impact, not statistical movement. Filter for keywords above a traffic or revenue floor, require a drop to persist across two consecutive pulls, and route alerts to one triage owner per account rather than the whole channel.

Nick Quirk

Written by Nick Quirk

Founder of PeakKR

Nick Quirk is the founder of PeakKR, the agency workspace. He has spent decades running SEO and operations for marketing agencies, and writes about what holds up in real client work: technical audits, reporting, local campaigns, retainers and the systems behind them.

Run your agency on PeakKR

Client projects with phases, time tracking, technical SEO audits, client-ready reporting and AI briefs — the workspace this blog is written from.

Start free

Keep reading