Skip to content
browserlayerALPHA
How it worksDocsDashboard

Turn any website
into an API

The fastest way to build reliable web integrations

See how it works Start building
Hosted Link
Enter verification code

Sent by Acme Store to •••• 4821

Verify
Endpoint · list-receipts
  1. reauthenticate
    1. Type verification code
    2. Click Verify
  2. list-receipts
    1. GET /api/orders
    2. GET /api/receipts
    3. Parse → Receipt[]
Your backend · POST /runs
{
  "integration": "acme-store",
  "flow": "list-receipts",
  "connection": "connection-id",
  "input": { "year": 2026 }
}
Receipt[] On completion

From website to your app

01

Capture

Use the website as you normally would. Browserlayer captures the UI, interactions, network traffic, and JavaScript, giving your agent the context to build the integration.

View docs
acme.store/account↗
Acme Store

Your receipts

ORDER-1042 Receipt€48.00 Paid
View receipt
Capturing your session LIVE

00:02 Click “View receipt”

00:02 UI snapshot

00:03GET /api/receipts 200

00:03 app.bundle.js

events.jsonl + UI, network & JavaScript
02

Build

Build with your coding agent, the SDK, and the authoring skill. Expose endpoints for on-demand work and syncs for scheduled data. Reuse website logic in internal flows.

View docs
acme-store / endpoints / list-receipts.ts↗
import { createEndpoint } from "@browserlayer/sdk";
import listReceipts from "../connector/flows/list-receipts.js";

export default createEndpoint({
  description: "Get receipts for a year.",
  connection: "required",
  input: listReceipts.input,
  output: listReceipts.output,
  exec: (ctx, input) => ctx.run(listReceipts, input),
});
integrations / acme-store↗
endpoints/list-receipts.ts
syncs/receipts.ts
models/receipt.ts
connector/flows/list-receipts.ts
connector/flows/authenticate.ts
connector/flows/reauthenticate.ts
Capture + SDK + skill Tested integration
03

Test

Build coverage with the test SDK, then run your integration against a connected account from the CLI or local Studio. Inspect the results before it reaches your app.

View docs
Terminal — local workspace↗
$ browserlayer run acme-store list-receipts \
  --local --connection conn_7f2 \
  --input '{"year":2026}' --wait
Completed 420 ms
{
  "status": "completed",
  "output": [ {
    "id": "rcpt_1042",
    "total": 48.00,
    "currency": "EUR"
  } ]
}
04

Deploy

Deploy to Cloud Development, test against a real account, then promote the same version to Production. Inspect endpoint and sync runs, down to each flow and step.

View docs
Browserlayer Cloud↗
Acme Store Deployed
Runs1,248
Success rate99.8%
Connections86
ExecutionsLast 7 days
MonWedFriSun
Recent runsDuration
list-receipts · endpoint420 ms
receipts · sync1.2 s
list-receipts · endpoint386 ms
05

Connect your app

Let users connect accounts through hosted Link. Your backend calls endpoints when it needs to act. Syncs keep data fresh on a schedule and send webhooks when records change.

View docs
Your app + acme-store↗
Account connected through hosted Link
EndpointsOn demand

Your app → list-receipts → run output

POST /runs
SyncsOn a schedule

receipts → changed records → your app

sync.updatedFetch changes
One connection. On-demand work and ongoing updates.

Keep every call fast and reliable

Inspect production runs over time, pinpoint slow requests, and give your agent the traces to fix failures and missed edge cases. Less browser time means lower costs.

Endpoint · list-receipts Completed · 420 ms
Restore session82 ms
GET /receipts326 ms
Validate records12 ms
Request, response, and step context

Keep accounts connected

Restore sessions before endpoints and syncs run. If verification is needed mid-run, bring the user back through hosted Link and resume the same operation.

Acme Store Connected
  1. Check sessionBackground job
  2. Refresh sign-inNo user input
  3. Needs verification?Open hosted sign-in

Records your app can rely on

Syncs publish validated records and track additions, updates, and deletions. Receive a signed webhook, then fetch changes from your saved cursor to keep your database current.

Receipt Zod validated
{
  "id": "rcpt_1042",
  "total": 48.00,
  "currency": "EUR"
}
Your database Signed webhooks

Your choice of browser infrastructure

Run browsers through Browserlayer Cloud, bring your provider key, or self-host with your own browser. Tune the infrastructure independently of your integration.

One integration
Cloud Your provider key Your browser
Proxies Stealth CAPTCHA
Proxy, stealth, and CAPTCHA support depends on your provider; advanced cloud configuration is coming soon.

Build your first integration

Start building Currently in private alpha.
browserlayerDocumentation