Twelve Data
Financial market data API covering stocks, forex, ETFs, and mutual funds with real-time and historical data.
Status
🟢 Online · 354 ms
🟢 Online · 354 ms
30-day uptime
100%
100%
Free tier
800 calls/day, free key, no credit card
800 calls/day, free key, no credit card
Auth
API key
API key
Free alternatives (live ranking)
- European Central Bank Rates — 🟢 Online · Unlimited, no key, no credit card
- Frankfurter — 🟢 Online · Unlimited, no key, no credit card
- Fixer.io — 🟢 Online · 100 calls/month, EUR base only, free key, no CC
Compare Twelve Data with…
- Twelve Data vs European Central Bank Rates — Unlimited, no key, no credit card
- Twelve Data vs Frankfurter — Unlimited, no key, no credit card
- Twelve Data vs Fixer.io — 100 calls/month, EUR base only, free key, no CC
Paid alternatives
- Twelve Data Grow — from $29/mo
Frequently Asked Questions
Does Twelve Data require an API key?
Yes, Twelve Data requires a free API key. You can sign up via https://twelvedata.com/docs.
What is Twelve Data's free tier?
800 calls/day, free key, no credit card
Is Twelve Data currently online?
We check Twelve Data every hour. The current status is shown at the top of this page. You can also see the 30-day uptime history in the chart above.
Implementation notes
When to use Twelve Data
Twelve Data offers the most generous free tier for financial market data at 800 calls/day. It covers US and international stocks, ETFs, mutual funds, forex, and some crypto with historical OHLCV data, making it the best starting point for equity data projects before you need to upgrade.
Common pitfalls
- The 800 calls/day free limit sounds generous, but each call to the `time_series` endpoint counts as one call regardless of how many data points it returns. A 30-day daily OHLCV series for one symbol costs one call; fetching 50 symbols for a portfolio costs 50 calls.
- The `apikey=demo` parameter in examples only works for the specific symbol and interval shown in the documentation. Using `demo` with any other symbol returns a cached IBM or AAPL response, not an error — which can cause subtle bugs in code that checks only for HTTP errors.
- Real-time prices (`price` endpoint) return the current ask price for stocks when the market is open, and the most recent close when the market is closed. The response does not include a field indicating whether the market is currently open.
- International exchanges require the `:EXCHANGE` suffix on the symbol (e.g., `VODAFONE:LSE` for London Stock Exchange). Without it, the API defaults to the US market and either returns a 400 error or a different instrument entirely.
Quick start (bash)
curl "https://api.twelvedata.com/time_series?symbol=AAPL&interval=1day&outputsize=30&apikey=YOUR_KEY" Embed this badge
Add a live status badge to your README, docs, or website.
Markdown
[](https://freeapi.watch/twelve-data) HTML
<a href="https://freeapi.watch/twelve-data"><img src="https://freeapi-builder.a10ayassine.workers.dev/badge/twelve-data.svg" alt="Twelve Data Status"/></a>