Changelog

Product updates, fixes, and improvements.

October 2026

October 2026

OPTIONDATA RANGES

ONE FORMULA FOR YOUR WHOLE LIST OF CONTRACTS

Until this month, 50 option contracts in a sheet meant 50 OPTIONDATA formulas, one per row, each with its own request. Now one formula quotes the whole list:

Plain text
=OPTIONDATA(A2:A51, "bid,ask,mid")

Give OPTIONDATA a column or a row of OCC symbols, or a comma list, and it returns one row for each contract, in the same order as your cells.

NO SYMBOLS? USE A TABLE

If your sheet keeps each contract as a ticker, an expiration, a strike and a side in four columns, OPTIONDATA reads that table as it is. One contract per row, columns in any order:

A B C D
2 AAPL 12/17/2027 250 call
3 AAPL 12/17/2027 250 put
4 MSFT 12/17/2027 500 call
Plain text
=OPTIONDATA(A2:D4, "symbol,mid")

A contract we can't quote, because it expired or has a typo, keeps its place, and the other columns stay blank. Every other row still fills in, lined up with your cells.

In the Formula Builder, the OPTIONDATA form has a Multiple Symbols tab that takes a range or a table. See the OPTIONDATA docs for the details, such as one historical date per multi-contract formula.

OPTIONCHAIN FROM A PAST CLOSE

OPTIONCHAIN has a sixth argument: a quote date. Give it a past trading day and you get the chain as it closed that day. This formula returns the AAPL puts with strikes from 200 to 250, at the expiration closest to 45 days out, as they closed on September 1, 2026:

Plain text
=OPTIONCHAIN("AAPL","strike,bid,ask","45 DTE","200-250","puts","09/01/2026")

Write "last session" in place of the date for the most recent close:

Plain text
=OPTIONCHAIN("AAPL","strike,bid,ask","45 DTE","200-250","puts","last session")

Historical chains are end-of-day only, the greeks are blank, and how far back you can go depends on your plan. The OPTIONCHAIN docs have the full list.

2 MINUTE TUTORIAL

Video: One formula for a whole list of options

Watch the video on YouTube

ALSO NEW SINCE JULY

  • Holiday expirations: OPTIONCHAIN now returns contracts that expire on early-close days, such as the day after Thanksgiving. Before, those chains came back empty.
  • Date cells: a date cell in an options formula now means that day in New York. Before, some historical requests read it as the day before.
  • Clearer sign-in messages: when Google's daily fetch limit runs out, or our server has a problem, the sidebar now says so. Before, it showed "No Account Found".
August 2026

August 2026

A Market Data customer built a C# SDK, ran it, then handed it to us. Today it ships as v1.0.0.

C#/.NET SDK RELEASED

Omid Rad needed Market Data in C#. We didn’t have an SDK, so he wrote one. Then he offered it to us as the official package.

We said yes, spent three weeks hardening it, and today it ships as v1.0.0 of the Market Data C#/.NET SDK, on NuGet as MarketDataApp.

This is the entire getting-started guide:

C#
// Reads MARKETDATA_TOKEN from the environment.
using var client = await MarketDataClient.CreateAsync();

var quote = await client.Stocks.GetQuoteAsync(
    "AAPL", cancellationToken: ct);
Console.WriteLine(quote.Values[0]);  // AAPL mid=311.94

var req = new StockCandlesRequest(
    StockResolution.Minutes(5), "AAPL")
{
    From = new DateOnly(2022, 1, 1),
    To   = new DateOnly(2024, 12, 31)
};

// One call. Three HTTP requests behind it, merged.
var candles = await client.Stocks.GetCandlesAsync(
    req, cancellationToken: ct);

Console.WriteLine(candles.Values.Count);  // 58,968 bars
Console.WriteLine(candles.Parts.Count);   // 3 requests

IT FITS THE APP YOU ALREADY HAVE

builder.Services.AddMarketDataClient(builder.Configuration) is the whole setup: a singleton over IHttpClientFactory, configured from wherever you already keep your secrets. Or hand it your own HttpClient. It won’t touch your settings, and it won’t dispose what it didn’t create.

MONEY IS DECIMAL

Every price, strike, bid, and ask is decimal from the moment it comes off the wire. The rounding error that surfaces three trades later never gets a chance to start. And a field the API didn’t send arrives as null, never a zero you might mistake for data.

IT DOES THE TEDIOUS PARTS

Three years of five-minute candles is one call: the SDK slices the range, runs the pieces concurrently, and merges them back together. It retries with backoff, honors Retry-After, and won’t spend a request your quota no longer has.

