AuraCrawlDocs
Preview. Endpoints and response shapes may change before general availability. Keys are issued manually today — there is no self-serve dashboard or sandbox yet. Request access.

Core

Extractions

POST/v1/extractions

An extraction is the one resource that does everything. The request is three orthogonal choices — what, scope, and how much — plus optional output shaping, a session, and delivery.

Request fields

connectorstringrequired

Which site to extract from — e.g. linkedin, instagram, google_maps, or generic for any URL.

operationstringrequired

What to pull, from the connector's catalog — e.g. company.posts, search.posts, place.reviews.

inputobjectrequired

Operation-specific scope — the entity or search terms (a company, a profile, keywords, a URL).

collectobjectoptional

How much to gather. See collect modes. Defaults to { "mode": "limit", "limit": 100 }.

outputobjectoptional

Shape the result — pick fields, set a schema, choose json / ndjson / csv.

sessionstringoptional

A session id to run under, using a logged-in session you supply.

deliveryobjectoptional

Where results go — sync, webhook, store, or a destination. See delivery.

One connector, two very different needs

Because operation and collect are independent, one connector serves opposite use cases without special endpoints.

Customer A — N posts on a topic

JSON
{
  "connector": "linkedin",
  "operation": "search.posts",
  "input": { "keywords": "cold brew" },
  "collect": { "mode": "limit", "limit": 200 }
}

Customer B — every post from a page

JSON
{
  "connector": "linkedin",
  "operation": "company.posts",
  "input": { "company": "microsoft" },
  "collect": { "mode": "all" }
}

Same envelope. operation picks search-vs-listing; collect decides the depth. Which internal search or pagination path satisfies it is our concern, not yours.

Synchronous and asynchronous

Most extractions run in the background. A real crawl — paginated, defended, thousands of records — cannot finish inside one HTTP request, so by default a POST /v1/extractions returns 202 Accepted with a job id and status: "queued". You then poll the job or receive a webhook.

Small jobs can opt into an inline response with delivery: { "type": "sync" } — the request blocks briefly and returns the records directly. Sync is a convenience for jobs up to 1,000 records; above that it is rejected and you must run the job asynchronously.

202 Accepted
{
  "id": "ext_9f2a1c",
  "status": "queued",
  "connector": "blinkit",
  "operation": "search.products",
  "request_id": "req_a1b2c3"
}

Checking a job

GET/v1/extractions/{id}

Poll a job to see where it stands. status moves through queuedrunningsucceeded (or failed), and counts.collected rises as records land, so you can show progress before the job is done.

statusMeaning
queuedAccepted, not yet started.
runningIn progress. counts.collected is a partial total.
succeededComplete. Fetch records via store, or they were sent to your webhook / destination.
failedStopped. See errors for the generic reason; full detail is keyed by request_id.
200 OK
{
  "id": "ext_9f2a1c",
  "status": "running",
  "counts": { "collected": 1840, "target": 5000 },
  "usage": { "credits": 1840, "tier": "rendered" },
  "request_id": "req_a1b2c3"
}

Once status is succeeded, fetch the records with GET /v1/extractions/{id}/records?cursor=… (see delivery), unless you chose a webhook or destination — in which case they are already on their way.