Run
Scrape transactions from one or more banks.
Basic usage
$ beanscrape run ./mybank.csx
Multiple banks
Pass multiple .csx file paths to scrape in parallel (each in its own browser tab):
$ beanscrape run ./amex.csx ./discover.csx ./schwab.csx
Options
| Flag | Short | Description | Default |
|---|---|---|---|
--outdir | -d | Output directory | output/ |
--format | -f | Output format: json or csv | json |
--keep-open | -k | Keep browser open after scraping (for review) | off |
--node | Node.js mode: system, download, or auto | auto | |
--debug | Enable debug logging | off |
Output
Transactions are written to <outdir>/<bank-id>.json (or .csv).
JSON format
{
"bank": "amex",
"scrapedAt": "2026-01-13T21:22:25Z",
"transactions": [
{
"date": "2026-01-12",
"payee": "GROCERY STORE",
"memo": null,
"outflow": 85.50,
"inflow": null,
"runningBalance": 1228.78,
"isPending": false,
"category": "Supermarkets"
}
]
}
CSV format
Columns: date, payee, memo, outflow, inflow, runningBalance, isPending, category.
Progress UI
While scraping, a browser panel shows real-time progress with step indicators. You can pause or cancel from this panel.
2FA
If your bank requires two-factor authentication, Beanscrape pauses and waits for you to complete the verification in the browser. Once you approve, scraping resumes automatically.
Next steps
Import the output into your ledger software, or use the JSON/CSV files directly. See Import Review for how Surebeans handles this.