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 queued → running → succeeded (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.