dotnet add package MarketDataApp and you’re running. .NET 8 and .NET 10, 100% of lines and branches covered, and five runnable samples, including an MCP server that hands your AI agent live quotes.

THANK YOU, OMID

Omid Rad (Exceptal) wrote the original SDK and donated it to us. His commits are still in the history under his name.

July 2026

July 2026

FORMULA BUILDER

Build any formula without memorizing the syntax.

The Market Data sidebar in Google Sheets showing the STOCKDATA Formula Builder: a live preview reading =STOCKDATA(A1:A19,"close,date"), a Multiple Symbols field holding A1:A19, a Use Selected Cell Range button, Historical Candles selected with Close and Date ticked among the column checkboxes, and Clear and Insert Formula buttons at the foot

Love the data but tired of hunting through the docs every time you need to remember argument order, attribute names, or how to write a strike range? We just made that a thing of the past. The Market Data Sheets Add-on now has a Formula Builder: a point-and-click panel in the sidebar that writes your formula for you.

Pick a formula, fill in a simple form, and watch the exact formula build itself in a live preview as you click. When it looks right, hit Insert Formula and it drops straight into your selected cell.

Options traders, this one’s for you. Building an =OPTIONCHAIN() used to mean remembering the syntax for expirations, strike ranges, delta filters, and calls-vs-puts all in one line. Now it’s checkboxes and dropdowns: tick the columns you want, choose an expiration on a calendar or just type the days-to-expiration, and set your filters with a click. The builder handles the syntax underneath.

And because it’s guided, there’s nothing to learn. New to the add-on? You can build a working formula on day one without reading a single doc.

What it does for you

  • Live formula preview: See the exact =FORMULA(...) string form as you make choices, so you know precisely what you’re inserting before you insert it.
  • Grab cells with one click: Click a cell (or select a range) in your sheet and hit Use Selected Cell to drop the reference into the form. No typing A1:A500 by hand.
  • A form that adapts: Pick Real-Time Quotes and the date fields disappear; pick Historical Candles and they come back. You only ever see the fields that matter.

What else we worked on in July

  • Earnings Data: Improved reliability on this endpoint.
  • Options Data: Began a large project to backfill missing index option data.
  • Stock Candles: Optimizations for faster responses from our database.
June 2026 Update

June 2026 Update

JAVA & KOTLIN SDK RELEASED

Market Data is now on the JVM. Today we're shipping v1.0.0 of the Market Data Java & Kotlin SDK, and it's not a Java library with Kotlin bolted on. It's one dependency that's genuinely idiomatic in both languages: no separate Kotlin module, no kotlin-stdlib on your classpath, no boilerplate.

Here's your first quote, the same SDK in your choice of language — see the Java & Kotlin quickstart for the copy-paste version in both languages.

What you'll notice first

Stocks, options, mutual funds, and live market status. One dependency, built for production from day one. The parts we're proudest of are the ones that quietly keep you out of trouble:

  • The compiler catches mistakes the API used to. The options chain has parameters that look combinable but conflict server-side. We model them as sealed types, so picking two by accident is a build error, not a silent, wrong result you discover in production.
  • Your data never turns into silent zeros. The decoder is strict: if the API drops a field you asked for, you get a clear ParseError, not a 0 that quietly flows into your P&L. Fields that are legitimately empty come back as honest nulls.
  • One SDK, idiomatic in two languages. Every public type is null-annotated, so Kotlin sees real nullable / non-null types and property syntax. No Kotlin artifact, no coroutines dependency, no platform-type surprises.
  • Sync and async on every endpoint. Each call has a blocking form and a CompletableFuture form (bridge it to a Kotlin coroutine with await()), sharing one async-first path for validation, retries, and rate limiting.
  • It handles the heavy requests for you. Ask for years of intraday candles and the SDK auto-splits the range into year-sized slices, fetches them concurrently, and merges them back into one series. Multi-symbol calls are dispatched the optimal way for each endpoint.
  • Reliability you don't have to wire up. Automatic retries with exponential backoff, Retry-After honored, a status check before retrying so it won't hammer a service that's already down, and rate-limit tracking at both the client and per-response level.
  • Built for the support ticket you hope you never file. Every error extends a sealed MarketDataException carrying the request ID, URL, status, and timestamp, plus a getSupportInfo() that formats it all, ready to paste.

Zero-config to first call: drop in MARKETDATA_TOKEN and go. Output as typed objects, JSON or CSV, trimmed to just the columns you need. Runs on JDK 17, 21, and 25, and it's on Maven Central today as app.marketdata:marketdata-sdk-java.

