← Blog

How to White-Label SEO Reports for Your Agency Clients

Generate branded SEO audit reports for your agency clients using shareable report links, embeddable score badges, and the SEO Score API. No PDF generators needed.

Your clients don't care about your tools. They care about their results. That's why the best agency reports don't look like they came from a third-party platform — they look like they came from you.

The problem is that most white-label SEO reporting involves expensive enterprise tools ($200-500/mo per seat), clunky PDF generators, or hours of manual copy-pasting into branded templates. There's a simpler way.

Shareable Report Links

Every domain audited through SEO Score API automatically gets a public report page:

https://seoscoreapi.com/report/acmecorp.com

Send that link to your client. They see their score, grade, category breakdowns, and prioritized fixes — all in a clean, interactive format. No PDF to generate, no template to maintain, no attachment to email.

The report updates every time you re-audit the domain, so the link always shows the latest data.

Embeddable Score Badges

Want to give clients something they can put on their own site? Every domain also gets an SVG badge:

<a href="https://seoscoreapi.com/report/acmecorp.com">
  <img src="https://seoscoreapi.com/badge/acmecorp.com"
       alt="SEO Score for acmecorp.com">
</a>

The badge shows the current score and grade, updates automatically, and links back to the full report. Clients love putting these in their footer or on their marketing pages — and it's a subtle backlink to your work.

Building Custom Branded Reports

If you need full control over the branding, use the API to pull raw audit data and render it however you want:

from seoscoreapi import audit

result = audit("https://acmecorp.com", api_key="YOUR_KEY")

# result contains:
# - score (0-100)
# - grade (A+ to F)
# - checks (28 individual results)
# - priorities (top issues sorted by severity)

Feed that data into your own HTML template, PDF generator, or dashboard. The API gives you structured JSON — you decide how it looks.

Example: HTML Report Generator

from seoscoreapi import audit, report_url

clients = {
    "Acme Corp": "https://acmecorp.com",
    "Beta Co": "https://betaco.io",
}

for name, url in clients.items():
    result = audit(url, api_key="YOUR_KEY")
    domain = url.split("//")[1].rstrip("/")

    print(f"""
    <h2>{name}</h2>
    <p>Score: <strong>{result['score']}/100</strong> ({result['grade']})</p>
    <p><a href="{report_url(domain)}">Full Report</a></p>
    <h3>Top Issues</h3>
    <ul>
    """)
    for p in result["priorities"][:5]:
        print(f"  <li>[{p['severity']}] {p['issue']}</li>")
    print("</ul>")

Run that monthly, wrap it in your agency's email template, and you have branded client reports generated in seconds.

Google Sheets Dashboard

For agencies that want a lightweight client dashboard without building anything:

import gspread
from seoscoreapi import audit

gc = gspread.service_account()
sheet = gc.open("Client SEO Dashboard").sheet1

clients = sheet.col_values(1)[1:]  # URLs from column A

for i, url in enumerate(clients, start=2):
    result = audit(url, api_key="YOUR_KEY")
    sheet.update_cell(i, 2, result["score"])
    sheet.update_cell(i, 3, result["grade"])
    sheet.update_cell(i, 4, len(result.get("priorities", [])))

Share the Google Sheet with your client. They see their score update every time you run the script. Zero infrastructure, zero hosting costs.

Automated Monthly Reports

Combine the API with email to send reports on autopilot:

from seoscoreapi import audit, report_url
import smtplib
from email.mime.text import MIMEText

clients = {
    "ceo@acmecorp.com": "https://acmecorp.com",
    "marketing@betaco.io": "https://betaco.io",
}

for email, url in clients.items():
    result = audit(url, api_key="YOUR_KEY")
    domain = url.split("//")[1].rstrip("/")
    link = report_url(domain)

    body = f"""Hi,

Here's your monthly SEO report:

Score: {result['score']}/100 ({result['grade']})
Issues found: {len(result.get('priorities', []))}

View your full report: {link}

Best,
Your Agency Name
"""
    msg = MIMEText(body)
    msg["Subject"] = f"Monthly SEO Report: {result['score']}/100 ({result['grade']})"
    msg["From"] = "reports@youragency.com"
    msg["To"] = email

    # Send via your SMTP provider

Schedule that as a cron job or GitHub Action on the 1st of every month.

What This Costs

For a 15-client agency auditing 5 pages per client monthly:

You're paying for audit data. How you present it to clients is entirely up to you.

Get Started

  1. Sign up for a free API key — 5 audits/day, no credit card
  2. Audit a client site and send them the report link
  3. Set up the badge on their site
  4. Upgrade to Basic ($15/mo) when you need more volume

Try SEO Score API free

Get Free API Key