← comparisons

An Intrinio Alternative for Point-in-Time Fundamentals

It is common for a fundamentals API to attach a filing date to each period and stop there. That is not point-in-time. If a provider stores one mutable value per fiscal period next to a filing_date, the date describes when the original 10-K landed while the number beside it has been quietly overwritten by every subsequent revision. You can filter on that date all day and still be reading tomorrow's figures. The fix is not a better date field. It is storing the original value and the current value as two separate things.

Intrinio is not one of those providers, and the honest version of this comparison has to start there. Their fundamentals endpoint documents fundamental_type with allowed values reported, restated, and calculated, alongside reported_only, filed_after, filed_before, latest_only, and an is_latest response flag. Their Bronze and Gold fundamentals plan guides both say it plainly: "Companies restate prior fiscal periods on each 10-K and 10-Q for comparison with their latest completed period. We specify whether each fundamental returned is restated or reported (meaning the original, non-restated fundamental)." Anyone telling you Intrinio "isn't point-in-time" has not read their documentation.

Two things to confirm with them rather than take from us. First, the plan guides say that restated-versus-reported distinction lives in a type field in the fundamental array, while the endpoint reference lists type with the values QTR, YTD, FY, TTM. Their own pages do not line up; ask which field you should actually read. Second, their fundamental object carries first_calculable and earnings_disclosed_at timestamps next to filing_date. We are not going to define those fields on Intrinio's behalf, and we could not establish how densely they are populated across older history. Ask.

The actual distinction

There is no as_of parameter on Intrinio's fundamentals endpoint; we read the published parameter list and found no as-of-date primitive. Point-in-time correctness there is something you construct: you remember to pass filed_before, or reported_only, or fundamental_type=reported. The default query returns what is current. The materials are all present and documented; the safe path is opt-in.

Tradevo Data inverts that default. as_of is a required parameter, the join happens server-side, and there is no call shape that returns a restated number without you asking for one. That is a design-philosophy difference, not a data-quality gap, and it matters exactly as much as your team's discipline is imperfect. On a two-person desk where one person wrote the ingest and another writes the backtest six months later, that default is the whole ballgame. On a team with a reviewed data layer and a lookahead test in CI, it is close to nothing.

When Intrinio is the better choice

Buy Intrinio if you need quarterly data. We do not have it. Annual 10-K and 10-K/A only. If your signal is an earnings-surprise or an accruals model on a quarterly cadence, this comparison is over in one line.

Buy Intrinio if you need prices alongside fundamentals. They sell equities EOD and real-time, options chains and real-time options, ETF holdings and analytics, estimates, corporate events, news, institutional holdings, and insider transactions. We sell no prices at all: no OHLCV, no adjusted closes, nothing. A fundamentals feed without prices only makes sense if you already have a price source you trust. Consolidating vendors is a legitimate reason to pick the broader catalog even when the narrow product is a better fit on its own merits.

Buy Intrinio if you need raw XBRL tag-level fidelity with a link back to the filing. Their reported_financials endpoint returns, per line item, the tag, name, balance, unit, abstract, sequence, depth, value, and dimensions as axis/member pairs. We normalize to 7 concepts. If you are doing forensic accounting, footnote work, or anything that turns on which tag management chose, tag-level access is not a nice-to-have.

Buy Intrinio if you need standardized statements and calculated fields. Their plan guides describe "over 100 associated calculations"; their fundamentals product page advertises "130+ calculated ratios." Those two figures come from different pages and may well describe the same offering counted differently, so check the current wording yourself. Either way it is more than the zero ratios we ship. You compute them from our raw fields or you go elsewhere.

Buy Intrinio if you need fast ingestion. Their page states: "As-reported metrics are available within 10 minutes of SEC upload. Standardized fundamentals and calculated fields can take up to 30 minutes." We have not seen an SLA behind it, but it is a far more aggressive posture than anything we promise.

Buy Intrinio if you need deeper history, with one question to ask first. Their fundamentals feed is tiered by depth: the Bronze plan guide states "5 Years of Trailing History for Fundamentals," Gold states "17+ Years." What we could not determine is whether a given tier's revision history extends across that full window or whether the deeper years arrive as latest-only values. Ask them directly: does my tier include original-versus-restated for every year, or only for the recent window? Note the structural floor, which their own copy is upfront about: "Data starts in 2007, with full coverage from 2008 when the SEC mandated XBRL format for 10-Ks and 10-Qs." No vendor can conjure machine-readable filings that were never filed.

Buy Intrinio if delisted coverage matters, and it should. Both their Bronze and Gold fundamentals plan guides state "10,000+ Active and Delisted Companies and 50,000+ Active and Delisted Securities." That is a documented position on survivorship bias, not a buried footnote. Ours is worse and it is short: we have no delisted history at all.

On pricing, go to their pricing page and read the current terms and what your tier includes. We are not going to quote a competitor's number back at you.

What we are

313,137 point-in-time rows across 5,195 US companies, with 18,712 restatements labelled. 7 concepts (Revenue, NetIncome, OperatingCashFlow, EPSDiluted, DilutedShares, Assets, StockholdersEquity), up to 12 fiscal years, annual only, US only. Every row carries first_filed, original_value, latest_value, a restated flag, and a per-row qa_status. Flat $49/month, instant self-serve key, 5,000 requests/day, cancel anytime.

Our limits, before you find them yourself: no quarterly, no prices, no non-US companies, no real-time, no delisted-company history, no ratios, no estimates, no news, no options. 12 fiscal years is the ceiling. Because we focus on active companies, long-horizon backtests built on our data carry survivorship bias. The failures are not in here. Say that out loud in your methodology section.

Why the labelling exists

P&G's FY2015 revenue was filed at $76.279B and reads $70.749B today, roughly a 7% revision. P&G's FY2014 carries a Revenues tag at $29.400B alongside a true SalesRevenueNet of $83.062B. General Mills FY2024 shows Revenues at $2.038B against $19.857B under the contract-with-customer tag. Amazon's FY2020 diluted shares were filed at 510,000,000 and read 10,198,000,000 today after the 2022 20:1 split was applied retroactively, and note that filing-date gating does not catch that one. Only storing the originally reported value does.

We shipped the General Mills tag error ourselves and now verify every load against the SEC's companyconcept API. Full-universe filing lag on rows with a verifiable date: mean 66 days, median 60.

Check us before you pay. Free CC0 sample, 40 large caps, 3,280 rows, no signup: github.com/christianpichichero-max/pit-fundamentals. Pull the same tickers from Intrinio with reported_only set and diff them.

Not investment advice.

See for yourself — free sample, no signup.

40 large caps, 3,280 point-in-time rows, full methodology.