API guide

Free stock API: what free tiers really include, and their limits

Every free tier is a trade. The provider gives you data, and the limits decide what you are allowed to build with it, so read them before you write the integration.

On this page
  1. The five kinds of free stock API
  2. The limits that decide what you can build
  3. Licensing: the limit free tiers do not advertise
  4. What the TickerLayer free tier includes
  5. Test a free stock market API in five minutes
  6. When to move off a free tier
  7. Questions

Key takeaways

  • A free stock API trades money for limits: a request cap, a rate limit, often delayed or end-of-day data, a smaller symbol list and a license that rarely covers commercial display.
  • The request cap decides your architecture: 3,000 requests a month is about 100 a day, plenty for end-of-day work on dozens of symbols and far too little for polling a live screen.
  • Display rights matter more than price: most free data may be used for your own research but not shown to other people in a commercial product.
  • TickerLayer's free tier includes 3,000 REST requests a month with no card; WebSocket streaming comes with paid plans, and free accounts can request a trial from the dashboard.
  • You can test any free stock market API in five minutes: make one request, read the rate-limit headers, and check the error you get for a malformed symbol.

A free stock API is a stock data service you can call without paying, in exchange for limits: a monthly or daily request cap, a rate limit, often delayed or end-of-day prices, a narrower symbol list, and a license that usually allows personal use but not commercial display. TickerLayer's free tier is 3,000 REST requests a month with no card, on the same stock API routes paid plans use.

Lists of "the best free stock APIs" go stale within a year because vendors change their quotas. The categories do not change. This guide sorts free tiers into the types you will actually meet, shows how to do the arithmetic on a quota, covers the licensing questions most comparisons skip, and ends with a five-minute test you can run against any provider.

The five kinds of free stock API

TypeWhat you getTypical catchGood for
End-of-day onlyDaily open, high, low, close and volume after the sessionNothing intraday; yesterday is the newest barBacktests, nightly reports
Delayed intradayQuotes and bars 15 minutes or more behindCannot drive anything that acts on the current priceCharts, teaching, prototypes
Real-time with a small quotaCurrent prices over REST, a few thousand calls a monthThe cap runs out fast if you pollIntegration work, low-frequency tools
Time-limited trialA paid plan for a week or twoIt ends, usually just as you depend on itLoad tests, evaluation
Unofficial scraping libraryWhatever a public web page showsBreaks without notice; no right to redistributeOne-off personal analysis
Categories, not vendors. Many providers mix two of them, such as a small real-time REST quota plus delayed prices on their website.

The last row deserves a warning of its own. Libraries that read prices out of public finance websites are free and convenient until the page layout changes, the site starts rate-limiting your IP, or someone asks where the numbers came from. They are fine in a notebook. They are a liability in anything that runs unattended or that other people rely on.

TickerLayer sits in the third row: REST requests on the same endpoints as paid plans, capped at 3,000 a month, with no end date. The pricing page heads it "Free tier always available", and every new account starts on it.

The limits that decide what you can build

  • Request quotaA monthly or daily cap on calls. It sets how many symbols you can track and how often you can ask.
  • Rate limitCalls per second or per minute. Bursts at the open, or on a page that loads ten tickers at once, hit it first.
  • DelayReal-time, 15 minutes behind, or end-of-day. Delayed prices are fine for charts and wrong for alerts.
  • Coverage and historyUS only or other markets too, and how many years of bars. Free tiers are often vague about both.
  • StreamingWebSocket access is the feature free tiers most often leave out.
  • LicensePersonal use, internal use, or display to other people. The most expensive limit to discover late.

The quota is the one to do arithmetic on, because polling is expensive. Every REST request is one symbol at one moment, so the monthly cost of a polling loop multiplies quickly:

requests per month = symbols × polls per hour × hours per day × trading days

symbols
Each symbol is its own request.
polls per hour
12 if you refresh every five minutes, 60 if every minute.
hours per day
6.5 for a regular US session.
trading days
About 21 in a month.
10 symbols every 5 minutes through the US session: 10 × 12 × 6.5 × 21 = 16,380 requests. A 3,000-request tier covers about 18% of that.

Polling budget calculator

sec
Requests per second
2.00
Requests per day
57,600
Requests per month
1,267,200
Smallest plan that fits
Business
  • Free422×
  • Individual507%
  • Business5%

