All Posts
ComparisonComparisonFundamentalsAlpha VantageXBRLSEC EDGAR

StockFit API vs. Alpha Vantage for Fundamentals

Both speak JSON. One reads SEC filings. The other reads its own normalized table. A side-by-side look at standardized statements, raw XBRL, filings access, ownership, insider data, executive comp, ETFs, and pricing — with verifiable sources on both sides.

Published May 7, 202613 min readStockFit Engineering
StockFit API vs. Alpha Vantage for Fundamentals

Alpha Vantage is the default first stop for anyone hunting a free fundamentals API. It returns clean JSON, the documentation fits on one page, and the entry price is low. So why do serious teams keep migrating off it?

The short answer: Alpha Vantage gives you a normalized snapshot of the big-three financial statements and very little else. StockFit gives you the SEC filing the numbers came from, the raw XBRL fact tree behind every line item, plus the ownership, insider, executive, fund, and filings infrastructure that simply has no equivalent on the Alpha Vantage side. If your work touches fundamentals beyond the surface layer, the depth gap matters.

This post lays the two surfaces side by side. Every Alpha Vantage claim links to their own published documentation, pricing, or support pages — no third-party hot takes. Every StockFit claim links to the live Swagger reference, runnable from the free playground.

Sources used
Alpha Vantage: documentation, premium pricing, support, and the fundamental data taxonomy. Live function= responses verified against https://www.alphavantage.co/query?...&apikey=demo. StockFit: live calls against api.stockfit.io. If we have a fact wrong, tell us.

The surface, in one table

Alpha Vantage's entire fundamentals offering is fourteen function= calls. StockFit's is sixty-plus structured endpoints, organized by what the data is actually for. Counted by area:

CapabilityStockFit APIAlpha Vantage
Standardized statements (Income / Balance / Cash Flow)3 endpoints + 4 chart endpoints, all with annual, quarter, and ttm periods3 endpoints (INCOME_STATEMENT, BALANCE_SHEET, CASH_FLOW), annual + quarterly only
As-reported / raw XBRL/api/financials/as-reported — full XBRL fact tree incl. company-specific extensionsNone — explicitly normalized only
Earnings analytics9 endpoints: history, dividends, snapshot, trends, date prediction, calendar, upcoming, quality chart, EPS chart2 endpoints: EARNINGS (history) + EARNINGS_ESTIMATES (premium)
Financial scoring & key metricsPiotroski F-score, Altman Z-score, sector-aware key metrics, growth rates — scores, key-metrics, growthNone
SEC filings & documents11 endpoints (full text, item-level extraction, filings calendar, S-1 offerings, accession lookup)None — CIK is exposed so you can go to EDGAR yourself
Insider transactions5 endpoints: list, summary, roster, by-insider, chart — with cross-filer dedup1 endpoint: INSIDER_TRANSACTIONS (raw transaction stream)
Institutional & beneficial ownership8 endpoints: 13F holdings, history, search, beneficial owners (13D/G), share classes, portfolio, summary, activityNone — one aggregate PercentInstitutions in OVERVIEW
Executives, comp & governance4 endpoints: officers, pay-vs-performance, governance flags, performance measures (from XBRL DEF 14A)None
ETF / fund analytics18 endpoints: holdings, flows, fees, overlap, exposure model, country/sector charts, fund health, service providers, reverse lookup1 endpoint: ETF_PROFILE (single snapshot)
Symbol lookupBy symbol, CIK, CUSIP, FIGI, fuzzy search, former names, batch lookupCSV-only: LISTING_STATUS bulk download

Score: 60+ vs ~14. The gap is not cosmetic. It is the difference between a fundamentals snapshot service and a working SEC EDGAR back-end.

1. Standardized statements: close on the surface

On the core three statements, both APIs deliver multi-decade history on large caps. Pulling function=INCOME_STATEMENT for IBM against the demo key returns ~20 annual reports back to 2006 and ~80 quarterlies back to 2010, ~26 line items each. StockFit's /api/financials/income-statement returns roughly the same envelope shape with the same coverage on mature names. That is the part where the two APIs feel equivalent.

