Skip to main content
v1 · Community Go CLI · MIT

Discover, browse, and cart
without leaving the terminal.

wolt-cli is an unofficial, community-built Go CLI for interacting with Wolt endpoints. wolt top for the "what should I eat right now" view, wolt feed --summary to glance the whole home page in one screen, plus venue drilldown, cart, and checkout preview — straight from your shell.

$brew install mekedron/tap/wolt-cli
  • LangGo 1.26+
  • InstallHomebrew / source
  • Outputtable · json · yaml
  • LicenseMIT
11top-level commands
3output formats
1binary, zero deps
0orders placed by CLI
What it covers

Every Wolt surface, in your shell.

From discovery to checkout preview — the same flows you'd click through in the app, scriptable and pipeable.

Discovery & top picks

wolt feed for the section-grouped home page, wolt feed --summary for a one-line overview, wolt top 10 for a single ranked list across every venue carousel. Brand sections render as a compact one-liner.

wolt top 10

Venue details & menus

Inspect a venue's hours, menu, categories, and item details. Add --query for assortment search, --include-options for the full option matrix. venue hours falls back to the static venue payload when upstream returns 410.

wolt venue menu <slug> --query "udon"

Cart operations

cart, count, add, remove, clear. Add items by item id, by Wolt URL, or by name (--query "Teriyaki Udon"). Option values resolve by case-insensitive name too.

wolt cart add <venue> --query "<item>"

Checkout preview

Run wolt checkout to project totals, fees, and delivery cost from your current cart — without ever placing an order.

wolt checkout --venue-id <id>

Account & orders

Auth status, profile, order history, addresses, payments, and favourites — all paginated, all read-only by default. Expired sessions surface a friendly "wolt login" hint.

wolt account orders --limit 20

Local stats dashboard

wolt stats downloads a pre-built dashboard bundle from wolt-stats releases, syncs your order history into a local SQLite file, serves everything at 127.0.0.1:5173, and opens the browser. No Node.js needed — sync is pure Go, dashboard is static HTML.

wolt stats

Browser-driven login

wolt login opens managed Chrome at 127.0.0.1:9222, waits for you to sign in to wolt.com, and extracts cookies + tokens. Manual fallback via --wtoken / --wrtoken. Tokens auto-refresh via the saved refresh token.

wolt login

Pipeable output

Every command emits table, json, or yaml. Pipe straight into jq, yq, or your own scripts.

--format json | jq '.data.items[]'

Location override

Pass --address or --lat/--lon per command. Preview-only — final orders still use your saved Wolt address.

--address "Mannerheimintie 1, Helsinki"

MCP server for AI agents

The companion wolt-mcp binary speaks the Model Context Protocol. Wire it into Claude Desktop, Claude Code, or Cursor and the model gets typed, schema-described tools for feed, search, cart, and checkout-preview. Auth is shared with the CLI.

{"mcpServers":{"wolt":{"command":"wolt-mcp"}}}
Bring your data home

wolt stats — your order history, your dashboard.

One command syncs every order you've ever placed into a local SQLite database and opens a local dashboard at http://127.0.0.1:5173. Spend breakdown, top venues, favourite items — all derived from the same payloads the CLI already speaks. Nothing leaves your machine.

  • Local-only data. SQLite at ~/.wolt/stats/db/wolt-history.sqlite, dashboard pinned to a versioned GitHub release, no telemetry. The dashboard is a static SvelteKit app reading the file in your browser.
  • Incremental by default. Reruns scan until they hit an order they already know, so the second run takes seconds. --resync forces a full rebuild; --no-sync just re-opens the dashboard.
  • Adaptive rate-limiting. Honors Wolt's Retry-After header and tunes per-call pacing to whatever rate your account's throttle window will sustain. A run that hits 429s settles on the right speed and finishes itself.
  • Everything Wolt knows. Catalog and detail payloads land verbatim in the DB: line items, options, payments, delivery distance, service fees, discounts, gift cards, adjustment rows, creation/delivery times. The dashboard derives spend by month, top venues, item leaderboards, and weekday/hour patterns on top.
wolt stats
# Re-open without re-syncing
wolt stats --no-sync
# Force a full re-scan of every order
wolt stats --resync

Full stats reference →

wolt stats dashboard overview
Install

One command. One binary.

Homebrew is the recommended path on macOS and Linux. Building from source is a single go build.

