Ligang Yan颜力刚

Can You Store It, Show It, Sell It? What the Terms of 29 Market Data Sources Allow

I read the terms pages of 29 US market data sources. Ten let you store, show and commercially use their data, and every one of those is public-domain data. None of the nine price APIs lets you show prices to your users on a self-serve plan.

investingmarket-datadata-licensingsec-edgarquant

A grid of 29 market data sources against four questions: store, show to users, commercial use and point-in-time. The government column is mostly green, the price API column mostly amber and red.

29 US market data sources, checked against their own terms pages on October 19, 2026. Ten say yes to storing, showing and commercial use, all of them public-domain data. None of the nine commercial price APIs allows display to your users on a self-serve plan. Full list and sources: awesome-market-data.

In early October I needed a risk-free rate for the valuation models on SweetValueLab, my free stock valuation site. The obvious source was FRED, the St. Louis Fed’s database, which every finance tutorial points to. Before wiring it into the nightly job, I read its terms. Among the prohibited uses is “storing, caching, or archiving” FRED content. That rules out the one thing a nightly pipeline does. The 10-year yield I wanted is published by the Treasury itself, with no such restriction, so that is where the number now comes from.

That small detour made me wonder how many other sources I had used without reading the terms. So I read them, for every US market data source I had used or considered, 29 in all, and wrote the answers into an open list, awesome-market-data. This post is what I found. It starts with the four questions I asked of each source, then goes through the three groups the answers fall into, and ends with the question most lists skip: whether the data tells you when each number was known.

Four questions a terms page answers and a pricing page doesn’t

Pricing pages tell you how many calls you get. They rarely tell you what you may do with the response. I asked each source four questions.

Question What it means in practice
Store May I keep the data in my own database after the request ends, or only use it and let it go?
Show to users May I display it to other people, or publish files built from it? Lawyers call this redistribution.
Commercial use May a product that makes money use it, even indirectly through ads?
Point-in-time Does each value say when it became known, so a backtest can avoid using numbers that were revised later?

The first three are legal questions. The fourth is a data-quality question, but it decides whether the data is usable for research at all, so I kept it in the same grid.

Each answer is one of yes, no, “with conditions” or “the terms don’t say”. I only counted a yes when the terms page says it. Where a page is silent, it stays a question mark, even when I suspect the honest answer is yes.

Government data: 9 of 13 agency sources clear all three

Works of the US federal government are not covered by copyright (17 U.S.C. §105), and most agencies say so on their own sites. The SEC’s policy is the plainest version: “Information presented on sec.gov is considered public information and may be copied or further distributed by users of the web site without the SEC’s permission” (SEC privacy and security policy).

Nine of the agency sources, plus OpenFIGI, come out with a yes on store, show and commercial use:

Source What you get Strings attached
SEC EDGAR APIs Every filing and every XBRL financial fact A User-Agent with your email; 10 requests per second
SEC Financial Statement Data Sets The same facts as quarterly bulk files, from 2009 None beyond the User-Agent
SEC Form 13F data sets Institutional holdings from 2013 CUSIPs only, no tickers
SEC fails-to-deliver Settlement fails by security from 2004 None
SEC ticker map Ticker to CIK to company name Current snapshot only
Treasury par yield curve Daily yields, 1 month to 30 years, from 1990 No license stated at all; public domain by statute
Treasury Fiscal Data Debt, daily Treasury statements, auctions An explicit open license
BLS CPI, payrolls, unemployment Cite BLS; don’t present modified data as theirs
BEA GDP and the national accounts A required “not endorsed by BEA” notice
OpenFIGI Ticker, CUSIP and ISIN to FIGI mapping Run by Bloomberg, but the identifiers are dedicated to the public domain

The four agency sources that don’t clear all three are more interesting than the nine that do. The Federal Reserve Board is the mild case: its data is public domain, but it asks to be cited and excludes material it took from other publishers, so it shows as “with conditions”. The other three are real exceptions.