One request per symbol per poll. A WebSocket subscription replaces all of these requests with one connection. Quotas are listed on pricing; per-second limits are in the X-RateLimit-Limit header.

Plug in your own symbols and interval to see how fast a quota goes.

The same quota goes a long way once you stop polling prices and start asking for bars. A single call to the aggregates route returns up to 5,000 bars per page, so a year of daily history for one symbol (about 252 bars) is one request. Fetch history once, store it, and spend one request per symbol per day on the newest bar with GET /stocks/agg/{symbol}/prev.

Fits in 3,000 requests a month

  • The daily close for 100 symbols: 2,100 requests
  • A year of daily bars for 50 symbols, fetched once: 50 requests
  • Five symbols refreshed hourly through the US session: about 735 requests
  • Your integration tests and a staging environment

Does not fit

  • Ten symbols polled every five minutes: 16,380 requests
  • A live ticker on a public website
  • Backfilling minute bars for hundreds of stocks
  • Anything that must react to every trade
Worked from the formula above, with 21 trading days in a month.

Licensing: the limit free tiers do not advertise

Price data is licensed, not sold. The organizations that produce it charge differently depending on who sees the numbers and what they are used for, and every data provider passes those terms down to you. Three distinctions decide whether a free tier fits your project:

  • Display versus non-display. Showing prices to a person on a screen is display. Feeding them to an algorithm, a risk model or a calculation that nobody looks at is non-display. Many licenses price and permit the two differently.
  • Personal versus commercial. Using data for your own research is almost always allowed. Showing it to customers, subscribers or the public usually is not, on free tiers and on many personal paid plans too.
  • Redistribution. Passing raw prices on to someone else, through your own API, a file export or an embeddable widget, needs explicit rights. Derived numbers such as an indicator or a ranking are sometimes treated differently, but read the terms instead of assuming.

Usually fine on a free tier

  • Your own research notebook
  • A private dashboard only you log in to
  • Building and testing an app before launch
  • Coursework and tutorials

Usually needs a commercial license

  • Prices shown to paying customers
  • A public website ticker or widget
  • Re-serving raw prices through your own API
  • A trading tool other people use
General patterns, not legal advice. The provider's terms decide.

TickerLayer says this on its pricing cards: Individual plans are for personal or research use, and Business plans include commercial use. The public symbol pages on this site show prices 15 minutes delayed, while the API serves live data to entitled keys (latency varies by stock market). If you are unsure where your project falls, read the terms of use before you ship, not after a customer asks.

What the TickerLayer free tier includes

  • 3,000REST requests a month
  • 10requests per second
  • $0and no card to start
Free tier defaults as the pricing page and the limits documentation state them.
  • REST access with the x-api-key header, on the same routes and JSON shapes as paid plans.
  • Symbol discovery (GET /stocks/symbols, POST /symbols/coverage) and market status, sessions and holidays under /markets.
  • The MCP server for AI agents, which is included with every plan, the free tier among them.
  • No WebSocket by default: streaming comes with paid plans, and free accounts can request a trial from the dashboard.

Which markets a key reaches is a property of the key, and the API will tell you: GET /stocks/symbols?market=US lists the stocks your key can use, and the coverage checker marks each symbol with the access it needs. A request rejected by the per-second limit does not count against the month, because rate limits are checked first. The limits documentation has the current defaults.

What running out looks like

{
  "error": "REST_QUOTA_EXCEEDED",1
  "message": "monthly REST quota exceeded",
  "limit": 30002
}
  1. errorMachine-readable code. The per-second variant is REST_RATE_LIMIT_EXCEEDED.
  2. limitYour monthly allowance.
HTTP 429. A per-second 429 carries a Retry-After header; a quota 429 does not, so retrying it in a loop only wastes time.

Handle the two 429s differently: sleep and retry the per-second one, stop and alert on the monthly one. The 429 Too Many Requests guide covers both in depth.

How to make 3,000 requests last

  • Ask for bars, not prices. One aggregates request returns a whole range; a price request returns one moment.
  • Cache per render, not per visitor. If a page shows a price, fetch it once per minute on the server and serve every visitor from that copy.
  • Skip closed markets. GET /markets/status?asset=stocks&market=US returns next_open and next_close, so a job can sleep until the session starts instead of polling a closed market all weekend. Note that is_open is also true in pre-market; check status equals open for the regular session.
  • Read closes from prev. GET /stocks/agg/{symbol}/prev returns the last completed daily bar (with the official close for US stocks), one request per symbol per day.
  • Normalize symbols once. Run your ticker list through the coverage checker a single time and store the qualified symbols, instead of retrying guesses.

