The unified brokerage API for developers

Connect brokerage accounts to your app

Execute trades, sync normalized portfolio data and connect to 400M+ retail investor accounts through a single API for connectivity to the world's leading brokerages.

$ npm install snaptrade-typescript-sdk
added 1 package in 1.2s
import { Snaptrade } from "snaptrade-typescript-sdk";
const snaptrade = new Snaptrade({ clientId, consumerKey });
const { userSecret } = (await snaptrade.authentication
.registerSnapTradeUser({ userId })).data;
const { redirectURI } = (await snaptrade.authentication
.loginSnapTradeUser({ userId, userSecret })).data;

Used by 10,000+ developers

Why developers choose SnapTrade

  • Integrate in under an hour - SDK to first API call
  • Access brokers you couldn't reach on your own, including Fidelity, Schwab, and Robinhood
  • Execute trades through an API - banking aggregators don't let you do this
  • Richer investment data than banking-first aggregators
  • Security infrastructure handled for you - SOC 2 Type II
  • Real responses from people who know the product

What you can build

Embedded trading

Place stock, ETF, crypto, and options trades using your users' existing brokerage accounts - without becoming a broker-dealer.

Portfolio rebalancing

Automated rebalancing across multi-broker portfolios using real-time holdings and balance data.

Copy trading

Monitor trader activity and power account-linked trading experiences with live order data.

Portfolio dashboards

Unified view of holdings, balances, and allocation across brokers, with real-time holdings on Real-time plans and daily cached holdings on Daily plans.

AI-powered investing

AI wealth managers and AI-driven insights built on normalized brokerage data across all connected accounts.

Alerts and automation

Workflows triggered by transactions, portfolio changes, or custom conditions via webhooks and real-time order data.

SnapTrade is the engine that drives our core engagement tools. The API gives our users the power to share their investments and learn from each other.
Max Nicholson · Founder, Blossom

Integrate in under an hour

Broker integrations are the part nobody wants to build. It can take weeks to get a single one working - and then you have to maintain it as brokers change their auth flows, update their APIs, and deprecate endpoints.

You could build each broker integration yourself. But if getting to market quickly matters, a single API that covers 30+ brokerages will save months of engineering time - and ongoing maintenance after that.

With SnapTrade, you get access to 400M+ retail investor accounts through a single API. One build, and you're covered.

I can't imagine the effort it would be to integrate with so many different brokerages, all of them having their weird quirks and surprising APIs. I appreciate good communication with the SnapTrade team, including the developers, and their proactive approach.
Mike Darkowski · Founder, Scrab

Access the brokers you need

When you integrate through SnapTrade, you get access to brokerages which traditional banking aggregators do not support - including eToro, moomoo, Public, and Webull.

This saves you the hassle of working with multiple aggregators to serve a global audience of retail investors. For many teams, it's not just the faster path - it's the only path.

We successfully integrated SnapTrade into our platform in record time, surpassing larger API aggregators. This highlights the commitment and customer-centric approach of their team. SnapTrade's outstanding API documentation and support distinguish them from other providers.
Boldizsár · Founder, DivTracker App

How it works

A few API calls get you started: register a user, generate a connection link, then list the user's connections and accounts. Use SnapTrade's SDKs or call the API directly.

1

Register your user