# One-liner — tap is added implicitly
brew install mekedron/tap/wolt-cli

# Or add the tap first, then install:
brew tap mekedron/tap
brew install wolt-cli
# Requires Go 1.26+
git clone https://github.com/mekedron/wolt-cli.git
cd wolt-cli
go build -o bin/wolt ./cmd/wolt
./bin/wolt --help
1

Log in

Opens managed Chrome at 127.0.0.1:9222, waits for you to sign in to wolt.com, and saves the cookies + tokens locally. Manual fallback works too.

wolt login
wolt login --wtoken "<jwt>" --wrtoken "<refresh>"
2

Verify it works

Status validates the saved session against /v1/user/me. Expired tokens auto-refresh; if that fails you get a friendly hint to re-run wolt login.

wolt status --verbose
wolt account --format json
3

Discover or drill in

One ranked list with wolt top, a one-line overview with wolt feed --summary, or pipe straight into jq for automation.

wolt top 10
wolt feed --summary
wolt venues --query "ramen" --format json
Real example

Build a custom WHOPPER meal — end to end.

Five steps, all in your terminal. No order is placed; checkout is preview only.

  1. 01

    Pick a venue

    wolt top ranks venues across every curated feed section. wolt venues --query narrows by keyword. Both print copy-paste-ready slugs.

    wolt top 10
    wolt venues --query "burger king" --limit 10
  2. 02

    Inspect the menu

    Use --query for assortment search or --include-options for the full option matrix.

    wolt venue menu burger-king-finnoo --query "whopper" --include-options
  3. 03

    Read the options

    venue item renders the option groups, their values, and min/max requirements.

    wolt venue item burger-king-finnoo <item-id>
    wolt venue item "https://wolt.com/.../venue/burger-king-finnoo/itemid-<id>"
  4. 04

    Add to cart by name

    Repeatable --option Group=Value resolves option values by case-insensitive name — no need to copy 24-char IDs by hand.

    wolt cart add burger-king-finnoo --query "WHOPPER Meal" \
      --option "Drink=Coca-Cola Zero" \
      --option "Side=Fries L" \
      --count 1
  5. 05

    Preview the checkout

    Project items, fees, and totals — nothing is submitted.

    wolt cart --details --venue-id <venue-id>
    wolt checkout --delivery-mode standard --venue-id <venue-id>
Command surface

Every group at a glance.

wolt login / logout / status

Browser-driven login via managed Chrome. Manual token fallback. Friendly hint when the session expires.

wolt feed

Section-grouped discovery home page. Add --summary for a one-line-per-section overview.

wolt top

Flatten the feed into a single top-N ranked table. Default 10. Dedupes by venue.

wolt venues

Flat list with filters: --query, --sort, --open-now, --wolt-plus, --promotions-only, pagination.

wolt venue

Details, hours (with static-payload fallback), categories, menu (full / --query / --category), single-item drilldown.

wolt cart

cart · count · add · remove · clear. Add by id, URL, or name.

wolt checkout

Project totals, fees, and delivery cost from the current cart. No order placement.

wolt account

Profile · orders · addresses · payments · favourites. Read-only by default.

wolt stats

Download the wolt-stats dashboard bundle, sync history into local SQLite (pure Go, no Node), serve on 127.0.0.1:5173, and open the browser.

Global flags reference
--formattable · json · yaml
--addresstemporary location, geocoded
--lat / --loncoordinate override (paired)
--localeBCP-47 locale tag
--no-colordisable ANSI colors
--verboseHTTP trace + diagnostics
--limit / --offset / --pagepagination on list commands
--show-highlightsforce / auto / hide Highlights column
WOLT_BADGES_PLAIN=1plain-text badge labels
Works with your agent

Drive wolt-cli from your AI of choice.

Two ways in. Pipe wolt --format json straight into a shell-driving agent (Codex CLI, Cursor, Cline, Aider), or wire up the bundled wolt-mcp server for typed Model Context Protocol tool calls in Claude Desktop, Claude Code, and any other MCP host.

Plug in once

One config line, 24 typed tools.

wolt-mcp ships in the same Homebrew formula as the CLI. It shares the same login on disk, so one wolt login unlocks every auth-gated tool — wolt_cart_show, wolt_account_orders, wolt_checkout_preview, and all the rest.

Full tool catalog →
{
  "mcpServers": {
    "wolt": { "command": "wolt-mcp" }
  }
}

