File structure
Every request is one .sman file (YAML content, custom extension):
# products/list.sman
scrapeman: "2.0"
meta:
name: List products
method: GET
url: "https://api.example.com/products?page={{page}}"
headers:
Accept: application/json
auth:
type: bearer
token: "{{token}}" Key order is stable (deterministic serializer), so git diffs are clean and human-readable.
.req.yaml compatibility (pre-0.4 workspaces)
Files saved by earlier versions used .req.yaml with scrapeman: "1.0". Scrapeman
still reads those files transparently. When you save one it is rewritten as .sman next to the
old file and the .req.yaml is removed. If both extensions exist with the same stem, the
.sman wins and the .req.yaml is hidden from the sidebar.
Body sidecars
Payloads 4 KB or larger are automatically promoted to a sidecar file under
files/<slug>.body.<ext>. The .sman file references the sidecar by path.
This keeps the main file small and diffs focused on metadata changes.
Workspace folder
Scrapeman writes only inside the workspace folder you choose. History, cookies, and state live in the app data directory, never the workspace. The workspace is safe to commit to git.
Path-in-name save
The save dialog accepts api/users/list-style names. Missing folders are auto-created under the
workspace root. .. and . segments are rejected; the final path is resolved safely.
Multiple workspaces
Open more than one workspace in the same window and switch between them from the sidebar header. Click the workspace name (just above the Files / Git tab strip) to drop down a list of every workspace you have opened this session.
The dropdown lets you:
- Switch to another open workspace. The current workspace's open tabs, active environment, and sidebar view get snapshotted in memory and restored when you switch back.
- Open another workspace folder via the standard picker.
- Close the current workspace, or close any other open workspace from its row.
The list of open workspaces and the last-active path persist to localStorage, so the same set reopens on next launch. Per-workspace UI snapshots also persist as of v0.6.0.
Restore unsaved tabs on restart
Builder state — URL, headers, params, body, auth, settings, scripts — round-trips through localStorage so a full app restart does not lose unsaved drafts. Live runtime state (in-flight executions, websocket connections, load test runs, parallel-burst HUD) is stripped before saving so a stale "sending…" banner never resurfaces after restart.
Per-request git sync toggle
Right-click a request in the sidebar and select "Stop syncing to git" to exclude it from
version control. Backed by .git/info/exclude (never pushed to remote). Shortcut:
Cmd+Shift+H on the active tab. A crossed-eye icon marks unsynced requests. If you later
git add the file yourself, Scrapeman notices and the icon clears automatically.