@anakin-io/sdk
v0.1.0
Published
Official Node.js / TypeScript SDK for Anakin (anakin.io) — web scraping, crawling, search, and Wire actions.
Readme
@anakin-io/sdk
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.
Install
npm install @anakin-io/sdk
# or
pnpm add @anakin-io/sdk
# or
yarn add @anakin-io/sdkQuickstart
import { 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.
Configuration
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
})Errors
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'Methods
| 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) |
Development
npm install
npm run typecheck
npm run lint
npm run test
npm run buildLicense
Apache 2.0. See LICENSE.
