Skip to main content

jaymd96-fmp

Python client for the Financial Modeling Prep API with automatic DuckDB caching.

Features

  • 150+ endpoints covering quotes, financials, charts, news, SEC filings, insider trades, and more
  • DuckDB cache with configurable TTLs per endpoint category — avoid redundant API calls
  • Concurrent fetching — fetch_many() pulls data for hundreds of symbols in parallel
  • Auto-pagination — paginate_all() walks through paginated endpoints automatically
  • Rate limiting — built-in token-bucket rate limiter, thread-safe for concurrent use
  • Context manager support for clean resource cleanup

Installation

pip install jaymd96-fmp

Quick Start

from fmp import FMPClient

# API key from argument or FMP_API_KEY env var
client = FMPClient(api_key="your-api-key")

# Real-time quote
client.quote("AAPL")

# Financial statements
client.income_statement("AAPL", period="quarter", limit=4)

# Historical prices
client.historical_price_eod_full("AAPL", from_date="2024-01-01", to_date="2024-12-31")

# Stock screener
client.screener(sector="Technology", market_cap_more_than=1_000_000_000)

# Technical indicators
client.sma("AAPL", period_length=20, timeframe="1day")

Concurrent Fetching

# Fetch quotes for many symbols in parallel
results = client.fetch_many(client.quote, ["AAPL", "MSFT", "GOOG", "AMZN"], max_workers=10)
# Returns: {"AAPL": [...], "MSFT": [...], ...}

Auto-Pagination

# Fetch all pages of stock news
all_news = client.paginate_all(client.stock_news_latest, limit=100, max_pages=50)

Cache

All responses are cached in a local DuckDB database (~/.fmp/cache.db by default). TTLs are set per endpoint category (e.g., 60s for quotes, 7 days for financial statements).

# In-memory cache (no persistence)
client = FMPClient(api_key="...", cache_path=None)

# Custom TTLs
client = FMPClient(api_key="...", ttl_overrides={"realtime_quotes": 30})

# Force refresh (bypass cache)
client.quote("AAPL", force_refresh=True)

# Run SQL queries on cached data
client.sql("SELECT * FROM _raw_cache WHERE endpoint = 'quote'")

# Clear cache
client.clear_cache()
client.clear_cache(endpoint="quote")

Rate Limiting

# Limit to 5 requests per second (for free-tier plans)
client = FMPClient(api_key="...", rate_limit=5)

Context Manager

with FMPClient(api_key="...") as client:
    data = client.quote("AAPL")
# Connections closed automatically

Configuration

Parameter Default Description
api_key FMP_API_KEY env var Your FMP API key
cache_path ~/.fmp/cache.db DuckDB file path, None for in-memory
ttl_overrides {} Override TTLs by category name
timeout 30.0 HTTP timeout in seconds
max_retries 3 Retry count on 429 responses
rate_limit None Max requests/second

License

MIT

Metadata

Release files for jaymd96-fmp 0.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jaymd96-fmp 0.9.2
File Size Uploaded
jaymd96_fmp-0.9.2.tar.gz 119.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jaymd96-fmp 0.9.2
File Interpreter ABI Platform
jaymd96_fmp-0.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 201.1 kB

Release files / jaymd96_fmp-0.9.2.tar.gz

Download URL jaymd96_fmp-0.9.2.tar.gz
Size 119.3 kB
Tags Source
SHA-256 checksum
How to use checksums
2764d07869b42fec3f7b0e114157b20ed15025c088d95d066ed099efdeae5cb9
BLAKE2b-256 checksum
How to use checksums
f2609c059bdd3c902f07b74e5557bb33c07bb17aa2d6fedf8af5214cd54f0796
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.3 cpython/3.13.0 HTTPX/0.28.1

Release files / jaymd96_fmp-0.9.2-py3-none-any.whl

Download URL jaymd96_fmp-0.9.2-py3-none-any.whl
Size 81.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c81e252994caa956a89409f59c8250b0ee18321dc120ca4872f8e76311b7c859
BLAKE2b-256 checksum
How to use checksums
a7bba61b4b4585337390985ca387ec747653114d8e7c59ff326a0c888e81c129
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.16.3 cpython/3.13.0 HTTPX/0.28.1

Release history Release notifications | RSS feed

This release

0.9.2 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page