See today's rates

Coverage

Brokerages coverage

What each brokerage capture holds, and where a brokerage's published schedule could not be read in full.

Brokerage Fee Capture, Coverage Ledger

Capture date: 2026-11-15. Route: text-fetch / web-search only, official pages only for figures. Published figures verbatim; nothing estimated. Any fetch that returned 429 was recorded as not captured and was NOT retried in this pass. Where a figure comes from the search-indexed copy of an official page, or from a non-official source, that provenance is stated in the brokerage's raw capture file and the figure is flagged, third-party figures were never used to fill the published dataset (brokerages.json) except where explicitly noted in the row's notes.

Denominator

Brokerages attempted: 13 of 13 in scope. Rows in brokerages.json: 13 (one per brokerage attempted, including the two scope exceptions below).

Scope exceptions found during capture:

Captured in full (all in-scope fee categories from official pages)

Captured with material gaps

Biggest gaps (for a follow-up pass)

  1. TD Direct Investing, thinnest row in the set: transfer-out, FX, margin and admin schedules all uncaptured because the pricing page 429'd.
  2. Scotia iTRADE, admin/transfer/margin/FX uncaptured, plus an unresolved conflict between the current pricing page and the linked legacy fee-schedule PDF.
  3. Interactive Brokers Canada, admin, inactivity and transfer-out fees uncaptured (null, not $0); margin and part of options rest on indexed copies.
  4. BMO InvestorLine, FX and margin uncaptured (fee-schedule PDF returned 400).
  5. NBDB and Qtrade, no numeric FX spread captured from an official page for either; Qtrade publishes none, NBDB's sits in its website Pricing section, unfetched.
  6. CIBC Investor's Edge, transfer-out fee not on the official pricing page.

Raw captures: raw/<slug>-capture.md and raw/<slug>-partial.json per brokerage.