LumaBrowser — Now in Beta

The programmable browser for your AI agents.

Give your AI agents, QA scripts, and integrations a real browser — with a REST API, built-in MCP server, and network interception out of the box.

lumabrowser — REST API
# Create a tab and navigate
curl -X POST http://localhost:3000/api/browser/tabs \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# Click a button on the page
curl -X POST http://localhost:3000/api/browser/tabs/0/click \
  -d '{"selector": "button.submit"}'

# Get the page content
curl http://localhost:3000/api/browser/tabs/0/source?type=text
Built for every developer workflow
AI Builders

The native execution engine for your AI agents.

Point Claude Desktop or any MCP-compatible agent at LumaBrowser's built-in MCP server. Navigate, click, and evaluate the DOM natively — no glue code required.

🔬
QA & Data Extraction

Automate the web without fighting the DOM.

SPAs and randomized CSS classes break scripts daily. LumaBrowser's REST API with on-board LLM Template Builder resolves selectors dynamically, keeping your scripts stable.

🔗
Backend & Integration

Turn any website's hidden API into a webhook.

Use the CDP-based Network Watcher to intercept HTTP traffic without root certificates or proxy setups, and forward it directly to your backend.

See it in action

Three lines to navigate, click, and extract — against any website.

# Create a tab and navigate to a page
curl -X POST http://localhost:3000/api/browser/tabs \
  -H "Content-Type: application/json" \
  -d '{"url": "https://news.ycombinator.com"}'

# Get the page content as clean text
curl http://localhost:3000/api/browser/tabs/0/source?type=text

# Set up a network watcher with webhook forwarding
curl -X POST http://localhost:3000/api/watchers \
  -H "Content-Type: application/json" \
  -d '{"urlPattern": "*/api/*", "sendTo": "https://my-backend.com/hook"}'
import requests

# Create a tab and navigate
requests.post("http://localhost:3000/api/browser/tabs", json={
    "url": "https://news.ycombinator.com"
})

# Get page text content
page = requests.get("http://localhost:3000/api/browser/tabs/0/source",
    params={"type": "text"})

# Click a specific element
requests.post("http://localhost:3000/api/browser/tabs/0/click", json={
    "selector": ".titleline > a"
})

print(page.json()["data"])
// Create a tab and navigate
await fetch("http://localhost:3000/api/browser/tabs", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ url: "https://news.ycombinator.com" })
});

// Take a screenshot
const screenshot = await fetch(
  "http://localhost:3000/api/browser/tabs/0/screenshot"
);

// Fill a form and submit
await fetch("http://localhost:3000/api/browser/tabs/0/fill", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ fields: [
    { selector: "input[name=q]", value: "LumaBrowser" }
  ]})
});
Open Source MIT Licensed
MCP Native Claude Desktop Ready
REST API Language Agnostic
Open Source by LumaByte
OpenGridJs

A lightweight JavaScript data grid with virtual scrolling, sortable columns, context menus, column reordering, and CSV export. Fast and dependency-free.

ResonantJs

A lightweight reactive UI library for building dynamic interfaces with minimal overhead. Simple API, no build step, no virtual DOM.

Textbookly

The textbook price comparison engine. Find the best deals on textbooks across multiple retailers in one search.

Free Developer APIs

Explore our collection of free, no-auth-required APIs for your projects.

🚀
Coming soon

LumaBrowser is in active development. Sign up to be notified when it launches.