Volume Weighted Average Price (VWAP)
Category: Trend · Updated November 2026
The TAAPI.IO VWAP API returns real-time and historical values for the Volume Weighted Average Price indicator as JSON, for crypto pairs and US stocks. Send an exchange, symbol and timeframe to get real-time or historical data, with no candles to download and no calculations to maintain.
| Spec | Value |
|---|---|
| Endpoint | GET https://v2.taapi.io/indicator/vwap |
| Outputs | value |
| Markets | Binance, Binance Futures, Bybit, Gate.io, Kraken and US stocks |
| Timeframes | 1m to 1w |
| Delivery | REST, bulk and WebSocket |
Get VWAP with one API call
This request returns VWAP for BTCUSDT on 1-hour Binance candles. Add your API key to run it here.
curl -G https://v2.taapi.io/indicator/vwap \ -H "Authorization: Bearer YOUR_API_KEY" \ --data-urlencode "exchange=binance" \ --data-urlencode "symbol=BTCUSDT" \ --data-urlencode "timeframe=1h"
import requests
resp = requests.get(
'https://v2.taapi.io/indicator/vwap',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'exchange': 'binance', 'symbol': 'BTCUSDT', 'timeframe': '1h'},
)
print(resp.json())const params = new URLSearchParams({"exchange": "binance", "symbol": "BTCUSDT", "timeframe": "1h"});
const res = await fetch(`https://v2.taapi.io/indicator/vwap?${params}`, {
headers: { Authorization: 'Bearer YOUR_API_KEY' },
});
console.log(await res.json());VWAP API response
This response came from the live API on 9 November 2026. Long lists are shortened here.
{
"value": [79860.1103966799],
"timestamp": [1794218400]
}| Field | Type | Description |
|---|---|---|
value | number[] | VWAP result |
timestamp | integer[] | Unix time of each candle, in seconds |
VWAP API parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
exchange | string | Yes | — | binance, binancefutures, bybit, gateio, kraken or stocks |
symbol | string | Yes | — | Pair or ticker, e.g. BTCUSDT or AAPL |
timeframe | string | Yes | — | 1m 5m 15m 1h 4h 1d 1w |
anchorPeriod | string | No | null | Where the VWAP calculation starts. session: resets daily at 00:00 UTC. week: resets every Monday at 00:00 UTC. null (default): no time-based anchor; VWAP is cumulative over the most recent 2,000 candles of the requested timeframe. Values are case-sensitive, and any other value is treated as null. |
results | integer | No | 1 | Number of values to return, or max |
backtrack | integer | No | 0 | Candles to skip from the most recent |
What is VWAP?
The Volume Weighted Average Price is the average price weighted by traded volume since a starting point. It shows the average price paid by participants over that span, which makes it a common benchmark for judging whether price is high or low relative to actual trading.
VWAP formula
| Output | Calculation |
|---|---|
| Typical price | (high + low + close) ÷ 3 |
| VWAP | Cumulative (typical price × volume) ÷ cumulative volume since the anchor |
How to read VWAP in your code
| Signal | Meaning | Condition |
|---|---|---|
| Above VWAP | Buyers in profit on average | Close above value |
| Below VWAP | Sellers in control on average | Close below value |
| Reclaim | Intraday bias change | Close crosses value |
Limitations: By default this endpoint has no time-based anchor and is cumulative over the most recent 2,000 candles. Set anchorPeriod=session for the daily VWAP most intraday charts show. A session VWAP is based on little data early in the day, and a long-running VWAP responds slowly. Nothing on this page is financial advice.
VWAP anchor periods
VWAP depends on where it starts, so choosing the anchor is the most important decision when using this endpoint.
| anchorPeriod | Behaviour |
|---|---|
session | Resets daily at 00:00 UTC |
week | Resets every Monday at 00:00 UTC |
null (default) | No time anchor: cumulative over the most recent 2,000 candles |
The value is case-sensitive, and any other value is treated as no anchor. Sessions reset at 00:00 UTC, which is not the same as the US stock market open, so a session VWAP on stocks may differ from a chart that resets at 09:30 New York time.
How traders use VWAP
Staying above session VWAP suggests that buyers have control for the day, and staying below it suggests the opposite. Intraday traders watch for reclaims and rejections of the line, and larger traders use it as a benchmark for how well an order was executed.
VWAP is an intraday concept first. For a rolling volume-weighted average with no reset, use VWMA.
Compare price with session VWAP in Python
This fetches the closed price and the daily VWAP together. anchorPeriod=session resets the calculation at 00:00 UTC.
curl -X POST https://v2.taapi.io/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"constructs": [
{
"id": "btc",
"exchange": "binance",
"symbol": "BTCUSDT",
"timeframe": "1h",
"indicators": [
{
"id": "price",
"indicator": "price",
"backtrack": 1
},
{
"id": "vwap",
"indicator": "vwap",
"anchorPeriod": "session",
"backtrack": 1
}
]
}
]
}'import requests
resp = requests.post(
'https://v2.taapi.io/bulk',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
"constructs": [
{
"id": "btc",
"exchange": "binance",
"symbol": "BTCUSDT",
"timeframe": "1h",
"indicators": [
{
"id": "price",
"indicator": "price",
"backtrack": 1
},
{
"id": "vwap",
"indicator": "vwap",
"anchorPeriod": "session",
"backtrack": 1
}
]
}
]
},
)
data = resp.json()['btc']
price = data['price']['value'][-1]
vwap = data['vwap']['value'][-1]
distance = (price - vwap) / vwap * 100
side = 'above' if price > vwap else 'below'
print(f'Price is {abs(distance):.2f}% {side} session VWAP')Get historical VWAP values
Add results to return a series for backtesting or charting. The last element is the most recent candle.
curl -G https://v2.taapi.io/indicator/vwap \ -H "Authorization: Bearer YOUR_API_KEY" \ --data-urlencode "exchange=binance" \ --data-urlencode "symbol=BTCUSDT" \ --data-urlencode "timeframe=1h" \ --data-urlencode "results=100"
Get VWAP for multiple symbols
Combine VWAP with other indicators in one request. Each exchange, symbol and timeframe combination is one construct: Basic allows 1 per request, Pro 3 and Expert 10.
curl -X POST https://v2.taapi.io/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"constructs": [
{
"id": "btc_1h",
"exchange": "binance",
"symbol": "BTCUSDT",
"timeframe": "1h",
"indicators": [
{
"id": "vwap",
"indicator": "vwap"
},
{
"id": "rsi",
"indicator": "rsi"
}
]
}
]
}'Stream VWAP in real time
Subscribe over WebSocket to receive new values every 5 seconds while the candle is forming. Streaming supports 1m, 5m, 15m and 1h, and uses interval where REST uses timeframe.
{
"type": "subscribe",
"id": "vwap",
"exchange": "binance",
"symbol": "BTCUSDT",
"interval": "1m",
"indicator": "vwap"
}Why VWAP values can differ between platforms
- Anchor: This is the most common cause. The default is not a daily VWAP, so set
anchorPeriodto match your chart. - Session times: Sessions reset at 00:00 UTC, while stock charts often reset at the exchange open.
- Volume data: VWAP uses the volume of the exchange you request.
VWAP API FAQ
What does the VWAP API return?
It returns value, plus a timestamp for the request. Results are JSON.
Is the latest VWAP value final?
No. The newest value belongs to the candle still forming and can change until it closes. Add backtrack=1 to read the last closed candle.
Which VWAP settings can I change?
You can set anchorPeriod. See the parameters table above for defaults.
Can I get VWAP for US stocks?
Yes. Use exchange=stocks with a ticker such as AAPL. US stocks are included on the Pro plan and above.
Why is the VWAP API value far from the current price?
The default is cumulative over 2,000 candles, so it can sit far from price. Use anchorPeriod=session or week for a VWAP that resets.
Related indicators
See the full list of indicators, or start for free.