Tiingo
- Free allowance
- Starter plan USD 0/month: 50 requests per hour, 1000 requests per day, 500 unique symbols per month and 1 GB of bandwidth per month; 30+ years of end-of-day price history
- Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- emailno card, no phone
- Binding limit
- request-rate50 requests per hour on Starter; 1000 requests per day on Starter, reset at midnight EST
- Evidence
- documented36 sources; a first-party page was read and the sentence quoted
- Freshness
- stale on 2026-12-04checked 2026-11-03 (live); stale on 2026-12-04
| Free tier | Starter plan USD 0/month: 50 requests per hour, 1000 requests per day, 500 unique symbols per month and 1 GB of bandwidth per month; 30+ years of end-of-day price history unit requests; metered on request-count; Hourly requests reset every hour, daily requests at midnight EST, and monthly bandwidth on the first of the month at midnight EST; there is no per-minute or per-second limit. The News API reaches 3 months of history. The Power plan is USD 30/month (or USD 300/year) for individuals with 10,000 requests per hour, 100,000 per day and 40 GB per month. |
|---|---|
| Price | none stated |
| Limits |
500 unique symbols per month on Starter (no limits kind counts symbols). Bulk path: no bulk path for prices; supported_tickers.zip (805453 bytes, keyless) is a daily ticker list, not prices. |
| Binding | request-rate Pulled steadily, the 1000 per day count binds before the 50 per hour; a burst meets the hourly 50 first. |
| Identity | email Every API call needs a token from an account. The registration form asks for a username, an email, a password entered twice and a terms checkbox, behind a Cloudflare Turnstile check; it has no card field. Card or PayPal is asked only when signing up for a paid plan. |
| Egress | 1 GB of API bandwidth per month on Starter, 40 GB on Power free allowance: 1 GB per month |
| Per-object cap | not stated per call; 1 GB of bandwidth per month bounds the Starter plan |
| Interface | rest GET https://api.tiingo.com/tiingo/daily/<ticker>/prices with the token as ?token= or an Authorization: Token header; JSON or CSV via format=; the documentation also describes a WebSocket API. A call with no token answered HTTP 403. endpoint: https://api.tiingo.com |
| Tooling | curl or any HTTP client; supported_tickers.zip lists every ticker and is updated daily |
| Composes with | Deep end-of-day history (30+ years) at 1000 calls a day for up to 500 symbols a month; it pairs with FRED for macro series. Marketstack's US end-of-day prices are licensed from Tiingo. |
| Reliability | Past the hourly, daily or monthly bandwidth limit the API answers HTTP 429; an end-of-day call past the Starter unique-symbol limit answers HTTP 403. |
| Notes | The widest free end-of-day history of the market data records (30+ years at 1000 calls a day), against two caveats: 500 symbols a month and no persistent storage on Starter. |
| Evidence note | documented The Starter quotas, reset times, storage rule and registration fields are documented on the pricing, documentation and terms pages and in the site's own script bundle. Probes measured that a call with no token answers HTTP 403 and that supported_tickers.zip is served with no key. The 429 and 403 statuses are documented; the bodies and exact reset moments of the cut-offs need a token to measure (unverified: behind a sign-up). |
| Parsed numbers |
|
Evidence 36
| date | source | what it proved |
|---|---|---|
| 2026-10-31 | www.tiingo.com/about/pricing | Starter is USD 0/month against Power at USD 30/month |
| 2026-10-31 | www.tiingo.com/about/pricing | Starter allows 50 requests per hour against 10,000 on Power |
| 2026-10-31 | www.tiingo.com/about/pricing | Starter allows 1000 requests per day against 100,000 on Power |
| 2026-10-31 | www.tiingo.com/about/pricing | Starter covers 500 unique symbols per month |
| 2026-10-31 | www.tiingo.com/about/pricing | Starter has 1 GB of bandwidth per month against 40 GB on Power |
| 2026-10-31 | www.tiingo.com/about/pricing | both plans carry 30+ years of price history |
| 2026-10-31 | www.tiingo.com/about/pricing | the individual paid plan is USD 30/month or USD 300/year |
| 2026-10-31 | www.tiingo.com/about/pricing | the News API reaches 3 months of history |
| 2026-10-31 | www.tiingo.com/about/pricing | not published |
| 2026-10-31 | www.tiingo.com/documentation/general/overview | the API needs an account |
| 2026-10-31 | www.tiingo.com/documentation/general/overview | there is no per-minute or per-second limit |
| 2026-10-31 | www.tiingo.com/documentation/general/overview | hourly requests reset every hour |
| 2026-10-31 | www.tiingo.com/documentation/general/overview | daily requests reset at midnight EST |
| 2026-10-31 | www.tiingo.com/documentation/general/overview | monthly bandwidth resets on the first of the month |
| 2026-10-31 | www.tiingo.com/documentation/general/connecting | the token is passed in the URL or in a header |
| 2026-10-31 | www.tiingo.com/documentation/end-of-day | supported_tickers.zip is a ticker list, not a price file |
| 2026-10-31 | www.tiingo.com/tos | not published |
| 2026-10-31 | www.tiingo.com/tos | not published |
| 2026-10-31 | www.tiingo.com/tos | a card or PayPal account is asked when signing up for a paid plan |
| 2026-10-31 | apimedia.tiingo.com/dist/main-es2015.2c2e67e72a8af52f39de.js | the registration form fields are username, email, password twice, a mailing-list box and a terms box |
| 2026-10-31 | apimedia.tiingo.com/dist/main-es2015.2c2e67e72a8af52f39de.js | registration sends a Cloudflare Turnstile token |
| 2026-10-31 | probe: https://api.tiingo.com/tiingo/daily/aapl/prices | a price call with no token answered HTTP 403 |
| 2026-10-31 | probe: https://api.tiingo.com/tiingo/daily/aapl/prices | the API asks for a token |
| 2026-10-31 | probe: https://apimedia.tiingo.com/docs/tiingo/daily/supported_tickers.zip | the ticker list is served with no key at 805453 bytes |
| 2026-10-31 | marketstack.com/product | Marketstack licenses its US end-of-day prices from Tiingo |
| 2026-11-02 | www.tiingo.com/llms-full.txt | HTTP 429 at the hourly, daily and bandwidth limits |
| 2026-11-02 | www.tiingo.com/llms-full.txt | HTTP 403 on end-of-day calls at the Starter unique-symbol limit |
| 2026-11-02 | www.tiingo.com/llms-full.txt | Starter allows 500 unique symbols a month |
| 2026-11-02 | www.tiingo.com/llms-full.txt | Starter allows 50 requests an hour |
| 2026-11-02 | www.tiingo.com/llms-full.txt | Starter allows 1,000 requests a day |
| 2026-11-02 | www.tiingo.com/llms-full.txt | Starter allows 1 GB of bandwidth a month |
| 2026-11-02 | www.tiingo.com/llms-full.txt | daily requests reset at midnight EST |
| 2026-11-02 | www.tiingo.com/llms-full.txt | monthly bandwidth resets on the first at midnight EST |
| 2026-11-02 | ta-nuki.hatenablog.com/entry/2024/02/20/230000 | a Starter account received this JSON detail at the hourly limit |
| 2026-11-02 | www.tiingo.com/llms-full.txt | the cut-off statuses are documented |
| 2026-11-02 | www.tiingo.com/llms-full.txt | the Starter limits are unchanged |
More fields 3
| bulk path | no bulk path for prices; supported_tickers.zip is a daily ticker list |
|---|---|
| history depth | 30+ years of end-of-day prices; 3 months of news |
| cutoff body reported | Starter hourly limit, as shown in a third-party blog dated 2024-02-20: {'detail': 'Error: You have run over your hourly request allocation. Please upgrade at https://api.tiingo.com/pricing to have your limits increased.'}; the status of that answer is not in the source |
Unknown values 1
- retention stated: the field does not apply to this kind of offer