The SEO Toolkit provides a full suite of website analysis endpoints. Audit on-page SEO, check for broken links, measure page speed, validate structured data, inspect robots.txt, and compare pages side-by-side — all through a single, consistent API.
Base URL¶
https://seo.toolkitapi.io/v1/seo/
Endpoints¶
On-Page Auditing¶
| Method |
Endpoint |
Description |
GET |
/v1/seo/audit |
Full single-URL SEO audit with 0–100 score |
POST |
/v1/seo/bulk-audit |
Audit up to 10 URLs in one request |
POST |
/v1/seo/compare |
Side-by-side comparison of 2–5 URLs |
Content & Meta Analysis¶
| Method |
Endpoint |
Description |
GET |
/v1/seo/keyword-density |
Word count, readability, and keyword density |
GET |
/v1/seo/extract-meta |
Extract meta tags, OG, Twitter Card, and JSON-LD |
GET |
/v1/seo/headers |
HTTP response headers, status, and redirect chain |
Technical SEO¶
| Method |
Endpoint |
Description |
GET |
/v1/seo/broken-links |
Find broken outbound links on a page |
GET |
/v1/seo/pagespeed |
TTFB, response size, compression, HTTP version |
GET |
/v1/seo/mobile-friendly |
Viewport, font sizes, and media query checks |
GET |
/v1/seo/sitemap-check |
Parse sitemap.xml — URLs, lastmod, index detection |
GET |
/v1/seo/robots-check |
Inspect robots.txt rules, blocked paths, sitemaps |
GET |
/v1/seo/schema-validate |
Extract and validate JSON-LD structured data |
Quick Start¶
curl -G "https://seo.toolkitapi.io/v1/seo/audit" \
-H "x-api-key: YOUR_KEY" \
--data-urlencode "url=https://example.com"
import requests
resp = requests.get(
"https://seo.toolkitapi.io/v1/seo/audit",
params={"url": "https://example.com"},
headers={"x-api-key": "YOUR_KEY"},
)
print(resp.json()["score"])
const params = new URLSearchParams({ url: "https://example.com" });
const resp = await fetch(
`https://seo.toolkitapi.io/v1/seo/audit?${params}`,
{ headers: { "x-api-key": "YOUR_KEY" } }
);
const { score } = await resp.json();
console.log(`SEO Score: ${score}`);
Browse by topic¶
Common patterns¶
- All
GET endpoints accept a single URL via the url query parameter.
POST endpoints (bulk-audit, compare) accept a JSON body with a urls array.
- Fetch errors are reported per-row or via the top-level
error field — the HTTP response itself stays 200 unless the request is malformed.
- Every endpoint enforces SSRF protection: internal, loopback, and link-local addresses are rejected.
- The toolkit reads raw HTTP responses — it does not execute JavaScript. SPAs should serve meta tags in the initial HTML payload.
Common errors¶
| Scenario |
Status |
Detail |
| Missing or invalid API key |
401 |
Unauthorized |
| Malformed URL or internal host |
400 |
invalid-request |
| Missing required parameter |
422 |
Validation Error |
| Target site unreachable |
502 |
DNS, connection, or TLS failure |
Python SDK¶
pip install toolkitapi
from toolkitapi import SEO
with SEO(api_key="tk_...") as seo:
audit = seo.audit("https://example.com")
print(audit["score"], audit["meta_title"])
See individual endpoint pages for detailed parameter tables, response field schemas, and multi-language code examples.