# Brokerage Account Aggregation APIs

One API that reads positions and trades out of a user's brokerage account — read-only or order-placing, OAuth or credentials, and what it actually costs.

*https://stockmarketstack.com/categories/brokerage-aggregation*

One question removes most of this market before any other: do you need to place orders, or only
read data? Almost everything here is read-only and will never be otherwise — it is a different
regulatory posture, not a missing feature. After that, coverage is decided by *how* each broker is
connected rather than by how many brokers a vendor counts, and refresh is a daily batch rather
than a live feed, whatever the tier is called.

- **Reading positions and placing orders** — [SnapTrade](https://stockmarketstack.com/tools/snaptrade), $1 per connected user
  per month, and the only published price in the category.
- **The broadest US coverage, read-only** — [Plaid Investments](https://stockmarketstack.com/tools/plaid-investments).
- **Official broker APIs only, nothing scraped** — [Akoya](https://stockmarketstack.com/tools/akoya).

## The layer nobody goes looking for by name

This category sits between the two it connects. A [market data API](https://stockmarketstack.com/categories/market-data-apis)
tells you what a security is worth. A [portfolio tracker](https://stockmarketstack.com/categories/portfolio-trackers) tells a
user what they own and what it did. The thing that gets the second one its holdings — without
asking anyone to upload a CSV every Sunday — is an account aggregation API, and most people
arrive here having wanted it for weeks without knowing the layer had a name.

That is the honest description of this listing. If you are shopping for a tracker, this is what
the tracker you pick is built on, and it explains why two trackers support wildly different
broker lists. If you are building one, this is the vendor decision that determines your broker
coverage, your support load and a line item that scales with every user you add.

There is one job here — aggregation — and no sub-facets worth inventing. Everything that varies
varies along the axes below.

## Read-only or trading — the split that removes most of the field

Almost everything in this market returns data and cannot place an order. That is not a gap the
vendors are working on; it is a different regulatory posture and, in most cases, a different set
of agreements with each broker. Plaid, Akoya, Yodlee and Mastercard Open Finance are read
products. SnapTrade is the conspicuous exception that submits orders as well.

The line matters more than it looks, because it is not a feature you bolt on later. If you want
execution, most of this market is not a candidate and never will be, and you are choosing among
a handful of vendors on their terms. If you only need to read, you are in a large competitive
market where the interesting differences are coverage and price.

Even inside a trading-capable vendor the default is read. SnapTrade connections are read-only
unless the connection is created as a trading connection, and turning an existing read connection
into a trading one means sending the user back through authorisation. Worth knowing before you
design a signup flow you will have to make people repeat.

## How the connection is actually made, and why vendor counts are not comparable

Every vendor publishes a number of supported institutions. Those numbers mix three mechanisms
with completely different failure rates, and no vendor breaks the count down on the marketing
page.

**Credential-based access.** The user hands over their brokerage username and password, and the
vendor logs in as them and reads the screen or an internal endpoint. It reaches institutions that
have no API at all, which is why it still exists. It also breaks when the site is redesigned,
when the password is rotated, and — increasingly — when the broker enforces multi-factor
authentication on every login, which is the change that has been quietly killing this method
institution by institution. Some brokers' terms prohibit it outright.

**OAuth token access.** The user authenticates on the broker's own domain and grants a scoped,
revocable token; the vendor never sees a password. Far more stable, and the only method that
survives an MFA mandate cleanly. Note the sharp limit in practice: an OAuth grant usually carries
read scopes only. SnapTrade is explicit that its OAuth connections support reading data and
managing the connection but not trading, which is why trading connections often fall back to
credentials.

**An official API partnership with the broker.** A negotiated agreement and a real broker-operated
API behind it. This is the most reliable and the narrowest. Akoya is built entirely this way and
says so as a selling point — nothing scraped, every connection permissioned through the
institution — and its reach is correspondingly a fraction of a credential-based aggregator's
institution count while covering, by its own estimate, roughly a third of US retail brokerage
accounts by volume.

The practical test when you evaluate coverage — take the ten brokers your actual users hold
accounts at and find out which mechanism each one is on. Ten brokers on OAuth beats three
hundred on scraped sessions for anything you intend to support.

## What comes back, and how stale it is

**Positions versus a full picture.** Current holdings with quantity and market value are the easy
part and everyone has them. Cost basis, realised gains, transaction history and per-lot detail are
where products separate, and where a tax or performance feature lives or dies. Plaid documents
cost basis on holdings, up to 24 months of investment transactions, and tax lots where the
institution provides them. Akoya's FDX-aligned endpoints cover holdings and tax-lot detail. On a
scraped connection the same fields quietly come back null.

**Refresh is a daily batch, not a live feed.** This is the expectation most often wrong on
arrival. Plaid checks investment accounts at least once per market day and up to two to four times
depending on the institution, with most changes landing overnight after the close. That is normal
for the category, because the brokers themselves post holdings on an end-of-day cycle. An app that
promises intraday portfolio value is pricing positions from a market data feed and getting only
the position list from here. Any vendor tier sold as "real-time" means a fresher pull on request,
not a stream.

**A stale connection is your support ticket, not the vendor's.** Connections break — a password
change, an MFA prompt, a broker redesign — and the user finds out through your app. Whatever the
reconnection flow looks like, that is what your inbox looks like.

## The rules are mid-rewrite, and that is the load-bearing fact

Do not build on the assumption that US brokers are legally obliged to expose your users' data.
As of September 2026 they are not.

The CFPB finalised the Section 1033 Personal Financial Data Rights rule — the American open
banking rule — in late 2024. It was challenged by Forcht Bank, the Kentucky Bankers Association
and the Bank Policy Institute in the Eastern District of Kentucky; in July 2025 the court stayed
the case while the Bureau began a fresh rulemaking and stayed the compliance deadlines with it,
and in November 2025 it enjoined the CFPB from enforcing the rule as written. The first
compliance date, 1 April 2026, arrived and bound nobody. An advance notice in August 2025
reopened four questions, including whether data providers may charge for access, and a
replacement proposal reached OIRA for review in early August 2026. It is not final.

Two consequences you can act on:

**Access is a commercial relationship, not a right.** The provision that would have made data
access free is the one being rewritten. JPMorgan Chase began billing aggregators for data pulls,
and Plaid signed a paid data-access agreement with it rather than litigate. Expect the cost of
reaching large institutions to be inside your vendor's price, and expect that price to move.

**The technical standard is settling even while the law is not.** The FDX API is the de facto
format for this data in North America — the CFPB recognised Financial Data Exchange as the first
standard-setting body under the 1033 framework, a five-year recognition running to January 2030,
and FDX reports over 130 million consumer accounts connected through it. Version 6.x added the
investment and tax data clusters this category depends on. A vendor exposing FDX-shaped responses
is betting on the same standard, and that bet looks safe regardless of how the rule lands.

## Pricing, and how thin the free tier really is

This is the rare category where almost nobody publishes a number. The shapes you will meet are
per connected user per month, per successful API call, or an annual contract with a floor — and
which one you are quoted depends on your volume more than on the product.

SnapTrade is the exception that lists prices — a free starter tier capped at 5 connected
accounts, then $1 per connected user per month for daily data or $2 for real-time, billed per
user rather than per connection, so a user who links three brokers still counts once.
Plaid bills Investments as a per-Item subscription with holdings and transactions as separate
line items, and shows you the rate only after you apply for production access. Akoya publishes a
self-service tier for under 10,000 monthly connections and quotes custom pricing above it.

The good news for someone building alone is that the sandbox is not the obstacle it used to be.
Every vendor in this listing lets you create a sandbox account yourself, against synthetic
institutions, without a sales call. The obstacle is the step after that — moving to production against real
institutions, where the price appears, the contract appears, and in some cases a review of what
you intend to do with the data appears. Write the integration in the sandbox by all means. Do not
commit to a launch date until you have the production number in writing.

## Cards

- [Akoya](https://stockmarketstack.com/tools/akoya.md) — Bank-owned API network for consumer-permissioned account and holdings data. No scraping.
- [Mastercard Open Finance](https://stockmarketstack.com/tools/mastercard-open-finance.md) — The old Finicity API under Mastercard's name, with holdings on the account object.
- [MX](https://stockmarketstack.com/tools/mx.md) — Bank-grade aggregation API with investment holdings billed as its own product.
- [Plaid Investments](https://stockmarketstack.com/tools/plaid-investments.md) — Read-only holdings, cost basis and investment transactions from 3,200 brokerages.
- [SnapTrade](https://stockmarketstack.com/tools/snaptrade.md) — One API for reading brokerage holdings and placing orders at supported brokers.
- [Wealthica Business](https://stockmarketstack.com/tools/wealthica-business.md) — Canadian wealth aggregation — 125 published providers, positions, transactions, CUSIP.
- [Yodlee](https://stockmarketstack.com/tools/yodlee.md) — Long-running aggregation platform whose holdings carry CUSIP, ISIN and SEDOL.

## FAQ

### What is a brokerage account aggregation API?

It is the layer that connects an app to a real brokerage account and returns the balances, positions and trade history held there, so the app never asks the user to type them in. Almost every portfolio tracker on the market is built on one of these APIs rather than on its own broker integrations, because a single vendor maintains hundreds of connections that each break on a different schedule.

### Which of these APIs can actually place a trade?

Very few. The aggregation market is overwhelmingly read-only — Plaid, Akoya, Yodlee and Mastercard Open Finance return data and nothing else. SnapTrade is the outlier that also submits orders, and even there trading is off by default and has to be requested per connection at the moment the user authorises it. Decide which side of that line you are on before you compare anything else, because it eliminates most of the field.

### Do these APIs return cost basis and transaction history, or only current positions?

It varies by vendor and, worse, by institution within a vendor. Plaid documents cost basis on holdings, up to 24 months of investment transactions, and tax lots where the institution supplies them; Akoya's FDX-standardised endpoints cover holdings and tax-lot detail. Where the underlying connection is a scraped web session rather than a broker API, cost basis and older transactions are routinely the fields that come back empty.

### Is the CFPB's open banking rule in force?

No. As of 13 September 2026 the Section 1033 Personal Financial Data Rights rule is enjoined — a federal court in the Eastern District of Kentucky barred the CFPB from enforcing it and stayed the compliance dates while the Bureau rewrites it, and the first compliance date of 1 April 2026 passed without being an enforcement trigger. A replacement proposal went to OIRA for review in early August 2026 and has not been finalised. Nothing legally obliges a broker to give you an API today.

### Can an independent developer try one of these APIs without talking to sales?

Partly. Every vendor here offers a free sandbox against synthetic data that you can sign up for yourself, so the integration can be written before anyone calls you. What is rare is a published production price — SnapTrade lists $1 per connected user per month for daily data and $2 for real-time; the others show you a number only after you apply for production access or negotiate a contract.
