docs / endpoint
POST /v1/page/crawl
Render a single page and return a slim page-SEO snapshot.
Credits: 2 credits per call.
Timeout: 120s
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url |
string | required | — | Absolute http(s) page URL to render and analyze. Required, max 2048 chars. |
Request
→ requestPOST /v1/page/crawl
POST /v1/page/crawl HTTP/1.1
Authorization: Bearer sof_live_your_key_here
Content-Type: application/json
{
"url": "https://example.com/"
}
Response
Wrapped in the standard envelope -- id, object, created_at, elapsed_ms, cache, credits -- documented once on The Contract. The body below is a real envelope with this endpoint's data shape; values vary per request, and a … marks an array cut short for display.
← response200
{
"id": "craw_a52bzsjezvnwxi3btsypdeke",
"request_id": "req_2dhdwz5vzbh6nirm2e5m5n5eu4",
"object": "crawl",
"created_at": "2026-08-09T07:21:19Z",
"elapsed_ms": 180,
"cache": "miss",
"credits": {
"charged": 2,
"balance": 9857
},
"data": {
"url": "https://example.com/",
"final_url": "https://example.com/",
"http_status": 200,
"title": "Example Domain",
"meta_description": "An example page used for documentation.",
"canonical": "https://example.com/",
"headings": {
"h1_count": 1,
"h2_count": 2
},
"links": {
"internal": 2,
"external": 1
},
"images": {
"total": 2,
"missing_alt": 1
},
"is_html": true,
"load_ms": 812
}
}
Response fields
What each field in data (above) means.
| Field | Description |
|---|---|
data.url |
The URL you requested. |
data.final_url |
The URL actually rendered, after following any redirects. |
data.http_status |
HTTP status code of the final response. |
data.title |
Page title element content. |
data.meta_description |
Page meta description content, or null if absent. |
data.canonical |
Canonical URL declared by the page, or null if absent. |
data.headings |
Heading-tag counts. |
data.headings.h1_count |
Number of h1 elements on the page. |
data.headings.h2_count |
Number of h2 elements on the page. |
data.links |
Outbound link counts, split by scope. |
data.links.internal |
Links pointing at the same site. |
data.links.external |
Links pointing off-site. |
data.images |
Image counts. |
data.images.total |
Number of img elements on the page. |
data.images.missing_alt |
Number of those images with no alt text. |
data.is_html |
true if the response was rendered as an HTML document. |
data.load_ms |
Time to render the page, in milliseconds. |