Get a crawl (Firecrawl)
Status and documents of a crawl, 10 MB per page of results; follow `next` for the rest. Opened as a WebSocket instead (firecrawl-js `watcher()`), the same URL streams Firecrawl's watcher protocol: one `catchup` message with this body, a `document` message per page as it finishes, then a close with code 1000 and reason `{"type":"done"}`.
GET
/compat/firecrawl/v1/crawl/{id}
Status and documents of a crawl, 10 MB per page of results; follow `next` for the rest. Opened as a WebSocket instead (firecrawl-js `watcher()`), the same URL streams Firecrawl's watcher protocol: one `catchup` message with this body, a `document` message per page as it finishes, then a close with code 1000 and reason `{"type":"done"}`.
Authentication
Bearer Token (b3os_sk_ API key or b3os_pat_ token)
Path Parameters
id
string
required
path
The job ID B3OS returned (a `crawl_`, `batch_` or `job_` ID; Firecrawl clients treat it as opaque).
Query Parameters
skip
integer
optional
query
Documents to skip; the `next` URL sets it for you.
Responses
200
The crawl status.
application/jsonsuccess
boolean
REQUIRED
Enum:
truestatus
string
REQUIRED
Enum:
scraping, completed, failed, cancelledtotal
integer
REQUIRED
completed
integer
REQUIRED
creditsUsed
integer
REQUIRED
expiresAt
string (date-time)
REQUIRED
next
string | null
REQUIRED
Absolute URL of the next page of documents, under `/compat/firecrawl`.
data
object[]
REQUIRED
Array of:
markdown
string
html
string | null
rawHtml
string | null
links
string[]
Array of:
string
screenshot
string | null
A `data:image/...;base64,` URL.
json
unknown
Data from the `json` format.
actions
object | null
screenshots
string[]
Array of:
string
scrapes
object[]
Array of:
url
string
html
string
javascriptReturns
object[]
Array of:
type
string
value
unknown
pdfs
string[]
Array of:
string
metadata
object
Page metadata. Other `<meta>` tags appear under their own names.
title
string | string[]
One of:
Option 1string
Option 2
Array of:
string
description
string | string[]
One of:
Option 1string
Option 2
Array of:
string
language
string | null | string[]
One of:
Option 1string | null
Option 2
Array of:
string
sourceURL
string (uri)
The requested URL.
url
string (uri)
The final URL after redirects.
keywords
string | string[]
One of:
Option 1string
Option 2
Array of:
string
ogLocaleAlternate
string[]
Array of:
string
statusCode
integer
contentType
string
error
string | null
scrapeId
string
The B3OS request ID of the scrape.
cacheState
string
Enum:
hit, misscachedAt
string (date-time)
creditsUsed
integer
proxyUsed
string
Enum:
basic, stealthconcurrencyLimited
boolean
concurrencyQueueDurationMs
number
b3os
object
B3OS extras (Firecrawl clients ignore them).
tier
string
Enum:
cache, fetch, browserrequest_id
string
timing
object
Server-side phase durations in milliseconds with microsecond resolution: the same phases as the
`Server-Timing` header, keyed `<phase>_ms`. `total_ms` is always present. Phase names are product-specific
and documented per operation. Example values in this reference are illustrative, not measurements.
total_ms
number
REQUIRED
llm_extraction
object | null
Deprecated v0 field; always absent.
warning
string | null
400
The body failed validation, uses an unsupported option, or a URL is invalid (`invalid_request`, `unsupported_option`, `invalid_url`).
401
Missing or invalid B3OS key (`unauthorized`). Firecrawl `fc-` keys are not accepted.
404
No such job in this project (`crawl_not_found`, `batch_not_found`, `job_not_found`).
429
A rate or concurrency limit applies (`rate_limited`, `concurrency_limited`).
500
Something failed inside B3OS (`internal`).
503
The node or vision is unavailable (`node_unavailable`, `product_unavailable`).
curl -X GET 'https://beta-api.b3os.org/compat/firecrawl/v1/crawl/string' \ -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://beta-api.b3os.org/compat/firecrawl/v1/crawl/string', { method: 'GET', headers: { "Authorization": "Bearer YOUR_API_TOKEN" }});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://beta-api.b3os.org/compat/firecrawl/v1/crawl/string', headers=headers)print(response.json())
200
Response
{ "success": true, "status": "scraping", "total": 37, "completed": 12, "creditsUsed": 12, "expiresAt": "2026-11-01T18:10:41.020Z", "next": "https://beta-api.b3os.org/compat/firecrawl/v1/crawl/crawl_01m5t4gh4qhgs70zwajezbe5p0?skip=10", "data": [ { "markdown": "# Pricing\n\nStart free, then pay per page.", "metadata": { "title": "Pricing | Example", "description": "Plans and prices for Example.", "language": "en", "sourceURL": "https://example.com/pricing", "statusCode": 200, "b3os": { "tier": "cache", "request_id": "req_01m5t4yg394wegr3j4y01qb363" } } } ]}
API Playground
Try this endpoint
GET
/compat/firecrawl/v1/crawl/{id}