Skip to main content

The definitive open-source yfinance alternative — multi-source, failover-capable, fully normalized

Project description

findata

A multi-source, failover-capable Python financial data library.

findata delivers yfinance's beloved simplicity with 10× the reliability through automatic failover across multiple data sources, intelligent three-tier caching, and a community plugin architecture.

Why findata?

Problem with yfinance findata solution
Breaks 2–4×/year when Yahoo changes endpoints Circuit-breaker failover to SEC, ECB, Binance
No built-in caching; hammers APIs on every call Three-tier cache (memory → diskcache → Parquet)
No rate limiting; users get IP-blocked Per-source adaptive rate limiters
Silent failures (empty DataFrames) Rich exceptions with source provenance
Single unofficial API 5+ sources, plugin architecture for more

Quick start

pip install findata
import findata

# One line — works immediately, no API keys needed
df = findata.prices("AAPL", period="1mo")

# Multi-source with validation
client = findata.Client(sources=["yahoo", "sec", "ecb"])
df = client.prices("AAPL", start="2024-01-01", validate=True)

# Async batch fetching
import asyncio

async def main():
    async with findata.AsyncClient() as client:
        data = await client.prices(["AAPL", "GOOGL", "MSFT"], period="1y")

asyncio.run(main())

# Fundamentals from SEC EDGAR (free, no key needed)
info = findata.info("AAPL")

# Forex from ECB (free, no key, no rate limits)
fx = findata.forex("USD/EUR", period="1y")

# Crypto from Binance public API (free, no key)
btc = findata.prices("BTC/USDT", period="30d")

Optional extras

pip install findata[cache]    # diskcache for persistent local caching
pip install findata[duckdb]   # DuckDB + Parquet for historical storage
pip install findata[polars]   # Polars DataFrame output
pip install findata[all]      # Everything

Data sources (v0.1)

Source Data Auth Rate limit
Yahoo Finance Prices, options, info None (unofficial) ~950 req/session
SEC EDGAR Fundamentals, filings None 10 req/s
ECB / Frankfurter Forex None No limit
Binance Crypto OHLCV None 1200 req/min
CoinGecko Crypto info None (free tier) 30 req/min

See DATA_SOURCES.md for full terms-of-service details and risk tiers.

Community plugins

Add new sources as pip-installable packages:

# In your plugin's pyproject.toml
[project.entry-points."findata.sources"]
tradingview = "findata_tradingview:TradingViewSource"

A new source adapter can be implemented in under 100 lines by implementing the DataSource protocol.

Legal notice

findata fetches data on behalf of users as a client library. Users are responsible for complying with each data provider's terms of service. Government data (SEC EDGAR) is in the public domain. See DATA_SOURCES.md for source-specific guidance.

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xfinance-0.3.0.tar.gz (62.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xfinance-0.3.0-py3-none-any.whl (66.4 kB view details)

Uploaded Python 3

File details

Details for the file xfinance-0.3.0.tar.gz.

File metadata

  • Download URL: xfinance-0.3.0.tar.gz
  • Upload date:
  • Size: 62.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for xfinance-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b7b132b3ada8ac2917a1fc9d0dee975884261cf43c67c9ff4a61cb1b942ec1df
MD5 1b65087b588932fa54d20341b8f7382b
BLAKE2b-256 5cbb8367c98e3361170c79cef9ebc09c4004605f4072558aaa53e43c23d4e145

See more details on using hashes here.

File details

Details for the file xfinance-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: xfinance-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 66.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for xfinance-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 635fcc70a70d53f36031584d4e049f716a88e5d60ce1354871bc204a12bb3563
MD5 e6b161d69125a89846c497593f00fcc9
BLAKE2b-256 1941f8c4a3094218c7bfb78b5c9c77790f9e5bbbb88f24918eb909b8b0db898c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page