An SEO audit API is a web service that programmatically analyzes any URL for on-page SEO issues and returns structured JSON data covering meta tags, headings, schema markup, images, links, and content quality signals. It replaces manual auditing with automated, repeatable checks you can run on demand, on a schedule, or inside CI/CD pipelines.
Last updated: September 2026 | Written by Malik Rashid, founder of ToolTrace
Key Takeaways
- An SEO audit API checks 30+ on-page factors per URL and returns machine-readable JSON, not visual reports
- Manual audits take 10 to 15 minutes per page. An API call takes 2 to 5 seconds. For a 200-page site, that is 50 hours vs. 15 minutes
- The most common audit findings (across thousands of pages audited at ToolTrace): missing meta descriptions (34% of pages), images without alt text (28%), and no structured data (41%)
- Teams integrate the API into GitHub Actions, daily cron jobs, and monitoring dashboards to catch SEO regressions before they affect rankings
- ToolTrace's SEO Audit API covers meta tags, headings, schema, images, links, content quality, and page speed indicators in one call
What Is an SEO Audit API?
An SEO audit API is a programmatic interface that analyzes a web page's on-page SEO health and returns structured data. You send it a URL via HTTP request, and it returns JSON covering title tags, meta descriptions, heading structure, schema markup, image optimization, internal links, and content quality signals.
Instead of manually opening a browser tool, pasting in a URL, and reading through a visual report, you make an HTTP request and get back machine-readable results. Title tag present? Check. Meta description length within range? Check. H1 count, image alt attributes, schema validity, internal link count, page load indicators. All of it, in one structured response.
The key difference between an SEO audit API and a traditional audit tool is automation. With a tool, a human clicks buttons. With an API, your code does the work. That means you can audit pages on a schedule, trigger audits when content gets published, or run checks across an entire site in minutes.
ToolTrace offers an SEO Audit API as part of its web intelligence platform. It checks over 30 on-page factors per URL and returns everything as clean JSON. If you have used ToolTrace's free SEO Page Inspector tool on the website, the API is essentially the automated version of that same analysis.
What Does an On-Page SEO Audit Actually Check?
Before we get into the API side, let's make sure we are on the same page about what an on-page SEO audit covers. It is not just about keywords. A thorough audit looks at the full picture of how a page is built, structured, and optimized for search engines.
Meta Tags
This is the foundation. Your title tag and meta description are what show up in search results, so getting them right matters more than most people realize.
An audit checks whether your title tag exists, how long it is (ideally 50 to 60 characters), and whether it contains your target keyword. Same deal with the meta description. Is it present? Is it between 150 and 160 characters? Does it actually describe the page content?
The audit also looks at your robots meta tag (are you accidentally telling Google not to index the page?), canonical tags (are you pointing to the right URL?), and Open Graph tags for social sharing.
Heading Structure
Search engines use your heading hierarchy to understand page structure. A good on-page SEO audit checks that you have exactly one H1 tag, that your headings follow a logical order (H1, then H2s, then H3s under each H2), and that important keywords appear naturally in your headings.
You would be surprised how often pages have zero H1 tags, or three of them, or jump from H1 straight to H4. These are not catastrophic issues, but they send confusing signals to crawlers.
Schema Markup and Structured Data
Structured data is how you tell search engines explicitly what your content is about. JSON-LD schema markup can get you rich snippets, FAQ dropdowns, how-to cards, and other enhanced search results.
An SEO audit API checks whether structured data exists on the page, whether it is valid JSON-LD, and whether it follows Google's requirements. ToolTrace's Schema Markup Checker does this as a standalone free tool, and the API includes the same validation as part of every audit.
Images
Every image on your page should have an alt attribute. Not just for SEO, but for accessibility. An audit counts your images, flags any missing alt text, checks for oversized files that could slow down page load, and identifies images without proper dimensions set.
Internal and External Links
Links are the connective tissue of your website. The audit examines how many internal links point to other pages on your site, how many external links go outbound, whether any links are broken (404 errors), and whether your anchor text is descriptive or generic.
Page Speed Indicators
While a full Core Web Vitals assessment requires tools like Lighthouse, an on-page SEO audit API can catch many speed-related issues. Large uncompressed images, render-blocking resources, missing lazy loading attributes, excessive DOM size. These are all things visible in the page source that directly affect load time.
Content Quality Signals
Some audit APIs, including ToolTrace's, also analyze the actual content. Word count, keyword density, reading level, text-to-HTML ratio. A page with 50 words of content and 2000 lines of HTML is not going to rank well, and an audit can flag that immediately.
Why Automate SEO Audits Instead of Running Them Manually?
If you only manage a handful of pages, manual audits work fine. Open ToolTrace's SEO Page Inspector or Meta Tag Checker, paste in a URL, review the results. Done.
But manual audits break down quickly when you need to:
- Audit hundreds or thousands of pages across a site
- Check every new page before it goes live
- Monitor existing pages for SEO regressions after code deployments
- Generate audit reports for multiple client sites on a schedule
- Feed SEO data into dashboards, ticketing systems, or alerting tools
This is where a site audit API becomes a necessity, not a luxury. You write the integration once, and it runs forever. No human clicking, no forgotten audits, no inconsistency between who ran the check and how they interpreted the results.
The math is simple. A manual audit takes maybe 10 to 15 minutes per page if you are thorough. An API call takes 2 to 5 seconds. For a 200-page site, that is the difference between 50 hours of human work and about 15 minutes of compute time.
Getting Started with ToolTrace's SEO Audit API
Let's get practical. Here is how to set up and use the ToolTrace SEO audit API with Python.
Authentication
First, you will need an API key from ToolTrace. Sign up at tooltrace.io, grab your key from the dashboard, and store it as an environment variable.
export TOOLTRACE_API_KEY="your_api_key_here" Your First Audit Request
Using the ToolTrace Python SDK, running an audit is straightforward:
import os
from tooltrace import ToolTraceClient
client = ToolTraceClient(api_key=os.environ["TOOLTRACE_API_KEY"])
# Run an on-page SEO audit for a single URL
result = client.seo.audit(url="https://example.com/landing-page")
print(f"Overall Score: {result.score}/100")
print(f"Issues Found: {result.total_issues}")
print(f"Critical: {result.critical_count}")
print(f"Warnings: {result.warning_count}") That is it. One method call, and you get a complete on-page SEO audit for any publicly accessible URL.
Understanding the API Response
Here is what a typical response from the SEO audit API looks like:
{
"url": "https://example.com/landing-page",
"score": 72,
"audited_at": "2026-09-01T14:23:01Z",
"meta": {
"title": {
"value": "Best Project Management Tools in 2026",
"length": 43,
"status": "pass",
"message": "Title tag is present and within recommended length"
},
"description": {
"value": "Compare the top project management tools...",
"length": 168,
"status": "warning",
"message": "Meta description exceeds 160 characters"
},
"canonical": {
"value": "https://example.com/landing-page",
"status": "pass"
},
"robots": {
"index": true,
"follow": true,
"status": "pass"
}
},
"headings": {
"h1_count": 1,
"h2_count": 5,
"h3_count": 8,
"hierarchy_valid": true,
"status": "pass"
},
"images": {
"total": 12,
"missing_alt": 3,
"oversized": 1,
"status": "warning",
"details": [
{"src": "/images/hero.png", "issue": "missing_alt"},
{"src": "/images/chart.jpg", "issue": "file_size_exceeds_500kb"}
]
},
"links": {
"internal": 14,
"external": 6,
"broken": 1,
"nofollow": 2,
"status": "warning"
},
"schema": {
"found": true,
"types": ["Article", "BreadcrumbList"],
"valid": true,
"status": "pass"
},
"content": {
"word_count": 1847,
"text_to_html_ratio": 0.34,
"status": "pass"
}
} Every field is structured and consistent. That is the benefit of working with an on-page SEO audit API instead of scraping visual reports. You can parse this data, store it in a database, compare it over time, and act on it programmatically.
Parsing Results and Taking Action
Here is a more complete example that audits a URL and generates a prioritized list of fixes:
import os
from tooltrace import ToolTraceClient
client = ToolTraceClient(api_key=os.environ["TOOLTRACE_API_KEY"])
result = client.seo.audit(url="https://yoursite.com/blog/new-post")
# Collect all issues by severity
critical_issues = []
warnings = []
# Check meta tags
if result.meta["title"]["status"] == "fail":
critical_issues.append("Missing or empty title tag")
if result.meta["description"]["status"] == "fail":
critical_issues.append("Missing meta description")
elif result.meta["description"]["status"] == "warning":
warnings.append(f"Meta description length: {result.meta['description']['length']} chars")
# Check heading structure
if result.headings["h1_count"] == 0:
critical_issues.append("No H1 tag found on page")
elif result.headings["h1_count"] > 1:
warnings.append(f"Multiple H1 tags found: {result.headings['h1_count']}")
# Check images
if result.images["missing_alt"] > 0:
warnings.append(f"{result.images['missing_alt']} images missing alt text")
# Check for broken links
if result.links["broken"] > 0:
critical_issues.append(f"{result.links['broken']} broken links detected")
# Check schema
if not result.schema["found"]:
warnings.append("No structured data (schema markup) found")
# Print prioritized report
print("=== SEO AUDIT REPORT ===")
print(f"URL: {result.url}")
print(f"Score: {result.score}/100\n")
if critical_issues:
print("CRITICAL (fix immediately):")
for issue in critical_issues:
print(f" * {issue}")
if warnings:
print("\nWARNINGS (should fix):")
for warning in warnings:
print(f" * {warning}")
if not critical_issues and not warnings:
print("All checks passed. Nice work.") This kind of script takes about 20 minutes to write and saves hours every week. Run it against your whole site, and you have a complete on-page SEO audit without touching a browser.
Bulk Auditing: Scanning Your Entire Site
The real power of a site audit API shows up when you need to audit at scale. Here is how to audit every page on your site:
import os
from tooltrace import ToolTraceClient
client = ToolTraceClient(api_key=os.environ["TOOLTRACE_API_KEY"])
# Get URLs from your sitemap, CMS, or a simple list
urls = [
"https://yoursite.com/",
"https://yoursite.com/features",
"https://yoursite.com/pricing",
"https://yoursite.com/blog/post-1",
"https://yoursite.com/blog/post-2",
# ... hundreds more
]
results = []
for url in urls:
audit = client.seo.audit(url=url)
results.append({
"url": url,
"score": audit.score,
"critical": audit.critical_count,
"warnings": audit.warning_count
})
# Sort by score to find your worst-performing pages
results.sort(key=lambda x: x["score"])
print("Pages needing the most attention:")
for r in results[:10]:
print(f" Score {r['score']}/100 | {r['critical']} critical | {r['url']}") Now you can see, at a glance, which pages need work first. No more guessing. No more auditing random pages and hoping you caught the important ones.
Integrating SEO Audits into CI/CD Pipelines
This is where things get really interesting. If you are a development team that cares about SEO (and you should be), you can add SEO audit checks to your deployment pipeline. The same way you run unit tests before deploying code, you can run SEO audits before publishing content.
GitHub Actions Example
Here is a GitHub Actions workflow that runs an SEO audit API check on every pull request that touches content pages:
name: SEO Audit Check
on:
pull_request:
paths:
- 'content/**'
- 'pages/**'
- 'templates/**'
jobs:
seo-audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install tooltrace
- name: Run SEO Audit
env:
TOOLTRACE_API_KEY: ${{ secrets.TOOLTRACE_API_KEY }}
run: python scripts/seo_audit_check.py
- name: Comment PR with results
if: always()
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const report = fs.readFileSync('audit_report.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: report
}); And the audit script it calls:
import os
import sys
from tooltrace import ToolTraceClient
client = ToolTraceClient(api_key=os.environ["TOOLTRACE_API_KEY"])
# Audit the staging URL for changed pages
staging_url = "https://staging.yoursite.com/new-page"
result = client.seo.audit(url=staging_url)
# Write markdown report for PR comment
with open("audit_report.md", "w") as f:
f.write(f"## SEO Audit Results\n\n")
f.write(f"**Score:** {result.score}/100\n\n")
if result.critical_count > 0:
f.write(f"**{result.critical_count} critical issues found.**\n\n")
f.write("| Check | Status |\n|-------|--------|\n")
f.write(f"| Title Tag | {result.meta['title']['status']} |\n")
f.write(f"| Meta Description | {result.meta['description']['status']} |\n")
f.write(f"| H1 Tag | {'pass' if result.headings['h1_count'] == 1 else 'fail'} |\n")
f.write(f"| Images Alt Text | {'pass' if result.images['missing_alt'] == 0 else 'warning'} |\n")
f.write(f"| Schema Markup | {result.schema['status']} |\n")
# Fail the CI build if score is too low
if result.score < 60:
print(f"SEO audit failed. Score: {result.score}/100")
sys.exit(1) This setup means no page goes live with a missing title tag or broken schema. Ever. Your SEO standards become enforced automatically, just like your code standards.
Building an SEO Monitoring Dashboard
Beyond one-time audits, teams use the SEO audit API to build ongoing monitoring. Run audits on a schedule, store the results, and track your SEO health over time.
Here is a simple monitoring setup:
import os
import json
from datetime import datetime
from tooltrace import ToolTraceClient
client = ToolTraceClient(api_key=os.environ["TOOLTRACE_API_KEY"])
# Pages you want to monitor regularly
monitored_pages = [
"https://yoursite.com/",
"https://yoursite.com/product",
"https://yoursite.com/pricing",
]
# Run audits and store results
timestamp = datetime.now().isoformat()
daily_report = {"date": timestamp, "pages": []}
for url in monitored_pages:
result = client.seo.audit(url=url)
daily_report["pages"].append({
"url": url,
"score": result.score,
"title_status": result.meta["title"]["status"],
"description_status": result.meta["description"]["status"],
"h1_count": result.headings["h1_count"],
"broken_links": result.links["broken"],
"missing_alt": result.images["missing_alt"],
"has_schema": result.schema["found"]
})
# Save to file (or send to your database, Datadog, etc.)
filename = f"audits/daily_{datetime.now().strftime('%Y%m%d')}.json"
with open(filename, "w") as f:
json.dump(daily_report, f, indent=2)
# Alert if any page drops below threshold
for page in daily_report["pages"]:
if page["score"] < 70:
print(f"ALERT: {page['url']} scored {page['score']}/100")
# Send to Slack, email, PagerDuty, etc. Run this daily with a cron job or a scheduled GitHub Action, and you have a lightweight SEO monitoring system. When a deployment accidentally removes your schema markup or a CMS update breaks your heading structure, you will know about it within 24 hours instead of finding out weeks later when rankings drop.
Common On-Page SEO Audit Findings (and How to Fix Them)
After running thousands of audits through ToolTrace's SEO audit API, certain issues come up over and over again. Here are the most common ones and exactly how to fix them.
Missing or Duplicate Title Tags
This is the single most common issue. Pages either have no title tag at all (usually a CMS misconfiguration) or multiple pages share the same title.
The fix: Every page needs a unique, descriptive title tag between 50 and 60 characters. Include your primary keyword near the beginning. If your CMS auto-generates titles, check that the template actually outputs unique values per page.
Meta Descriptions That Are Too Long or Missing
Google truncates descriptions longer than about 160 characters. Missing descriptions mean Google generates its own snippet, which often is not ideal.
The fix: Write a unique meta description for every important page. Keep it between 120 and 160 characters. Include your target keyword and a clear reason for the user to click.
Multiple H1 Tags
Every page should have exactly one H1. It is your main heading. Having two or three H1 tags confuses search engines about what the page is primarily about.
The fix: Audit your templates. Often, the site header or navigation contains an H1-wrapped logo, which means every page on the site has at least two H1 tags. Change the logo to a div or span, and reserve H1 for your main content heading.
Images Without Alt Text
Alt text serves two purposes: accessibility for screen readers and context for search engines. Missing alt text is both an SEO issue and an accessibility issue.
The fix: Add descriptive alt text to every meaningful image. Decorative images (borders, spacers) can have empty alt attributes (alt=""), but content images need real descriptions. This is something the on-page SEO audit will flag every time.
No Structured Data
Many sites skip schema markup entirely. That means missing out on rich snippets, FAQ cards, and other enhanced search results.
The fix: At minimum, add Article schema to blog posts, Organization schema to your homepage, and BreadcrumbList schema to all pages. Use ToolTrace's Schema Markup Checker to validate your JSON-LD before deploying it.
Broken Internal Links
Links pointing to 404 pages waste crawl budget and create dead ends for users. They tend to accumulate over time as pages get renamed, moved, or deleted.
The fix: Run a site audit API scan regularly to catch broken links early. When you find them, either update the link to the correct URL or set up a 301 redirect from the old URL to the new one.
Low Text-to-HTML Ratio
Pages with very little visible text compared to their HTML code are seen as thin content by search engines. This often happens with pages that are mostly JavaScript-rendered or heavily templated.
The fix: Ensure your main content is present in the initial HTML response, not just loaded via JavaScript. Aim for a text-to-HTML ratio above 25%.
Best SEO Audit APIs Compared (2026)
If you are evaluating SEO audit API options, here is how the major providers compare:
| Feature | ToolTrace | Ahrefs Site Audit | Screaming Frog | SEMrush | Moz |
|---|---|---|---|---|---|
| REST API access | Yes | Yes (paid plans only) | No (desktop app) | Yes (Guru+ plans) | Yes (paid only) |
| Per-URL on-demand audit | Yes | No (project-based crawl) | No (full crawl) | No (project-based) | No (project-based) |
| Free tier | Yes | No | Free up to 500 URLs | No API on free | No API on free |
| Python SDK | Yes | No | N/A | No | No |
| Schema validation | Yes | Basic | Yes | Basic | No |
| JSON response | Yes | Yes | CSV/JSON export | Yes | Yes |
| CI/CD integration | Easy (single URL audit) | Not designed for it | Not designed for it | Not designed for it | Not designed for it |
| Pricing | Credits (per request) | $99+/mo | Free/paid license | $129+/mo | $99+/mo |
The key difference: most SEO tools are designed for humans running full-site crawls through a dashboard. ToolTrace's SEO audit API is designed for developers who need to audit individual URLs programmatically, on demand, inside automated workflows. If you need "audit this one URL right now and give me JSON," ToolTrace is built for that. If you need a monthly full-site crawl with a visual dashboard, the traditional tools have more features for that use case.
SEO Audit API vs. Manual Audit Tools: When to Use Which
You do not have to choose one or the other. In practice, most teams use both.
Use manual tools when you are doing a deep dive into a single page. ToolTrace's free tools (SEO Page Inspector, Meta Tag Checker, Schema Markup Checker) are perfect for this. Paste in a URL, get a visual report, review each finding. Great for learning, troubleshooting, and one-off checks.
Use the SEO audit API when you need consistency, scale, or automation. Auditing your entire site, monitoring pages over time, gating deployments on SEO quality, generating reports for clients. These are all API use cases.
The manual tools are the magnifying glass. The API is the surveillance system. You need both.
Real Use Cases for an On-Page SEO Audit API
Here is how different teams actually use an on-page SEO audit API in practice.
SaaS Companies
SaaS teams integrate the SEO audit API into their content publishing workflow. Every new blog post gets audited automatically before it goes live. If the audit catches a missing meta description or broken link, the writer gets notified before the page is indexed.
Digital Agencies
Agencies managing multiple client sites use the site audit API to generate monthly SEO health reports. Instead of manually auditing each client's site, they run batch audits and produce branded reports showing improvements, regressions, and action items.
E-commerce Platforms
Online stores with thousands of product pages use automated audits to catch issues at scale. A single template change can break structured data across every product page. Automated monitoring with an SEO audit API catches that within hours.
Developers Building SEO Tools
If you are building your own SEO tooling, crawler, or reporting platform, an on-page SEO audit API like ToolTrace's saves you from building audit logic from scratch. You get 30+ checks per URL via a simple API call, and you can focus your development effort on your product's unique value instead.
Pricing and Getting Started
ToolTrace's SEO Audit API uses a credit-based pricing model. Each audit consumes credits from your pool, and you can use those same credits across all of ToolTrace's APIs (not just SEO audits). There is no separate subscription for each endpoint.
You can start with a free tier to test the API and see the response format. Sign up at tooltrace.io, generate an API key, and run your first audit in under five minutes.
For teams that need high volume, the pricing scales linearly. No surprise jumps, no enterprise-only tiers hiding the good features. Every plan gets access to the same audit checks and the same response format.
Ready to automate your SEO audits? Review ToolTrace plans, then create your free account and run your first audit in minutes.
Frequently Asked Questions
What is an SEO audit API?
An SEO audit API is a web service that programmatically analyzes a URL for on-page SEO issues. You send an HTTP request with a URL, and the API returns structured data (usually JSON) covering meta tags, headings, images, links, schema markup, and other ranking factors. It is the automated equivalent of using a manual SEO audit tool.
How is a site audit API different from a website crawler?
A site audit API focuses on analyzing individual pages for SEO quality. A crawler focuses on discovering pages and following links across a site. Many SEO platforms combine both, but they solve different problems. ToolTrace's API audits one page per request, which gives you precise control over what gets checked and when.
Can I use an SEO audit API for free?
Yes. Several providers, including ToolTrace, offer free tiers. ToolTrace gives you a set number of free credits when you sign up, and each SEO audit API call consumes credits from that pool. For testing and small sites, the free tier is usually enough to get started.
What programming languages work with SEO audit APIs?
Any language that can make HTTP requests works fine. Python, JavaScript, Ruby, Go, PHP. ToolTrace provides a Python SDK for the easiest setup, but you can also call the REST API directly from any language using standard HTTP libraries.
How often should I run automated SEO audits?
It depends on how frequently your content changes. Most teams run daily audits on their most important pages, weekly audits across the full site, and on-demand audits in CI/CD whenever content pages are modified. The SEO audit API makes all of these patterns easy to implement.
What's the difference between an on-page SEO audit and a technical SEO audit?
An on-page SEO audit focuses on the content and HTML elements of individual pages: meta tags, headings, images, content quality, internal links, and structured data. A technical SEO audit looks at site-wide infrastructure: crawlability, indexation, site speed, sitemaps, robots.txt, and server configuration. Both matter, and they complement each other.
This guide is maintained by the ToolTrace team and updated regularly to reflect API changes, new audit checks, and best practices. Last reviewed September 2026.