Also This Month

We're adding server capacity in a second datacenter and preparing our platform to run across both, removing our remaining single point of failure.

  • In June, our primary datacenter's network transit provider was hit by a DDoS attack. The second location is our answer: once we're running across both, a network outage at one site won't take down the API.
  • This work is in progress now and is expected to come online at some point in July. We'll let you know when it's live.
May 2026

May 2026

JAVASCRIPT SDK RELEASED

We’re thrilled to announce the official release of the Market Data JavaScript SDK, built to make working with U.S. market data faster, safer, and more efficient for JavaScript and TypeScript developers.

This SDK is designed to reduce integration time and operational friction, so you can focus on research, analysis, and production systems instead of plumbing.

Key Features

Type safety and runtime validation: the JavaScript SDK ships full TypeScript declarations for every endpoint, parameter, and response shape, so autocomplete works out of the box in any modern editor. Every request and response is also validated at runtime via Zod, so malformed payloads surface as typed errors instead of silent corruption.

  • Flexible output formats: Choose the format that best fits your workflow: typed objects, human-readable strings, raw JSON, or CSV. Chainable .save(path) and .blob() helpers let you stream a CSV straight to disk or get a Blob without any extra plumbing.
  • Predictable error handling: A structured error hierarchy (ValidationError, RateLimitError, RequestError, AuthenticationError, and more) lets you catch exactly what you mean with a normal try/catch. Every public method returns a familiar throwing Promise, so the SDK feels idiomatic alongside fetch and any other JS library you already use.
  • Built-in reliability: Automatic retries with exponential backoff handle transient API issues transparently. The SDK also checks API status before retrying to ensure efficient and reliable data access.
  • Automatic rate-limit awareness: The SDK tracks usage and validates requests to help prevent rate-limit violations before they occur, reducing unexpected interruptions.
  • Full options coverage: Pull full chains with greeks and IV, look up OCC symbols from human-readable input, or filter by expiration, strike range, delta, bid-ask spread, open interest, and volume directly at request time, with no custom post-processing required.
  • Flexible date inputs: Pass JavaScript Date objects, ISO strings, or Unix timestamps. All inputs are normalized automatically, and long historical ranges are split into chunks and fetched concurrently behind the scenes.
  • Examples library: Runnable charting examples for Lightweight Charts, Apache ECharts, Chart.js, Plotly, and Highcharts Stock, plus a live options-chain monitor terminal, so you can clone, install, and have working charts in under a minute. Our team will continue expanding this library over time.
  • Production-ready by design: Dual ESM and CommonJS builds (the same import works for import and require), comprehensive validation, structured logging, and a global concurrency pool that prevents accidental hammering on large fan-outs, suitable for research notebooks and live trading systems alike.
  • Best-in-class documentation: Comprehensive, precise documentation covers every endpoint, parameter, and return type, with clear explanations and examples. It’s continuously maintained alongside the SDK to stay accurate as the platform evolves.

2 Minute Tutorial

Getting started with the Market Data API is easy. Use the Swagger user interface to begin testing your requests and see how easy it is to get up and running.

April 2026

April 2026

We're Cutting Sheets Pricing

We're thrilled to announce a major price cut for Google Sheets users. As of April 29, 2026, repeat Market Data formulas in your spreadsheet bill 0 credits. That makes the typical live dashboard up to 50× cheaper to run.

Build the dashboard you actually want, instead of the dashboard your daily quota lets you afford.

Key Features

A formula in any cell costs 1 credit the first time it runs that day. Every recalc after that is free. Sheet refreshes, Google's automatic recalcs, anything else that triggers a re-run: 0 credits. The counter resets at the opening bell, right alongside your daily credit allowance.

  • Massive savings for live dashboards: A 100-cell dashboard that refreshes 50 times an hour used to cost 5,000 credits an hour. It now costs 100 credits a day.
  • Your quota is now a formula budget: Free users can run 100 formulas. Starter users can run 10,000. Build to the size of your plan, not to the size of Google's recalc loop.
  • Tab renames don't double-bill: We match on sheet ID and cell coordinate, not tab name. Reorganize your workbook freely.
  • Automatic for everyone: No setting to flip, no plan upgrade required. Live on every plan, starting now.

One-click Refresh From The Menu

