Your broker's BRiSK¶
The same client serves SBI Securities' BRiSK (sbi.brisk.jp, the
default site) and those of Tachibana e-shiten, Matsui, Monex and SMBC Nikko (subsections follow); you need a
BRiSK subscription with the broker. For SBI, log in on sbi.brisk.jp in your browser, then
pass its session cookies: copy them from DevTools, or use pycookiecheat's
chrome_cookies("https://sbi.brisk.jp"). Or let briskapi sign in with your passkey
(below).
briskapi.login(cookies={"session_bfaf77a2": "v2.local..."}) # remember=True saves them (owner-only file)
toyota = briskapi.Ticker("7203")
toyota.candles("5m").to_pandas() # price bars: 5m (today), 1d, 1w or 1mo
toyota.margin(days=30) # margin balances and stock-lending fees
market = briskapi.Market()
market.turnover() # turnover and shares outstanding, all stocks
market.lists() # NK225, recent IPOs, …
market.events() # basket orders, limit up/down, volume surges
market.schedule() # trading date, status and session times
market.watchlist() # your saved codes
feed = briskapi.connect(site="sbi", codes=["7203"]) # live; each session uploaded unless you opt out
toyota.quote() # same calls as any feed
# upload_market_data=False uploads no market recordings, upload=False nothing; output="days" keeps each day
A broker feed records continuously and keeps running across days. It packages and uploads each
day in two recordings, the morning session's once the lunch break begins and the afternoon's (starting
from a snapshot of the book where the morning's ended) at the day's end; in the cloud API they read as one day. When the site's
session is done or it starts serving the next trading date (checked every 10 minutes), or the server
closes the stream after the market, the day ends: its last recording is packaged and uploaded, with
the day's timing summary (unless you opt out), while the feed waits for the next session and records
it from a fresh snapshot. Started when no session is running
(after the close, on a holiday), the feed waits for the next trading day's: connect() returns
once that day has begun (feed.status is "waiting" meanwhile). output=DIR (briskapi.connect(output=...), brisk live --output DIR)
also keeps each recording in DIR, in a folder named
SOURCE_YYYYMMDD_FROM-TO (its first and last source clock, JST HHMMSS), such as
sbi_live_20261013_085800-090412. feed.recordings lists them (trading_date,
name, path, uploaded, timing_uploaded, the timing summary's on a day's last), and
on_day=callback is called for each. Without output, a recording is kept only in your archive, and
with uploads off, nowhere. Stopping the feed (feed.close(), Ctrl-C) ends the day there, so what is
left of it is kept and uploaded like any recording; a lost connection reconnects by itself (Recording). SBI and e-shiten allow one BRiSK
session per user (expect the same of the others): close BRiSK in your browser before you start the feed,
or the two cut each other off within seconds.
Results use the conventions below. Errors are briskapi.brisk.SessionExpiredError (log in
again), briskapi.NotFoundError, briskapi.brisk.RateLimitError and briskapi.brisk.APIError.
Requests are limited to one per second.
The live feed runs BRiSK's own decoder under Node, downloaded with your session;
no browser is involved. It follows the vendor client's connect sequence: it feeds
the decoder from the first frame, catches the snapshot up to the stream, answers
the server's pings through the decoder and watches the server heartbeat. It hasn't
yet been validated against a live SBI session. The stream is expected to be a plain
binary WebSocket, as in the Next client. Should the server open with Socket.IO
instead, the host joins its /v2/user namespace with unverified parameters that
briskapi.connect(site="sbi", profile={...}) can set. See what the server answers with
trace_protocol=True (every token redacted); anything unexpected stops with an
explicit error rather than a guess. Please report what you see. Live sessions now
get through sign-in, the data endpoints, the decoder download, the stock master and
the snapshot (loaded with the session schedule). The WebSocket upgrade to
api.brisk.jp was then answered with HTTP 502; those sessions didn't ask for the
flex subprotocol the vendor client asks for, which this version does, and whether
that is enough is not known yet. Your SBI cookies
go only to sbi.brisk.jp.
Tachibana e-shiten BRiSK Next¶
e-shiten's BRiSK Next (next.e-shiten.brisk.jp) is the
same app, so the same client serves it. Log in there in your browser and pass its
cookies with site="e-shiten", or let briskapi sign in with your e-shiten passkey
(below): brisk enroll --site e-shiten once,
then brisk login before brisk live --site e-shiten.
briskapi.login("e-shiten", cookies={...}) # or BRISK_ESHITEN_COOKIES; remember=True keeps them apart from SBI's
feed = briskapi.connect(site="e-shiten", codes=["7203"]) # live
Everything above applies, recordings and uploads included (the market recordings as they are made and each day's timing summary); its cookies go only to next.e-shiten.brisk.jp. e-shiten allows one BRiSK session at a time: opening it in a second tab or browser has stopped the first (message 10011), so the feed and BRiSK in your browser can end each other. Before you record or upload, read what Tachibana's BRiSK Next terms say about storing and reusing its data.
Matsui, Monex and SMBC Nikko¶
BRiSK for Matsui Securities (matsui.brisk.jp), Monex Securities
(monex.brisk.jp) and SMBC Nikko Securities
(smbcnikko.brisk.jp) is the same vendor's app on hosts of their own, so the
same client serves them: site="matsui", "monex" or "smbcnikko", with cookies from your browser, the
site's variable (BRISK_MATSUI_COOKIES, BRISK_MONEX_COOKIES, BRISK_SMBCNIKKO_COOKIES; JSON) or a
passkey sign-in (brisk enroll --site matsui once, then brisk login).
briskapi.login("matsui", cookies={...}) # remember=True keeps them apart from the other brokers'
feed = briskapi.connect(site="matsui", codes=["7203"]) # live
Everything above applies, daily recordings and uploads included (sources matsui_live,
monex_live, smbcnikko_live), and each site's cookies go only to its own host. These three have
not been tried with an account yet: should a site's app differ from SBI's, the feed stops with an
error that says what it did not recognise (--trace-protocol shows the connection) rather than
record anything doubtful. Expect one BRiSK session per user, as at SBI and e-shiten, and close
BRiSK in your browser first. Before you record or upload, read what your broker's BRiSK terms say about storing and
reusing its data.