SDKs
TypeScript SDK
Fully typed, ESM-native, works in Node 20+, Bun, Deno, and edge runtimes (Vercel, Cloudflare Workers).
Install
npm install ilmenite
# or
pnpm add ilmenite
# or
bun add ilmeniteQuickstart
import { Ilmenite } from "ilmenite";
const client = new Ilmenite({ apiKey: process.env.ILMENITE_API_KEY! });
const result = await client.scrape({
url: "https://news.ycombinator.com",
formats: ["markdown", "links"],
});
console.log(result.markdown);
console.log(`${result.links.length} links in ${result.latencyMs}ms`);Extract with Zod
import { z } from "zod";
const ProductSchema = z.object({
name: z.string(),
priceUsd: z.number(),
inStock: z.boolean(),
});
const client = new Ilmenite();
const result = await client.extract({
url: "https://example.com/product/42",
schema: ProductSchema, // auto-converted to JSON Schema
});
// result.data is fully typed: { name: string; priceUsd: number; inStock: boolean }
console.log(result.data.priceUsd);Streaming crawls
const crawl = await client.crawl.start({
url: "https://docs.stripe.com",
maxPages: 200,
});
for await (const page of client.crawl.stream(crawl.jobId)) {
console.log(page.url, page.title);
}Edge runtime
// app/api/scrape/route.ts
import { Ilmenite } from "ilmenite";
export const runtime = "edge";
export async function POST(req: Request) {
const { url } = await req.json();
const client = new Ilmenite({ apiKey: process.env.ILMENITE_API_KEY! });
const result = await client.scrape({ url });
return Response.json(result);
}