Connect Claude & GPT directly to the web.Try it now
SDKs

Rust SDK

Async Rust client built on reqwest and tokio. The same crate powers the engine behind the hosted API — you can call the cloud or run the engine locally with one import.

Install

cargo add ilmenite

Cloud client

use ilmenite::Client;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = Client::new(std::env::var("ILMENITE_API_KEY")?);

    let result = client
        .scrape("https://news.ycombinator.com")
        .formats(&["markdown", "links"])
        .send()
        .await?;

    println!("{}", result.markdown);
    println!("{} links in {}ms", result.links.len(), result.latency_ms);
    Ok(())
}

Local engine (no API calls)

use ilmenite::{Browser, Format};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let mut browser = Browser::new();
    let page = browser.navigate("https://news.ycombinator.com").await?;
    let md = page.to_format(Format::Markdown)?;
    println!("{md}");
    Ok(())
}

Typed extraction with serde

use ilmenite::Client;
use serde::Deserialize;

#[derive(Deserialize, Debug)]
struct Product {
    name: String,
    price_usd: f64,
    in_stock: bool,
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = Client::from_env()?;
    let product: Product = client
        .extract::<Product>("https://example.com/product/42")
        .send()
        .await?;
    println!("{:?}", product);
    Ok(())
}

Features

  • default — cloud HTTP client.
  • engine — pull in the local browser engine.
  • rustls — use rustls instead of native-tls.