Free Morningstar API Alternative for Developers
Morningstar Direct costs $15,000+/year and doesn't offer a public REST API. SecuritiesDB provides the same ETF analysis capabilities — X-Ray, overlap detection, full holdings — as a free, no-auth JSON API that any developer can use.
Feature Comparison
| Feature | Morningstar | SecuritiesDB |
|---|---|---|
| ETF X-Ray (sector, geo, style) | ✅ Web UI only | ✅ REST API |
| Portfolio Overlap | ✅ Morningstar Direct | ✅ Free endpoint |
| Full Holdings List | ✅ Premium only | ✅ Free endpoint |
| JSON API Access | ❌ No public API | ✅ REST + JSON |
| Authentication | API key + contract | None required |
| Price | $15,000+/year | Free |
| Star Ratings | ✅ Proprietary | ◐ Quant scores |
What You Can Build
With the free SecuritiesDB API you can replicate most of Morningstar's ETF analysis features:
- Portfolio X-Ray:
/api/v1/etfs/VTI/xray— sector & geographic breakdown, HHI concentration - Overlap Check:
/api/v1/etfs/QQQ/overlap/VGT— shared holdings percentage - Holdings Deep Dive:
/api/v1/etfs/SPY/holdings— full constituent list with weights - Passive Float:
/api/v1/stocks/AAPL/passive-float— how much is locked in index funds
Quick Start — Replace Morningstar X-Ray
import requests
# Morningstar X-Ray equivalent: one API call
xray = requests.get("https://securitiesdb.com/api/v1/etfs/VTI/xray").json()["data"]
print(f"Fund: VTI")
print(f"Holdings: {xray['total_holdings']}")
print(f"HHI Concentration: {xray['hhi']}")
print(f"Expense Ratio: {xray.get('expense_ratio', 'N/A')}")
# Sector breakdown
for sector in xray.get("sectors", [])[:5]:
print(f" {sector['name']:20s} {sector['weight']:.1f}%")
# Add overlap check — something Morningstar web can't do programmatically
overlap = requests.get(
"https://securitiesdb.com/api/v1/etfs/VTI/overlap/VOO"
).json()["data"]
print(f"\nVTI ↔ VOO Overlap: {overlap['overlap_pct']:.1f}%")