FRED is run by a Federal Reserve bank, but it is an aggregator. Its 2024 terms ban storage for every series, including ones that are public domain at their source, and its general license is personal and non-commercial. Its older API terms page (docs/api/terms_of_use.html) lacks the storage clause; the binding text is the newer one. The practical rule I took from this: when FRED republishes a Treasury, BLS or BEA series, fetch it from the agency instead.

The Chicago Fed’s NFCI, a weekly financial conditions index, is copyrighted. The bank’s legal notices allow reproduction with credit and not for commercial gain; anything else needs written permission. The notices talk about written materials and never mention data series, so storage stays a question mark.

FINRA’s short interest and short volume files surprised me most. FINRA is a regulator, so I assumed its data was public. It isn’t. The website terms limit use to your own non-commercial purposes and rule out building a database from the site. The API terms for equity data allow redistribution only free of charge, non-commercially and with FINRA credited.

One more agency note. The Federal Reserve Board posted a notice dated July 16, 2026 that its Data Download Program is being retired. If you have saved its direct-download URLs in a script, they will likely break.

Price APIs: 0 of 9 let you show the data on a self-serve plan

This is the finding that matters most if you are building anything public. I looked at nine sources of US stock prices and fundamentals: Financial Modeling Prep, Alpha Vantage, Finnhub, Tiingo, Massive (Polygon.io until October 2025), Twelve Data, Nasdaq Data Link, Yahoo Finance through yfinance, and Stooq. None of them gives a plain yes to showing their data to other people on the plans you can sign up for with a credit card.

The wording varies, but the structure is the same everywhere. What you buy with a self-serve plan is access for yourself. Display rights are a separate product.

Source Free tier Self-serve plans are licensed for Showing data to users
Financial Modeling Prep 250 calls/day Personal, non-commercial use Needs a separate data display agreement; no public price
Alpha Vantage 25 calls/day Personal use, paid plans included Needs a written agreement
Finnhub 60 calls/min Personal use Needs written approval, which covers derived results too
Tiingo 1,000 calls/day Personal ($30/month) or internal business ($50/month) Display licenses from $250/month
Massive 5 calls/min Personal, non-business use Banned for derived charts and analytics as well; business plans are separate
Twelve Data 800 credits/day Free tier: no commercial use A business tier or a redistribution add-on
Nasdaq Data Link Free datasets only Internal business use Barred unless the order form says otherwise
yfinance Unofficial Yahoo bans automated collection outright No
Stooq Free downloads Personal use only No

Self-serve terms as of October 19, 2026. Prices are the cheapest listed plan for each use; see each vendor’s terms page (linked) for the exact wording.

Three details in that table are easy to miss.

First, paying doesn’t change the license. Alpha Vantage’s terms apply the personal-use limit to premium plans as well. A $50-a-month Finnhub plan is still a personal plan.

Second, “derived” data is usually covered. Massive’s market data terms extend the display ban to charts and analytics derived from its data. Tiingo’s terms, updated on October 6, 2026, count derived series that can be reverse-engineered (a chart rebased to 100, a P/E built from a Tiingo price) as Tiingo data. So computing a ratio from the price doesn’t make the result yours.

Third, Tiingo’s free plan now forbids keeping its data in any persistent storage at all. Paid plans may store while subscribed and must delete everything, backups included, when you cancel. Finnhub and Massive have similar delete-on-termination clauses. If you build a database on a vendor plan, you are renting it.

Why is the pattern so uniform? My guess, and it is only a guess, is that prices originate at the exchanges, which charge their own fees for display, and vendors pass that structure through to their terms. Fundamentals don’t have that excuse, but they are sold on the same plans.

Free is not the same as public: Cboe, Nasdaq and Wikipedia

