Snapshot to API
/install snapshot-to-api
Snapshot to API
Replace browser snapshots with direct API calls. 15-20x fewer tokens, 2x faster, 100% complete data.
Why
Browser snapshots return the full DOM tree — menus, buttons, refs, styling — when you only need the data. A typical table page: 45 KB DOM → ~15k tokens, ~15% useful. The same data via API: 3.5 KB JSON → ~1k tokens, ~90% useful.
Core Workflow
Step 1: Open the target page
browser(action=open, url="\x3Ctarget_url>", profile=openclaw)
Purpose: establish cookie/session auth. You don't need to read the page.
Step 2: Discover API endpoints
// Evaluate in the browser tab
() => {
const entries = performance.getEntriesByType('resource')
.filter(e => e.name.includes(window.location.hostname) &&
!e.name.match(/\.(js|css|png|jpg|webp|svg|woff|ttf)(\?|$)/))
.map(e => e.name);
return JSON.stringify(entries, null, 2);
}
This returns all API calls the page made during loading — the data sources behind the UI.
Step 3: Identify the data API
Look for URLs containing:
/api/,/v2/,/v3/- Keywords matching your data need (
schema,table,list,detail,query,search) GETendpoints with query params likeid=,name=,type=
Ignore: analytics, tracking, user-info, config, SDK URLs.
Step 4: Test the API via evaluate
// Replace \x3CAPI_PATH> with the path from Step 3
() => {
return fetch('\x3CAPI_PATH>')
.then(r => r.json())
.then(data => {
// Inspect the structure
const keys = Object.keys(data?.data || data || {});
return JSON.stringify({
topLevelKeys: keys,
sample: JSON.stringify(data).substring(0, 1000)
});
});
}
Step 5: Extract structured data
Once you understand the response shape, write a focused extractor:
() => {
return fetch('\x3CAPI_PATH>')
.then(r => r.json())
.then(data => {
// Extract only what you need — return clean JSON
return JSON.stringify({ /* structured result */ });
});
}
Step 6: Close the browser tab
browser(action=close, targetId="\x3CtargetId>")
Param Tuning
Many APIs need specific parameters to return full data. Common pattern:
- Start with the full URL the page used (from Step 2)
- Try removing parameters one at a time
- ⚠️ Some params return empty data instead of errors when missing — always verify field counts
Cross-Environment Variations
Different environments (regions, clusters, staging/prod) may have:
- Different base domains (e.g.,
app.example.comvsapp-eu.example.com) - Different API path prefixes (e.g.,
/api/v2/vs/api_eu/v2/) - Different ID suffixes in query params (e.g.,
@0vs@10)
Always test each environment separately.
When NOT to Use
- Write operations (forms, submissions) — keep using browser automation for safety
- Pages requiring user interaction to load data (click-to-expand, infinite scroll APIs)
- Auth flows that need OAuth redirects — cookie-based auth only
- Frequently changing APIs — snapshot may be more maintainable as fallback
Comparison Reference
See references/comparison.md for detailed benchmark data (token counts, timing, completeness).
After Discovery
- Update the original Skill — replace snapshot steps with evaluate + fetch
- Keep snapshot as fallback — in case the API changes or auth expires
- Document the API — path, required params, response structure, environment differences
- Log to learnings — record the discovery for future reference
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install snapshot-to-api - After installation, invoke the skill by name or use
/snapshot-to-api - Provide required inputs per the skill's parameter spec and get structured output
What is Snapshot to API?
Discover hidden APIs behind web pages and replace expensive browser snapshots with lightweight API calls. Saves ~15-20x tokens and 2x speed on browser automa... It is an AI Agent Skill for Claude Code / OpenClaw, with 278 downloads so far.
How do I install Snapshot to API?
Run "/install snapshot-to-api" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Snapshot to API free?
Yes, Snapshot to API is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Snapshot to API support?
Snapshot to API is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Snapshot to API?
It is built and maintained by fafa-ai-data-labs (@ianzlm); the current version is v1.0.0.