Refreshing your sheet just got a lot easier. Two new menu items live under Extensions → Market Data: Refresh Current Sheet rebuilds every Market Data formula on the active sheet, and Refresh Current Sheet Errors re-pulls only the cells that returned an error. No sidebar required, no waiting on a panel to load. Formulas now also run without the sidebar open at all, so scheduled triggers and shared dashboards work even when end users never touch the add-on UI. With the new free recalcs, any broken cell on your dashboard is a one-click, zero-cost fix.

Also this month:

  • Every API error now ships with a numeric code in the cell (e.g. [ERROR-402], [ERROR-404]) for faster troubleshooting and support tickets.
  • Removed the "All sheets" refresh option, which was hitting Google's per-execution time limits.
  • Updated the Help link to the new docs home at https://marketdata.app/docs/sheets/
February 2026

February 2026

PHP SDK UPGRADE

We're excited to announce the official v1.0.0 release of the Market Data PHP SDK, built for independent traders and developers who want U.S. market data running fast without fighting integration complexity.

This release is about reducing setup friction and day-to-day maintenance, so you can spend more time building strategies, scanners, dashboards, and automated workflows.

Key Features

Bring real-time and historical U.S. stocks and options data into your PHP projects with a single dependency. v1.0.0 includes what you need for serious production use: fast endpoints, reliable behavior under load, clear error reporting, and simple environment-based configuration.

  • Strict typing and early guardrails: Built for modern PHP (8.2+), the SDK uses strict typing and typed response models to catch mistakes earlier and make IDE workflows faster with clearer autocomplete and signatures.
  • Flexible output formats: Choose the output format that fits your workflow: typed PHP response objects, JSON, or CSV, with no need to redesign your integration.
  • Predictable error handling with support-ready context: The SDK provides a clear exception hierarchy (UnauthorizedException, BadStatusCodeError, RequestError, and a shared MarketDataException base), plus request IDs, timestamps, and request URLs to speed up debugging and support tickets.
  • Built-in reliability: Automatic retries with exponential backoff handle transient failures, and the SDK checks API status before retrying to avoid unnecessary requests.
  • Advanced options filtering: Filter options chains at request time by expiration profile, strike range, delta ranges, spread constraints, open interest, volume, and AM/PM settlement preferences.
  • Flexible date and cache controls: Work with practical date/time inputs and control cache freshness with maxage when using cached mode, enabling lower-cost data strategies with explicit freshness boundaries.
  • Zero-configuration startup: Get started immediately using MARKETDATA_TOKEN from environment variables or .env, while still supporting explicit constructor-based configuration for production deployments.
  • Production-ready architecture: The SDK includes PSR-3 logging support, robust retries, structured exceptions, and broad test coverage across PHP 8.2, 8.3, 8.4, and 8.5.

Also this month: Bug fixes for both Sheets and the API.

  • Fixed a bug that caused new users of Sheets to silently fail when opening the Market Data sidebar due to a permissions issue.
  • Began work on dividend-adjusted candles. Hopefully coming early March!
  • Fixed a bug that caused users to get cached mode even when not requested.
January 2026

January 2026

PYTHON SDK RELEASED

We’re thrilled to announce the official release of the Market Data Python SDK, built to make working with U.S. market data faster, safer, and more efficient for Python developers.

This SDK is designed to reduce integration time and operational friction, so you can focus on research, analysis, and production systems instead of plumbing.

Key Features

Type safety and early validation: Built on Pydantic, the SDK validates inputs before requests are sent. This provides strong typing, editor autocomplete, and clearer feedback during development, all designed to help you catch issues earlier in the lifecycle.

  • Flexible output formats: Choose the format that best fits your workflow: pandas or polars DataFrames, typed Python objects, JSON, or CSV. Switching formats requires no changes to your core logic.
  • Predictable error handling: Instead of raising exceptions, the SDK returns structured error results. This allows for cleaner control flow and more robust handling in automated and production environments.
  • Built-in reliability: Automatic retries with exponential backoff handle transient API issues transparently. The SDK also checks API status before retrying to ensure efficient and reliable data access.
  • Automatic rate-limit awareness: The SDK tracks usage and validates requests to help prevent rate-limit violations before they occur, reducing unexpected interruptions.
  • Advanced options filtering: Filter options chains by expiration type, strike ranges, delta, bid-ask spread, open interest, and volume directly at request time—no custom post-processing required.
  • Flexible date inputs: Use Unix timestamps, ISO strings, or spreadsheet-style dates. All inputs are normalized into Python datetime objects automatically.
  • Zero-configuration startup: Sensible defaults allow you to install and start immediately. Configuration via environment variables or parameters is supported when needed, but never mandatory.
  • Production-ready by design: Modern Python best practices, full type hints, comprehensive validation, and structured logging make the SDK suitable for research notebooks and live systems alike.

