Quotes
Retrieve real-time quotes (bid, ask, mid, last, volume, etc.) for one or more stock symbols.
Making Requests
The stocks resource offers two quote methods:
quote(...)— a single symbol, built withStockQuoteRequest.quotes(...)— several symbols in one request (the stocks backend batches a comma list), built withStockQuotesRequest. The result is a single response with one row per symbol.
StockQuotesResponse quote(StockQuoteRequest request)
CompletableFuture<StockQuotesResponse> quoteAsync(StockQuoteRequest request)
StockQuotesResponse quotes(StockQuotesRequest request)
CompletableFuture<StockQuotesResponse> quotesAsync(StockQuotesRequest request)
Request types
// Single symbol
StockQuoteRequest.of(String symbol)
StockQuoteRequest.builder(String symbol)
.extended(boolean extended) // include extended-session prices
.candle(boolean candle) // add OHLC columns
.week52(boolean week52) // add 52-week high/low
.build()
// Multiple symbols, one request
StockQuotesRequest.of(String first, String... rest) // shortcut: symbols only
StockQuotesRequest.builder(String first, String... rest)
.addSymbol(String symbol)
.extended(boolean extended)
.candle(boolean candle)
.week52(boolean week52)
.build()
Returns
StockQuotesResponse wrapping List<StockQuote> (one element for quote, one per symbol for quotes):
public record StockQuote(
@Nullable String symbol,
@Nullable Double ask, @Nullable Long askSize,
@Nullable Double bid, @Nullable Long bidSize,
@Nullable Double mid, @Nullable Double last,
@Nullable Double change, @Nullable Double changepct,
@Nullable Long volume, @Nullable ZonedDateTime updated,
// opt-in via .candle(true):
@Nullable Double open, @Nullable Double high, @Nullable Double low, @Nullable Double close,
// opt-in via .week52(true):
@Nullable Double week52High, @Nullable Double week52Low)
Examples
- Java
- Kotlin
import com.marketdata.sdk.MarketDataClient;
import com.marketdata.sdk.stocks.StockQuote;
import com.marketdata.sdk.stocks.StockQuoteRequest;
import com.marketdata.sdk.stocks.StockQuotesRequest;
try (MarketDataClient client = new MarketDataClient()) {
// A single symbol — row 0 of the list.
StockQuote q = client.stocks().quote(StockQuoteRequest.of("AAPL")).values().get(0);
System.out.printf("%s last=%.2f bid/ask=%.2f/%.2f%n", q.symbol(), q.last(), q.bid(), q.ask());
// Several symbols in one request.
var quotes = client.stocks().quotes(
StockQuotesRequest.of("AAPL", "MSFT", "GOOGL"));
for (StockQuote row : quotes.values()) {
System.out.printf("%-6s last=%.2f%n", row.symbol(), row.last());
}
}
import com.marketdata.sdk.MarketDataClient
import com.marketdata.sdk.stocks.StockQuoteRequest
import com.marketdata.sdk.stocks.StockQuotesRequest
MarketDataClient().use { client ->
val q = client.stocks().quote(StockQuoteRequest.of("AAPL")).values()[0]
println("${q.symbol()} last=${q.last()}")
val quotes = client.stocks().quotes(
StockQuotesRequest.of("AAPL", "MSFT", "GOOGL"))
for (row in quotes.values()) {
println("${row.symbol()} last=${row.last()}")
}
}