1 2 3 4 5 6 7 8 9 10 11 import { Snaptrade } from "snaptrade-typescript-sdk"; const snaptrade = new Snaptrade({ clientId: process.env.SNAPTRADE_CLIENT_ID!, consumerKey: process.env.SNAPTRADE_CONSUMER_KEY!, }); const { data: user } = await snaptrade.authentication.registerSnapTradeUser({ userId: "user_123", // Unique, immutable - do not use email }); // Store user.userSecret securely - it cannot be retrieved later
2

Generate a connection link

1 2 3 4 5 6 7 8 const { data: login } = await snaptrade.authentication.loginSnapTradeUser({ userId: user.userId, userSecret: user.userSecret, // connectionType: "trade" requests data + trading access // Use "trade-if-available" to request trading where supported // Omit or set to "read" for read-only access }); // Redirect user to login.redirectURI - link expires in 5 minutes
3

Retrieve their connections and accounts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 // First list connections to get the connection ID const { data: connections } = await snaptrade.connections.listBrokerageAuthorizations({ userId: user.userId, userSecret: user.userSecret, }); // Then list accounts for a specific connection const { data: accounts } = await snaptrade.connections.listBrokerageAuthorizationAccounts({ authorizationId: connections[0].id, userId: user.userId, userSecret: user.userSecret, });

Execute trades through an API

Banking aggregators don't let you do this. They're built for read-only data - balances, transactions, and account information. Placing trades is a fundamentally different capability, and very few APIs support it.

SnapTrade supports authorized trade execution where brokers allow it for stocks, ETFs, crypto, and options where supported. Trading availability varies by broker.

Import portfolios in minutes, not weeks

Getting users to set up and maintain their portfolios is a challenge.

SnapTrade lets users connect their brokerage accounts in a few clicks - automatically importing holdings, balances, and transactions, and keeping portfolios up to date without manual input.

This removes onboarding barriers and lets users start getting value immediately.

The data you need

SnapTrade is purpose-built for investing and brokerage trading. One API covers accounts, balances, positions, orders, and activities - everything you need to build portfolio tools, trading workflows, and investment products.

One schema across every broker

Every broker returns that data differently. SnapTrade normalizes it into a consistent schema so you build once and support all of them. Field availability depends on what each broker provides.

Data classWhat's includedAvailability
AccountsAccount types, institution, currency, sync statusAll connected brokers
BalancesCash, buying power, multi-currency where supportedAll connected brokers
PositionsEquities, ETFs, crypto, mutual funds, options, futures, and moreAll connected brokers
OrdersRecent order data and execution details - real-time where supported, otherwise cached dailyWhere supported by broker
ActivitiesBuys, sells, dividends, deposits, withdrawals, fees - cached daily with no intraday transactionsWhere supported by broker

Evaluate the full API for free

Explore the API from the command line with the SnapTrade CLI.

$snaptrade explore --free

Security and compliance

SOC 2 Type II

SOC 2 Type II certified. TLS encryption in transit, data encrypted at rest, OAuth where supported. Read-only or trading access is configurable per connection.

SnapTrade is infrastructure, not a data broker. User data is never sold or repurposed. You own the relationship with your users.

Built for production

SnapTrade is actively maintained infrastructure for brokerage connectivity. Integrations are continuously updated as brokers evolve their systems, webhooks help keep your app in sync, and hosted reconnect flows help you manage the full connection lifecycle.

>95%connection success rate

Developer support

Real responses from people who know the product. Custom plans include a dedicated Slack channel with priority support and integration assistance.

The API is a dream come true. It has been above and beyond any other company I've ever worked with. Our support tickets have legitimately dropped by 50%.
Bryce Matheson · Co-Founder, The Dividend Tracker

Transparent, usage-based pricing

Evaluate the full API, validate your integration, and move to production without talking to anyone. Free and Pay As You Go plans have no contracts or minimum commitments.

Free

$0
  • 1 connected user
  • 5 connections
  • Real-time data
  • Trading where supported

Pay As You GoReal-time

$2user / mo
  • Real-time data
  • Trading where supported
  • Unlimited users
  • No contract

Pay As You GoDaily

$1user / mo
  • Daily cached data
  • Read-only
  • $0.05 per manual connection sync

Custom

Volume-based
  • Volume discounts
  • Higher rate limits
  • Dedicated Slack
  • Priority support

Billing is per connected user. One user with multiple broker connections counts as one. No contracts on Pay As You Go plans.

Our development crew found the SnapTrade API easy to work with and our delivery times beat expectations.
Ben Clendon · Sharesight

Get your free API key

Make your first call in under an hour.