Also this month: We added a new relative date keyphrase for both Sheets and API: last session

  • This returns the date of the last closed market session. This keyphrase always gets the previous closed session, accounting for weekends, holidays, and half-days (which are counted as valid sessions).
  • For example, on Monday during market hours, it would return Friday's date. After market close on Monday, it would return Monday's date.
  • This allows you to always track the previous trading session without having to account for weekends, holidays, or other market closures in your formulas or API requests.
September 2024

September 2024

MARKET DATA PHP SDK

Great news for PHP Developers! We're thrilled to announce the beta release of the official Market Data PHP SDK! This SDK provides php developers access to our real-time and historical data APIs, making it easier than ever to build innovative server-side financial applications using PHP.

Key Features

  • Comprehensive Data Coverage: Retrieve data on stocks, options, mutual funds, and more.
  • Flexible API Endpoints: Leverage a wide range of API endpoints to fetch quotes, candles, earnings, news, and other essential financial data.
  • Parallel Execution: Maximize efficiency by executing multiple API requests in parallel, reducing response times and improving overall performance.
  • Universal Parameters: Easily switch between JSON and CSV response formats to suit your specific needs.
  • Robust Error Handling: The SDK includes a custom ApiException class to handle API errors, providing you with detailed information to troubleshoot issues.
  • Extensive Documentation: The documentation covers every part of the SDK, so the integration goes quickly.

Use The SDK

Its very easy to get started quickly! Simply install the package via Composer:

composer require MarketDataApp/sdk-php

  • Open Source: The SDK is open source, and we encourage you to contribute to its development. Whether it's adding new features, fixing bugs, or enhancing documentation, all contributions are welcome. You can find the source code on GitHub.
  • Ease of Use: Eliminate the need to manage low-level API interactions, allowing you to focus on building your core application features.
  • Comprehensive Coverage: The SDK supports all our v1 endpoints, ensuring you have access to the extensive data you need to power your applications.
  • Community and Support: Join our community on Discord and X, and reach out to our helpdesk for any support inquiries.

We are excited for you to try the PHP SDK and look forward to your feedback and contributions. Together, we can make each of the Market Data SDKs an invaluable resource for the financial developer community.

We also finished this month:

  • API: Added am/pm filtering for options/chain endpoint.
  • API: Added the ability to filter real-time expirations for options/chain endpoint.
  • API: Change/changepct now works during extended hours trading.
February 2024

February 2024

MARKET DATA GO SDK

Big news! We're rolling out our first-ever Software Development Kit (SDK) - say hello to the Market Data Go SDK v1.1! This is just the start for us at Market Data. We're on a mission to make your life easier with a suite of SDKs designed to simplify and enhance your experience with our API. The Go SDK is the first to be released, with a Python SDK already in the pipeline. This is our way of signaling our commitment to supporting a wide range of programming languages and developer needs. We're excited to see what you build with our SDKs, and we can't wait to hear your feedback.

The Go SDK for Market Data is built to integrate with our financial data API in a few lines. Here are some key features and benefits:

  • Open Source: The SDK is open source, and we encourage you to contribute to its development. Whether it's adding new features, fixing bugs, or enhancing documentation, all contributions are welcome. You can find the source code on GitHub.

  • Ease of Use: With the Go SDK, you can start fetching real-time and historical financial data with minimal setup. The SDK abstracts away the complexities of direct API calls, providing you with simple, method-based access to our data.

  • Comprehensive Coverage: The SDK supports all our v1 endpoints, ensuring you have access to the extensive data you need to power your applications.

  • Debugging Made Simple: Debug mode can be activated to log all requests, helping you troubleshoot and understand the SDK's operations with ease.

  • Extensive Documentation: The SDK comes with full documentation to help you get started and make the most of its features. You can find the documentation on our Go Documentation Portal and on GoDoc.

  • Community and Support: Join our community on Discord and Twitter, and reach out to our helpdesk for any support inquiries.

FUTURE PLANS

The release of the Go SDK is just the beginning. We are already working on a Python SDK, and more languages will follow, ensuring developers have the tools they need in their preferred programming environment.

We are excited for you to try the Go SDK and look forward to your feedback and contributions. Together, we can make the Market Data SDKs an invaluable resource for the financial developer community.

We also finished this month:

  • API: Bugfixing for bulk quotes / bulk candles.
  • Sheets: Stockdata bug fixes.