The differences show up the moment you look at what the response carries beyond the line items.

Alpha Vantage's INCOME_STATEMENT

json
{
  "symbol": "IBM",
  "annualReports": [
    {
      "fiscalDateEnding":      "2024-12-31",
      "reportedCurrency":      "USD",
      "totalRevenue":          "62753000000",
      "costOfRevenue":         "27959000000",
      "grossProfit":           "34794000000",
      "operatingIncome":       "8780000000",
      "netIncome":             "6023000000",
      "ebitda":                "13700000000"
      // ... 20 more line items, all stringified, no filing date
    }
  ],
  "quarterlyReports": [ /* ... */ ]
}

StockFit's /api/financials/income-statement

json
[
  {
    "period":         "2024-12-31",
    "fiscalYear":     2024,
    "fiscalPeriod":   "FY",
    "dateFiled":      "2025-02-24",
    "accessionNumber":"0000051143-25-000007",
    "facts": {
      "revenue":          62753000000,
      "costOfRevenue":    27959000000,
      "grossProfit":      34794000000,
      "operatingIncome":   8780000000,
      "netIncome":         6023000000,
      "ebitda":           13700000000,
      "eps":               6.53,
      "epsDiluted":        6.42
      // ~20 more typed fields
    }
  }
]

Three differences that look small but compound across any non-trivial workload:

  • Filing date. StockFit returns dateFiled — the original 10-K/10-Q acceptance date, not the amendment date. Alpha Vantage exposes the fiscal period end and nothing about when the filing actually hit EDGAR. For backtesting that is the difference between a clean point-in-time join and silent look-ahead bias.
  • TTM as a first-class period. StockFit ships period=ttm on every statement, computed as a sum of the last four quarters with proper non-December fiscal-year handling (AAPL ends in late September, COST in late August, and the TTM math accounts for it). Alpha Vantage offers annual or quarterly arrays only — you compute TTM yourself.
  • Typed numbers, fiscal metadata. Alpha Vantage returns numbers as strings ("62753000000"); StockFit returns typed numbers and ships fiscalYear + fiscalPeriod on every row so you don't reverse-engineer the calendar.

Same shape on the surface. Different posture underneath: StockFit treats every row as a filing, not a calendar entry.

2. As-reported XBRL: the part Alpha Vantage hides

Alpha Vantage's own taxonomy documentation is upfront about what its fundamentals data actually is: “normalized fields mapped to GAAP and IFRS taxonomies of the SEC.” When a filer doesn't report a normalized field, Alpha Vantage imputes it from broader taxonomy. There is no exit hatch — you cannot ask for the raw fact, only the normalized output. (source)

What this means in practice
If Tesla reports vehicle delivery counts, AAPL reports Services revenue under a custom tag, or any issuer files an extension fact that doesn't fit the standard GAAP shape — Alpha Vantage will not return it. The data is permanently cropped to the normalized schema.

StockFit ships a parallel endpoint for exactly this case: /api/financials/as-reported returns the raw XBRL fact set the issuer filed, including company-specific extension concepts (the tsla:, aapl:, nvda: namespaced tags). Below is a real, just-pulled response for AAPL Q1 FY2026:

json
[
  {
    "period": "2025-12-26",
    "facts": {
      "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax": 143756000000,
      "us-gaap:CostOfGoodsAndServicesSold":                            74525000000,
      "us-gaap:GrossProfit":                                            69231000000,
      "us-gaap:OperatingIncomeLoss":                                    50852000000,
      "us-gaap:NetIncomeLoss":                                          42097000000,
      "aapl:CashCashEquivalentsAndMarketableSecurities":               144795000000,
      "aapl:ProductsAndServicesSegmentMember":                          /* ... */
      // 100+ raw concept facts, including aapl: extensions
    }
  }
]

Notice the aapl:CashCashEquivalentsAndMarketableSecurities line. That is not a GAAP concept — it's an Apple-specific extension. On Alpha Vantage that fact does not exist. On StockFit you can pin a screen, an audit, or a forensic accounting check to it directly.