Test a free stock market API in five minutes

  1. Create an accountSign up and copy the key from the dashboard. The free tier needs no card.
  2. Export the keyKeep it out of source code: set TICKERLAYER_API_KEY in your shell or secrets manager.
  3. Make one requestFetch a snapshot and look at the timestamps, not only the price.
  4. Read the headersx-ratelimit-limit and x-ratelimit-remaining show your per-second budget.
  5. Break it on purposeAsk for KO without a market prefix and confirm you get a clear 400, not a guess.
five-minute-test.shShell
export TICKERLAYER_API_KEY="YOUR_API_KEY"

# 1. A price, with its timestamps
curl -sS "https://api.tickerlayer.com/stocks/snapshot/US:KO" \
  -H "x-api-key: $TICKERLAYER_API_KEY"

# 2. The rate-limit headers only
curl -sS -o /dev/null -D - "https://api.tickerlayer.com/stocks/quote/US:KO" \
  -H "x-api-key: $TICKERLAYER_API_KEY" | grep -i ratelimit

# 3. A deliberate mistake: no market prefix
curl -sS "https://api.tickerlayer.com/stocks/quote/KO" \
  -H "x-api-key: $TICKERLAYER_API_KEY"
Output (header values depend on your plan)
{"symbol":"US:KO","bid":88.11,"ask":88.24,"bid_size":400,"ask_size":1000,"last_price":88.24,"last_timestamp":1790589160160,"prev_close":87.81,"change":0.43,"change_percent":0.4897,"last_size":150}
x-ratelimit-limit: <requests allowed per second>
x-ratelimit-remaining: <requests left this second>
x-ratelimit-policy: <limit>;w=1
{"statusCode":400,"message":"invalid symbol"}

Run the same three checks against every provider on your shortlist. A free tier that returns prices without timestamps, guesses at ambiguous tickers, or hides its limits until you hit them will cost more in debugging than a paid plan costs in money. For the same flow in Python, with retries and a pandas DataFrame, follow the Python stock prices tutorial.

When to move off a free tier

FreeIndividualBusiness
Price$0From $49 a month per feed (US stocks $99)From $449 a month per feed (US stocks $999)
REST requests3,000 a month250,000 a month25,000,000 a month
WebSocketTrial on request1 connection, 10 symbols10 connections, unlimited symbols
UseBuilding and testingPersonal or research useCommercial use included
From the pricing page. Plans are bought per feed, stocks per market; yearly billing takes 20% off. Individual includes 2 years of history, Business 10.

Signs you have outgrown the free tier

  • You poll more than a few symbols during market hours.
  • Other people see the prices, and some of them pay you.
  • You need prices pushed to you over a WebSocket, not pulled.
  • You are about to launch, and the quota would run out in the first week.

If you are comparing providers rather than tiers, the financial data providers guide compares exchange-direct feeds, aggregators and free-tier APIs. Pricing lists every feed and market.

Questions

Is there a completely free stock API?

Yes, several providers offer a free tier, and TickerLayer's includes 3,000 REST requests a month with no card. None is unlimited: expect a request cap, a rate limit and license terms that restrict commercial display.

What is the best free stock API?

The one whose limits fit your use. End-of-day research needs only a modest quota and daily bars; a live screen needs streaming, which free tiers rarely include; a product other people see needs a commercial license whatever the price.

Do free stock APIs provide real-time data?

Some do, within a small quota; many serve delayed or end-of-day prices instead. Compare the timestamp in the response with the clock rather than trusting the marketing page.

Can I use a free stock API in a commercial app?

Usually not. Free and personal plans typically allow private or research use, and showing prices to customers needs a commercial license. On TickerLayer, commercial use is included with Business plans.

How many requests does the TickerLayer free tier include?

3,000 REST requests a month, about 100 a day, at up to 10 requests per second. A request rejected by the per-second limit does not count against the monthly quota.

Is there a free stock API with WebSocket streaming?

Streaming is the feature free tiers most often leave out. TickerLayer's WebSocket comes with paid plans, and free accounts can request a trial from the dashboard.

Keep reading

Ready to integrate?

Start with the free tier, explore the docs, and connect via REST or WebSocket in minutes.