Operated by Sourcelane✓ verified
Crawl a whole website and audit every page for SEO issues: broken links, missing titles and meta descriptions, duplicate content, slow pages and Core Web Vitals.
A website crawler that performs technical SEO audits site-wide, crawling pages to detect and report broken links and images, missing or duplicate meta titles and descriptions, missing H1s, thin and duplicate content, redirect chains and canonicalization errors, indexability issues, and page performance problems. The connector produces per-page on-page scores and plain‑English lists of errors, warnings and notices sorted by severity, identifies broken internal and external URLs with HTTP status evidence, extracts meta and content signals (meta title, meta description, H1, canonical tag), measures content metrics (word count, readability, duplicate content detection, click depth), catalogs link metrics (internal, external, inbound links), and captures page size and load metrics including server response and, in browser-rendered mode, Core Web Vitals such as Largest Contentful Paint, Cumulative Layout Shift and Time to Interactive. It supports HTML-only crawling and JavaScript-rendered crawling with real-browser performance measurement, can surface sitemap and subdomain coverage, and provides a site-wide summary with aggregate site score, counts of each issue type, and server/CMS/SSL details.
Verified Oct 25, 10:11 PM
$0.003
per page audited
Up to 100 per call. Only pay for results returned; failed calls are refunded.
Technical SEO audits
Find everything holding a site back in one crawl
Broken link checking
List every broken internal and external link and the page it's on
Agency client onboarding
Produce an audit for a prospect or new client in minutes
Site migrations and redesigns
Crawl before and after launch to catch broken pages and redirect chains
Content cleanup
Find thin, duplicate and non-indexable pages
Page speed and Core Web Vitals
Find the slowest pages across the whole site, not just the home page
The website to audit, e.g.
Optional settings
| Window | Uptime | Success rate | p50 | p95 | Calls |
|---|---|---|---|---|---|
| 24h | — | — | — | — | 0 |
| 7d | — | — | — | — | 0 |
| 30d | — | — | — | — | 0 |
Call it through Sourcelane's gateway or MCP server. We run the connector, apply your agent's spend guardrails, and bill only the results returned.
Call it via Sourcelane
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"website-seo-audit-crawler","params":{"startUrl":"crawlee.dev"},"maxResults":10}'Request params
| Field | Type | Required | Description |
|---|---|---|---|
startUrl | string | required | The website to audit, e.g. example.com or https://www.example.com/blog/. The crawler starts here and follows internal links. |
maxPages | integer | optional | Maximum pages to crawl and audit. Up to 10,000. |
renderMode | string | optional | Standard: fast HTML crawl, right for most sites. JavaScript rendering: for sites built with React, Vue and similar frameworks whose content only appears after JavaScript runs. Core Web Vitals: also measures Largest Contentful Paint, Cumulative Layout Shift and time to interactive in a real browser. |
includeSubdomains | boolean | optional | Also crawl subdomains such as blog.example.com or shop.example.com. |
followSitemap | boolean | optional | Also discover pages from the site's sitemap, not just from links. Finds orphan pages that nothing links to. |
Each result contains
| Field | Type | Description |
|---|---|---|
url | string | Page |
statusCode | integer | Status |
redirectTo | null | — |
onpageScore | integer | Score |
errorCount | integer | Errors |
warningCount | integer | Warnings |
noticeCount | integer | — |
errors | array | Error list |
warnings | array | Warning list |
notices | array | Notices |
title | string | — |
titleLength | integer | — |
description | string | — |
descriptionLength | integer | — |
h1 | string | — |
h1Count | integer | — |
canonical | string | — |
isIndexable | boolean | — |
nonIndexableReason | null | — |
wordCount | integer | — |
readabilityScore | integer | — |
clickDepth | integer | — |
internalLinks | integer | — |
externalLinks | integer | — |
inboundLinks | integer | — |
brokenLinks | null | — |
brokenLinkCount | integer | — |
images | integer | — |
pageSizeKb | number | — |
loadTimeMs | integer | — |
serverResponseMs | null | — |
timeToInteractiveMs | null | — |
largestContentfulPaintMs | null | — |
cumulativeLayoutShift | null | — |
duplicateTitle | boolean | — |
duplicateDescription | boolean | — |
duplicateContent | boolean | — |
scrapedAt | string | — |
Pick your tool and connect in under a minute. Then just ask — for example: “For these 50 domains, find contact emails and what e-commerce platform they run on.”
Connect Claude
Web, desktop and mobile. One click, then confirm.
Adds the Sourcelane MCP server with your key as a header.
claude mcp add --transport http sourcelane https://api.usesourcelane.com/mcp \
--header "Authorization: Bearer sl_live_your_agent_key"Alternative to the connector URL: add to claude_desktop_config.json, then restart Claude.
{
"mcpServers": {
"sourcelane": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.usesourcelane.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer sl_live_your_agent_key"
}
}
}
}Add to ~/.cursor/mcp.json (or Windsurf's mcp_config.json).
{
"mcpServers": {
"sourcelane": {
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer sl_live_your_agent_key"
}
}
}
}Save as .vscode/mcp.json. VS Code prompts for your key once.
{
"servers": {
"sourcelane": {
"type": "http",
"url": "https://api.usesourcelane.com/mcp",
"headers": {
"Authorization": "Bearer ${input:sourcelane-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "sourcelane-key",
"description": "Sourcelane agent key",
"password": true
}
]
}Create a GPT → Actions → Import from URL, then Authentication: API Key, Bearer.
https://usesourcelane.com/openapi.jsonOne POST. Pass maxResults to cap cost.
curl -X POST https://api.usesourcelane.com/v1/call \
-H "Authorization: Bearer sl_live_your_agent_key" \
-H "Content-Type: application/json" \
-d '{"listing":"website-seo-audit-crawler","params":{"startUrl":"crawlee.dev"},"maxResults":10}'Wrap the REST call as a tool, or point an MCP client at the endpoint.
import requests
res = requests.post(
"https://api.usesourcelane.com/v1/call",
headers={"Authorization": "Bearer sl_live_your_agent_key"},
json={
"listing": "website-seo-audit-crawler",
"params": {"startUrl":"crawlee.dev"},
"maxResults": 10,
},
timeout=300,
)
body = res.json()
print(body["receipt"]["chargedMicros"], "micro-USD for", body["receipt"]["results"], "results")
print(body["data"])—
0 reviews
Leave a review
Loading reviews…