And for the cases where you do want the curated, cross-issuer-consistent shape, you call /api/financials/income-statement and get the same numbers under stable canonical field names. Both views are first-class. You don't pick one and live with it.

Why this is the differentiator
Custom XBRL extensions are not edge cases. The largest market caps in the index report business-critical metrics through them. An API that strips them off is not delivering “fundamentals” — it is delivering an opinion about which fundamentals are worth keeping.

3. SEC filings: zero on one side, eleven on the other

Alpha Vantage's coverage of SEC filings is straightforward to summarize: it does not have any. There is no 10-K endpoint, no 10-Q endpoint, no 8-K endpoint, no DEF 14A, no S-1, no 13F, no Schedule 13D/G, no Form 4 documents, no XBRL pass-through, no filings calendar, no accession-number lookup. The closest thing is a CIK field inside OVERVIEW so you can go to EDGAR yourself.

StockFit's filings family is eleven endpoints:

EndpointWhat it does
/api/filingsSearch filings by form type, 8-K event, date range, paginated.
/api/filings/documentServe the raw HTML/XML/PDF/TXT document directly. CDN-cached for 1 year — no SEC EDGAR rate-limiting on your end.
/api/filings/search-by-accession-numberLookup any filing by accession number.
/api/filings/latestMarket-wide feed of the most recent filings, filterable by type/event.
/api/filings/calendarPredicted 10-K, 10-Q, DEF 14A filing dates with confidence levels.
/api/filings/statsAggregate filing counts and historical filing frequency.
/api/filings/timeline10 most recent filings + predicted future dates + next earnings call in one call.
/api/filings/offeringFull historical S-1 / IPO registration record for a company.
/api/filings/recent-offeringsCross-company feed of recent S-1 / IPO filings with pricing where available.
/api/filings/item-listAvailable extracted items in a filing (Risk Factors, MD&A, Cybersecurity, etc.).
/api/filings/itemExtract one specific item (e.g. 10-K Item 1A — Risk Factors) as HTML or plain text.
What you can't do on Alpha Vantage
Pull a 10-K, scan an 8-K for a CFO departure event, list every S-1 priced this quarter, extract Risk Factors out of a filing for an LLM, look up a filing by accession number, or predict when AAPL files its next 10-Q. None of this exists in their fundamentals surface. If you need it, you build it yourself against EDGAR — with all the rate-limiting and parsing that implies.

4. Who owns it, who's trading it, who runs it

Beyond the income statement, the next-most-asked-for fundamentals data lives in the ownership and governance disclosures. This is where the gap is most extreme.

Insider transactions

Alpha Vantage's INSIDER_TRANSACTIONS returns Form 4 transactions as a flat list with eight fields: date, ticker, executive, title, security type, A/D flag, shares, share price. That's it. No deduplication across co-filers, no rolled-up summary, no per-insider history view, no chart.

StockFit ships five views over the same Form 3/4/5 data. The most useful for screens is /api/insider-transactions/summary — rolling 3, 6, and 12-month buy/sell counts and dollar volumes in a single call. Real response for AAPL:

json
{
  "symbol": "AAPL",
  "summary": {
    "3m":  { "buys": 0, "sells": 6,  "buyValue": 0, "sellValue":  9214563, "netShares": -28194 },
    "6m":  { "buys": 1, "sells": 14, "buyValue": 12500, "sellValue": 41280977, "netShares": -158244 },
    "12m": { "buys": 1, "sells": 31, "buyValue": 12500, "sellValue": 92540118, "netShares": -432081 }
  }
}

That endpoint does not exist on Alpha Vantage. Neither does by-insider, roster, or chart. To build any of them on Alpha Vantage you pull the raw transaction stream and write the aggregation yourself — against a per-minute rate limit.

Institutional & beneficial ownership

Here Alpha Vantage's coverage drops from “shallow” to nothing. The only ownership-related field anywhere in their fundamentals surface is OVERVIEW.PercentInstitutions — one aggregate percentage. There is no list of holders, no 13F integration, no Schedule 13D/G data, no share-class breakdown, no manager portfolio view.