Claude Code

Anthropic · CLI

Pipe wolt feed --format json straight into prompts. The flag surface is small and stable enough for Claude to drive cart building end-to-end without supervision.

Claude Desktop

native MCP

Drop the one-liner below into claude_desktop_config.json and Claude gets 24 typed tools — feed, search, venue menu, cart, checkout preview — backed by the bundled wolt-mcp binary. No wrappers, no glue code.

OpenClaw

self-hosted

Drop a 5-line AgentSkill that shells out to wolt. The Markdown personality model means scope, memory, and permissions sit alongside your CLI calls — no glue code needed.

PicoClaw

10 MB · MCP

A 10 MB Go-binary AI agent meets a Go-binary CLI. Native MCP support means you can wire wolt onto a Raspberry Pi or a $10 RISC-V board and drive carts from your sofa.

Cursor

AI IDE

Ask Cursor's Agent to drive wolt cart add … from the chat side-panel. Tool calls land in your terminal exactly as a human would type them.

Cline

VS Code

Shell-first agent inside VS Code. Reads wolt --help once, then drives discovery, cart, and checkout preview from the chat panel.

Codex CLI

OpenAI

OpenAI's shell-native coder. Pipe wolt --format json straight into a prompt, or attach the wolt-mcp server for typed tool calls. Both work; the shell flow is one command.

Aider

pair CLI

Pure-terminal pair-programmer. Point it at a repo and it'll read the docs, scaffold a script, and run wolt to confirm the shape of the output it just generated.

Native MCP server24 typed tools, stdio transport, official Anthropic SDK
Single binaryzero deps, any host the agent can shell into
json / yaml on every commanddeterministic parsing across lists, carts, and previews
Stable --help surfaceLLMs can read it once and remember the shape
No telemetrytokens stay local, nothing phones home
Sample agent run"find me top-rated ramen and build a cart"
# 1. Discover
wolt venues --query ramen --sort rating --format json

# 2. Read the menu
wolt venue menu <slug> --query tonkotsu --format json

# 3. Build the cart by name
wolt cart add <slug> --query "Tonkotsu Ramen"
wolt cart add <slug> --query "Genmaicha"

# 4. Preview the checkout (no order placed)
wolt checkout --format json

The CLI is read-only by default and never places a real order — agents can browse, build carts, and project totals without spending your money. wolt checkout is a preview.

Honest answers

FAQ

Is this an official Wolt product?

No. wolt-cli is an unofficial, community-built Go CLI. It's not affiliated with, endorsed by, or supported by Wolt. Use it at your own responsibility, and respect their terms of service.

Can it place real orders?

No. The CLI exposes wolt checkout as a preview only, which projects totals and fees. Final order placement still happens in the official Wolt app or website, using the delivery address selected in your account.

Does it ship an MCP server?

Yes. The companion wolt-mcp binary is installed alongside wolt by the Homebrew formula and exposes 24 typed Model Context Protocol tools (discovery, venue, account, favorites, cart, checkout preview). Wire it in with { "mcpServers": { "wolt": { "command": "wolt-mcp" } } } — see docs/mcp.md for the full catalog and per-client wiring.

Where is my config stored?

By default at ~/.wolt/.wolt-config.json, or wherever WOLT_CONFIG_PATH points. The file may contain wtoken, wrtoken, and cookies — keep it local and don't commit it. The project's .gitignore already ignores common config patterns.

What about location overrides?

Pass --address or --lat/--lon per command. They affect preview inputs only. Final orders still use your Wolt-saved address. --lat and --lon must be supplied together; --address can't be combined with them.

Which platforms are supported?

Anywhere Go 1.26+ builds: macOS, Linux, and Windows. Homebrew is the smoothest path on macOS and Linux.

How do I report a bug or contribute?

Open an issue or PR on the GitHub repository. Run go test ./... and make lint before submitting.

Try it in 30 seconds.

One brew install, one wolt login, then wolt top 10. That's the whole flow.

$brew install mekedron/tap/wolt-cli
View on GitHub →
Community-built

If wolt-cli saved you a tab, buy me a coffee.

wolt-cli is built and maintained by one developer in their free time — MIT licensed, free forever, no telemetry, no upsells. If it makes your terminal a little better, a small tip keeps it caffeinated.

By @mekedron · 100% of tips go to keeping the project alive.