SDKs
TypeScript SDK
npm install @mrbrowser/sdk — a fully typed client for Node 18+. Instantiate new MrBrowser({host, port}), open a page, and interact with elements by plain-English description.
# Basic usage
quickstart.ts
typescript
import { MrBrowser } from "@mrbrowser/sdk";
const browser = new MrBrowser({ host: "localhost", port: 7331 });
const page = await browser.open("https://shop.example.com");
await page.type("the search field", "mechanical keyboard");
await page.click("the search button");
await page.click("the first product card");
const html = await page.getHtml();
if (!html.includes("Add to cart")) {
throw new Error("product page did not load");
}
await page.close();
await browser.close();# Typed extraction
Pass a type parameter to extract and the result is typed end to end — your scraper breaks at compile time, not in production.
invoices.ts
typescript
import { MrBrowser } from "@mrbrowser/sdk";
const browser = new MrBrowser();
const page = await browser.open("https://billing.corp.com/invoices");
// Extract text by plain-English description
const balance = await page.extractText("the account balance");
// Inspect all interactive elements
const elements = await page.inspect({ visibleOnly: true });
elements.forEach(el => console.log(el.text, el.role, el.selector));
// Run arbitrary JS
const title = await page.executeJs<string>("return document.title");
// Cookies
const cookies = await page.getCookies();
await page.setCookies([{ name: "session", value: "abc123" }]);
await browser.close();# Configuration & full API
api-reference.ts
typescript
import { MrBrowser } from "@mrbrowser/sdk";
const browser = new MrBrowser({
host: "localhost",
port: 7331, // default engine port
timeout: 30_000, // ms per request (default 30s)
apiKey: process.env.MR_BROWSER_KEY, // optional auth
});
// Available Page methods:
// page.click(target) — click by plain-English description
// page.type(target, value) — type into a field
// page.hover(target) — hover over an element
// page.scroll(direction, pixels) — scroll: up/down/left/right/top/bottom
// page.navigate(url) — navigate to a new URL
// page.reload() — reload current page
// page.screenshot() — returns PNG Buffer
// page.getHtml() — returns full page HTML
// page.extractText(target) — extract text by intent
// page.inspect(opts) — list all elements
// page.waitForSelector(css) — wait for element visibility
// page.waitForUrl(substring) — wait for URL change
// page.assertText(text) — assert text is in page HTML
// page.getCookies() — get all cookies
// page.setCookies(cookies) — set cookies
// page.executeJs(script) — execute JavaScript
// page.close() — close this tabTip
The SDK requires the Mr. Browser engine to be running. Start it with
docker compose -f docker/docker-compose.yml up -d or run mr-browser --help if installed from source. The engine listens on localhost:7331 by default.Warning
If the engine is unreachable you will get
ECONNREFUSED 127.0.0.1:7331. Make sure the engine is started before calling browser.open().