GET /api/crawl/:id/pages first; it returns paginated crawl pages with the underlying scrape result resolved into each page. Use History when you need to inspect an individual underlying request by its scrapeRefId.
List history
Query parameters
integer
default:"1"
Page number to fetch (1-indexed).
integer
default:"20"
Entries per page.
string
Filter by service. One of
"scrape", "extract", "search", "monitor", "crawl", "schema".string
Filter by session ID using a case-insensitive partial match. For example,
sessionId=import matches import-2026-09-15.Example request
Example response
Get one entry
result payload (markdown, HTML, JSON extraction, screenshots, etc.).
Path parameters
string
required
The UUID of a request. This is the same UUID returned by the originating endpoint:
- From
POST /api/scrape→ top-levelid - From
POST /api/extract→ top-levelid - From
POST /api/search→ top-levelid - From
GET /api/crawl/:id→ eachpages[].scrapeRefId - From
GET /api/monitor/:cronId/activity→ eachticks[].id
Example request
Example response
Entry shape
Every entry — both inGET /history and GET /history/:id — has the same shape:
Fetching crawled page content
The canonical pattern: start a crawl, poll until completed, then for each page fetch its scrape result.requestParentId on each child scrape entry equals the parent crawl’s id. Child entries also inherit the crawl request’s session ID, so you can list the workflow with:
Errors
See Error handling for the full envelope.
Related
- Crawl jobs that produce
scrapeRefIds: Get crawl status - Originating endpoints whose
idyou can pass toGET /history/:id: Scrape, Extract, Search - SDK wrappers:
sgai.history.list()andsgai.history.get(id)— see JavaScript SDK and Python SDK