API documentation · 1 of 9
Overview
Everything the dashboard does, you can do over HTTP. The Screaming Cow API speaks JSON and covers a whole audit: create a project, toggle its settings, start a crawl, and fetch every result.
Base URL
http://localhost:9000/api/v1
Every path in these pages is relative to it.
How an audit goes
- Get a keyCreate an API key with write access.
- Add a project
POST /projectswith the site's URL. - Crawl it
POST /projects/{id}/crawls, then poll until it is done. - Read the resultsReport, issues, pages and more, as JSON.
All endpoints
GET
/projectsreadList your projects
POST/projectswriteCreate a project
GET/projects/{id}readGet one project
PATCH/projects/{id}writeChange its settings
POST/projects/{id}/crawlswriteStart a crawl
POST/projects/{id}/crawls/stopwriteStop a crawl
GET/projects/{id}/crawlsreadRecent crawls
GET/projects/{id}/reportreadHealth score and top issues
GET/projects/{id}/issuesreadIssues by severity
GET/projects/{id}/issues/{type}readPages with one issue
GET/projects/{id}/pagesreadCrawled URLs
GET/projects/{id}/pages/{rid}readOne page in full
GET/projects/{id}/statsreadDashboard figures
GET/projects/{id}/pagespeedreadPageSpeed and Core Web Vitals
GET/projects/{id}/sitemapreadSitemap coverage
GET/projects/{id}/custom-rulesreadCustom rules
POST/projects/{id}/custom-ruleswriteAdd a custom rule
DELETE/projects/{id}/custom-rules/{rule}writeRemove a custom rule
GET/projects/{id}/custom-rules/{rule}/resultsreadWhat a rule found
Conventions
- Request bodies are JSON objects; responses are always JSON, errors included.
- Times are RFC 3339, such as
2026-09-29T12:33:15Z. - Lists that page take
?page=, counting from 1, and answer with apager. - The version is in the path. Fields may be added to a response without notice, so ignore the ones you do not know; removing or renaming one means
/api/v2.