Comparisons
Compare Screpy projects and completed crawls to measure SEO changes, technical issue deltas, and performance differences.
Compare like with like
Use comparisons to investigate a change between selected projects or completed crawl baselines. Keep the target, crawl settings, and comparison period meaningful before interpreting a delta. Select the underlying snapshots through crawls.
A change in an issue count is evidence to investigate, not its cause. Use the related crawl data to find the affected URLs and validate the next action.
/comparisons/projectsUses the latest completed crawl by default, or a selected completed crawl for each supplied selection.
Authorization
bearerApiKey Create a REST API key in Settings > Connected Apps. MCP credentials do not authenticate this API.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/comparisons/projects" \ -H "Content-Type: application/json" \ -d '{ "project_uids": [ "string", "string" ] }'{ "data": { "projects": [ { "project": { "uid": "string", "name": "string", "domain": "string" }, "crawl": { "crawl_uid": "string", "status": "string", "state": "string", "status_label": "string", "started_at": "2019-08-24T14:15:22Z", "finished_at": "2019-08-24T14:15:22Z", "last_synced_at": "2019-08-24T14:15:22Z", "progress": { "pages_crawled": 0, "pages_total": 0, "max_pages": 0, "current_depth": 0 }, "health": { "score": 0, "confidence": 0, "coverage": 0 }, "issues": { "critical": 0, "warnings": 0, "notices": 0, "total": 0 }, "totals": { "pages": 0, "indexable_pages": 0, "noindex_pages": 0, "links": 0, "images": 0, "unique_urls": 0 } } } ] }}{ "message": "Unauthenticated."}{ "message": "string", "code": "string"}{ "message": "Project not found or not accessible."}{ "message": "string", "code": "string"}{ "message": "string", "code": "string", "errors": { "property1": [ "string" ], "property2": [ "string" ] }}{ "message": "string", "code": "string"}/comparisons/crawlsDeltas are calculated as second - first.
Authorization
bearerApiKey Create a REST API key in Settings > Connected Apps. MCP credentials do not authenticate this API.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/comparisons/crawls" \ -H "Content-Type: application/json" \ -d '{ "first": { "project_uid": "string", "crawl_uid": "string" }, "second": { "project_uid": "string", "crawl_uid": "string" } }'{ "data": { "first": { "crawl_uid": "string", "status": "string", "state": "string", "status_label": "string", "started_at": "2019-08-24T14:15:22Z", "finished_at": "2019-08-24T14:15:22Z", "last_synced_at": "2019-08-24T14:15:22Z", "progress": { "pages_crawled": 0, "pages_total": 0, "max_pages": 0, "current_depth": 0 }, "health": { "score": 0, "confidence": 0, "coverage": 0 }, "issues": { "critical": 0, "warnings": 0, "notices": 0, "total": 0 }, "totals": { "pages": 0, "indexable_pages": 0, "noindex_pages": 0, "links": 0, "images": 0, "unique_urls": 0 }, "project_uid": "string" }, "second": { "crawl_uid": "string", "status": "string", "state": "string", "status_label": "string", "started_at": "2019-08-24T14:15:22Z", "finished_at": "2019-08-24T14:15:22Z", "last_synced_at": "2019-08-24T14:15:22Z", "progress": { "pages_crawled": 0, "pages_total": 0, "max_pages": 0, "current_depth": 0 }, "health": { "score": 0, "confidence": 0, "coverage": 0 }, "issues": { "critical": 0, "warnings": 0, "notices": 0, "total": 0 }, "totals": { "pages": 0, "indexable_pages": 0, "noindex_pages": 0, "links": 0, "images": 0, "unique_urls": 0 }, "project_uid": "string" }, "deltas": { "property1": 0, "property2": 0 } }}{ "message": "Unauthenticated."}{ "message": "string", "code": "string"}{ "message": "Project not found or not accessible."}{ "message": "string", "code": "string"}{ "message": "string", "code": "string", "errors": { "property1": [ "string" ], "property2": [ "string" ] }}{ "message": "string", "code": "string"}