Some of the most-used free files are personal-use only. Cboe’s VIX history CSV is one download link, but Cboe’s terms allow one copy for personal, non-commercial use and require a signed license for anything else. Nasdaq’s symbol directory files and the undocumented api.nasdaq.com endpoints behind nasdaq.com are in the same position.

Wikipedia’s index constituent tables are a different case. They are CC BY-SA, so you may republish a list built from them, but with attribution and under the same license. The S&P 500 itself, and its classifications, belong to S&P Dow Jones Indices.

Point-in-time: only 2 of 29 pass all four questions

The fourth question is the one that bites in research. A backtest that uses a revenue figure from a 10-K/A filed in 2024 to make a decision dated 2022 is looking into the future, and its results will be better than anything you could have achieved. To avoid that, every value needs a timestamp for when it became known.

Only two sources answer yes to store, show, commercial use and point-in-time: the SEC’s EDGAR APIs and its Financial Statement Data Sets. Every XBRL fact carries the accession number of the filing that reported it, and the bulk sets record each filing’s acceptance timestamp.

Even there, there is a trap I fell into. In EDGAR’s company facts, a value’s filed date is the filing that reported it, and for older years that is often a later 10-K’s comparative column. A fiscal 2023 cash flow figure can carry a filing date in February 2026. If you want the date the number was first known, take the earliest filing for each period end, and check it lands within about 120 days of the period.

The other sources fail the test in different ways:

  • Overwritten rows. Commercial APIs typically keep one row per period. Financial Modeling Prep’s annual statements appear on earnings-release day, before the 10-K, sometimes with zeros for lines the press release left out, and the row is later replaced. Massive’s filing_date is documented as the most recent filing that included the period, which can be years after the first.
  • Revised history. The Chicago Fed revises the entire NFCI history every week. Ken French’s factor library is rebuilt every month from CRSP, and from the January 2025 release the monthly returns follow CRSP’s new format, so old downloads don’t match new ones.
  • No history at all. The Fed Board states that pre-revision data is not available in its download program. BLS and BEA serve the latest estimates only.

The best free real-time macro source is ALFRED, FRED’s vintage archive, which can return a series as it looked on any past date. It has the same terms as FRED, including the ban on storing what it returns.

The case for ignoring all of this, and why I don’t

There is a reasonable argument for not reading terms pages. Vendors rarely sue small developers, half the open-source finance tools on GitHub call yfinance, and terms that forbid “storing” a stock price you could read off a newspaper sound unenforceable. Some of them may well be. A list of facts is thin ground for copyright in the US, and I have no idea how a court would treat a P/E ratio built from a licensed price.

The argument for reading them is less about lawsuits. Terms decide what happens when something goes wrong. A vendor can cut off a key that feeds a public page, and the clause that lets them is usually in the terms. A plan lapse can look like rate limiting: one night in September, every call to a vendor returned HTTP 429 because a subscription had expired, and the logs looked exactly like a throttling problem. And the delete-on-cancellation clauses mean that the database you built is only yours while you keep paying.

If I were starting a data product today, I would treat the public-domain sources as the foundation and everything else as rented: fundamentals from EDGAR, rates from the Treasury, macro from BLS and BEA directly, identifiers from OpenFIGI. Prices are where a vendor is usually unavoidable. That is the line item I would budget for from the first day, at display-license prices.

The list, and how to correct it

The full list is at github.com/allenyan513/awesome-market-data. It covers the 29 sources above, two of my own projects (marked as such), five vendor MCP servers for AI agents, and one tombstone: IEX Cloud, which shut down on August 31, 2024 and still appears in tutorials. Each entry links the terms page its answers came from and the date it was read. sources.json has the same data for scripts.

Terms change, and I will have read some of them wrong. Tiingo’s changed thirteen days before I read it. If you know better, an issue with a link to the evidence is the most useful contribution the list can get.

None of this is legal advice. It is one developer reading terms pages carefully and writing down what they say.

Sources and data

All pages read on October 19, 2026.