Official Node.js / TypeScript SDK for Anakin — web scraping, crawling, search, and Wire actions.
Status: alpha (v0.1.x). Public API may change between minor versions until v1.0.
npm install @anakin-io/sdk
# or
pnpm add @anakin-io/sdk
# or
yarn add @anakin-io/sdkimport { Anakin } from '@anakin-io/sdk'
const client = new Anakin({ apiKey: 'ak-...' }) // or set ANAKIN_API_KEY env var
// Scrape a single URL
const doc = await client.scrape('https://example.com', { formats: ['markdown'] })
console.log(doc.markdown)
// Discover URLs on a site
const sitemap = await client.map('https://example.com', { limit: 200 })
console.log(sitemap.links)
// Crawl pages and get content
const crawl = await client.crawl('https://example.com', { maxPages: 20 })
for (const page of crawl.pages) {
console.log(page.url, page.markdown?.length ?? 0)
}The SDK polls long-running jobs internally — you get the final result back from a single await. No job IDs to manage.
const client = new Anakin({
apiKey: 'ak-...', // or ANAKIN_API_KEY env var
timeoutMs: 60_000, // per-request HTTP timeout
maxRetries: 4, // retries on 429/5xx
pollIntervalMs: 1_000, // initial polling delay
pollMaxIntervalMs: 10_000, // max polling delay
pollTimeoutMs: 300_000, // total wait before JobTimeoutError
})import {
AnakinError, // base for everything below
AuthenticationError, // bad/missing API key
InsufficientCreditsError, // 402 (exposes .balance, .required)
InvalidRequestError, // 400
JobFailedError, // job came back with status="failed"
JobTimeoutError, // pollTimeoutMs exceeded
RateLimitError, // 429 (exposes .retryAfter)
ServerError, // 5xx after retries
NetworkError, // DNS/connection/timeout
WireAuthRequiredError, // wire action needs account connection (.connectUrl)
} from '@anakin-io/sdk'| Method | Returns |
|---|---|
client.scrape(url, opts) |
Promise<Document> |
client.map(url, opts) |
Promise<MapResult> |
client.crawl(url, opts) |
Promise<CrawlResult> |
client.search(prompt, opts) |
Promise<SearchResult> (sync API) |
client.agenticSearch(prompt, opts) |
Promise<AgenticSearchResult> |
client.wire(actionId, params, opts) |
Promise<WireResult> |
client.sessions.list(opts) |
Promise<BrowserSession[]> |
client.sessions.create(opts) |
Promise<BrowserSessionHandle> |
client.sessions.save(instanceId) |
Promise<BrowserSession> |
client.sessions.update(id, { name }) |
Promise<BrowserSession> |
client.sessions.delete(id) |
Promise<void> |
client.countries() |
Country[] (static, no network call) |
npm install
npm run typecheck
npm run lint
npm run test
npm run buildApache 2.0. See LICENSE.