StockFit ships eight ownership endpoints powered by 13F-HR, Schedule 13D/G, and 10-K share-class disclosures:

Executives & governance

Alpha Vantage exposes executive data only as free-text executive and executive_title columns on insider rows. There is no officer roster, no compensation, no governance metric, no performance measure breakdown.

StockFit pulls four endpoints out of the SEC's XBRL-tagged DEF 14A proxy statements (mandatory in structured form since FY 2022): /api/executives/officers, /api/executives/compensation (with the SEC-mandated pay-vs-performance table), /api/executives/governance, and /api/executives/performance-measures. Sample of the pay-vs-performance output:

json
{
  "symbol": "AAPL",
  "rows": [
    {
      "fiscalYear": 2024,
      "ceo":        "Timothy D. Cook",
      "ceoSCT":         74610423,
      "ceoCAP":         63209845,
      "neoAvgSCT":      27246915,
      "neoAvgCAP":      24180102,
      "tsrCompany":      170.09,
      "tsrPeerGroup":    160.43,
      "netIncome":   93736000000,
      "companyMetric": "Operating Income"
    }
  ]
}

SCT = Summary Compensation Table; CAP = Compensation Actually Paid (the SEC's realized-pay measure introduced in 2022). On Alpha Vantage that table is unreachable.

5. ETFs: one snapshot vs. the whole filing universe

Alpha Vantage's ETF coverage is a single endpoint: ETF_PROFILE. It returns net assets, expense ratio, dividend yield, inception date, a leveraged flag, an 11-row sector list, and a ~125-row holdings list. Exhaustive list. No country breakdown, no flows, no fee analysis beyond the headline expense ratio, no holdings history, no overlap, no fund-fund relationships, no service providers, no reverse lookup.

StockFit's fund family is eighteen endpoints, sourced from N-PORT-P (monthly holdings), N-CSR (annual reports), N-CEN (annual census), and prospectus N-1A. The capability gap by row:

CapabilityStockFit APIAlpha Vantage
Holdings (current)/api/fund/holdingsETF_PROFILE.holdings
Holdings history/api/fund/holdings (date range)
Quarterly flows in/out/api/fund/flows
Fee breakdown (waivers, brokerage)/api/fund/fee-analysisExpense ratio only
Country / region exposure/api/fund/chart/countries
Industry-group exposure/api/fund/chart/industry-groups
ETF-vs-ETF overlap/api/fund/overlap
Holdings changes between filings/api/fund/changes
Reverse lookup (which funds hold AAPL?)/api/fund/reverse-lookup
Exposure model (look-through)/api/fund/exposure-model
Service providers (custodian, auditor, AP)/api/fund/service-providers
Fund health flags/api/fund/fund-health

For a worked walk-through of the fund stack on a real ETF, see A Deep Lens on Any ETF.

6. Pricing & rate limits

This is the section where Alpha Vantage looks most competitive on paper, and where the real-world workflow pulls the rug back out.

Alpha Vantage's premium pricing: $49.99/mo for 75 RPM, $99.99 for 150, $149.99 for 300, $199.99 for 600, $249.99 for 1200. All paid tiers advertise “no daily limits.” The free tier is 25 requests/day, tightened from 500/day in 2024. Every fundamentals call is one symbol per request — there is no batch parameter on any of OVERVIEW, INCOME_STATEMENT, BALANCE_SHEET, CASH_FLOW, EARNINGS, INSIDER_TRANSACTIONS, DIVIDENDS, SPLITS, or ETF_PROFILE.

Practical consequence: at the $49.99 tier (75 RPM), pulling all four statements (income / balance / cash flow / earnings) for the S&P 500 is 500 × 4 / 75 = ~27 minutes at the rate cap, plus retries. For the Russell 3000 it's closer to three hours. Per refresh.

StockFit takes a different shape: subscription tiers gate endpoints and history depth rather than per-minute call rates, and bulk lookups are first-class — /api/company/details-batch and /api/lookup/batch accept up to 50 symbols in one call. Same S&P 500 refresh shape becomes 500 / 50 = 10 batched calls per area. Full breakdown on the pricing page.

CapabilityStockFit APIAlpha Vantage
Free tierFree plan, no credit card. Includes the standardized statements, earnings history, lookups, ETF profile + holdings, and filings document access. Sign up at /signup.25 requests/day across all endpoints (combined).
Entry paid plan$15/mo Starter — growth metrics, trends, key metrics, scoring.$49.99/mo for 75 RPM, no daily cap.
Mid plan$39/mo Stock or ETF — pick stock or fund focus, all related endpoints unlocked.$99.99–$149.99/mo for 150–300 RPM.
Top published plan$69/mo Professional — everything: filings calendar, exec comp, ownership, fund exposure model, 80 quarters of history.$249.99/mo for 1200 RPM. Same endpoint surface as the entry tier.
Batch fundamentalsUp to 50 symbols per call via /api/company/details-batch and /api/lookup/batch.Not offered. One symbol per call across every fundamentals function.
Where Alpha Vantage genuinely competes
Three honest points: (1) Alpha Vantage's EARNINGS endpoint goes back ~30 years on mature names with a full EPS-vs-estimate-vs-surprise stack, which is deeper than most peers. (2) The $49.99/mo entry is a low number to compete with on raw price. (3) The free tier exists at all, even if 25/day is a tight ceiling. If your only fundamentals need is the big-three statements at low cost and you don't mind paging through one symbol at a time, Alpha Vantage will work.

Try it yourself

Two terminal commands, two responses, side by side. Pick the one that ships the data you actually need.

bash
# Alpha Vantage: standardized income statement, IBM
curl "https://www.alphavantage.co/query?\
function=INCOME_STATEMENT&symbol=IBM&apikey=demo"

# StockFit: same, plus filing date + fiscal metadata + TTM available
curl -H "Authorization: Bearer $KEY" \
  "https://api.stockfit.io/v1/api/financials/income-statement?\
symbol=IBM&period=quarter&limit=40"

# StockFit: raw XBRL fact tree including company-specific extensions
curl -H "Authorization: Bearer $KEY" \
  "https://api.stockfit.io/v1/api/financials/as-reported?\
symbol=AAPL&period=quarter&limit=4"

# StockFit: insider trading 12-month sentiment summary
curl -H "Authorization: Bearer $KEY" \
  "https://api.stockfit.io/v1/api/insider-transactions/summary?\
symbol=AAPL"

When to pick which

Pick Alpha Vantage if

  • Your need is a quick standardized income / balance / cash flow snapshot at low cost.
  • You're wiring up a hobby project, a class assignment, or an exploratory notebook.
  • Your fundamentals appetite stops at the big-three statements and a basic earnings history.

Pick StockFit if

  • You're building a backtest, screen, or factor model and need filing dates that don't leak look-ahead bias.
  • You need the raw XBRL fact tree — including company-specific extensions Alpha Vantage normalizes away.
  • Your work touches SEC filings directly — 10-K text, 8-K event search, S-1 monitoring, item-level extraction for an LLM.
  • You analyze ownership flows, insider sentiment, or executive comp as signal.
  • You build on ETFs and mutual funds — flows, overlap, exposure, fee structure, look-through.
  • You want batch lookups instead of per-symbol round trips against a per-minute rate cap.
  • You want an AI-native developer surface — the same key works as an MCP tool inside Claude, Cursor, or VS Code via /mcp.

Closing

Alpha Vantage is a tidy fundamentals snapshot service with a low entry price. StockFit is a working SEC EDGAR back-end — the filings, the raw XBRL, the ownership and exec layer, the fund analytics, and the standardized statements on top of all of it. For anyone whose fundamentals work goes one click deeper than the income statement, the depth gap is the whole story.

Run the comparison yourself: pick a ticker, hit any endpoint mentioned above against the free playground, then run the equivalent function= on Alpha Vantage. The two responses tell the rest.

Ready to build?

Free API key, no credit card. Every endpoint mentioned in this post is available on the free tier.

Get Your Free API Key