parsimony-fmp
Financial Modeling Prep source for parsimony: discovery, quotes, fundamentals, events, signals, and a global equity screener.
Part of the parsimony-connectors monorepo. Distributed standalone on PyPI as parsimony-fmp.
Connectors
| Group | Connectors |
|---|---|
| Discovery | fmp_search, fmp_taxonomy |
| Core market data | fmp_quotes, fmp_prices |
| Fundamentals | fmp_company_profile, fmp_peers, fmp_income_statements, fmp_balance_sheet_statements, fmp_cash_flow_statements |
| Events and catalysts | fmp_corporate_history, fmp_event_calendar, fmp_analyst_estimates |
| Signals and context | fmp_news, fmp_insider_trades, fmp_institutional_positions, fmp_earnings_transcript |
| Market context | fmp_index_constituents, fmp_market_movers |
| Screener | fmp_screener |
19 connectors total. Each docstring opens with the lowest FMP plan that can call it —
[Basic+], [Starter+], [Premium+], [Ultimate], matching FMP's own ladder of Basic
(free) → Starter → Premium → Ultimate. Tags were derived from FMP's plan-comparison matrix
and checked against a live Basic key on 2026-07-23.
Two gates are not endpoint-level, so a reachable endpoint can still refuse a specific call
with PaymentRequiredError:
- Symbol. On Basic, symbol-scoped endpoints serve only FMP's fixed 87-ticker sample ("AAPL, TSLA, AMZN and 84 more"; the list is not published). Starter widens to US exchanges, Premium to US/UK/Canada, Ultimate to global. This is why one basket of large caps can half-succeed on a single key.
- Range. Date-windowed verbs cap the span per plan and reject a wider window rather than truncating it.
Status semantics: an invalid key returns 401 → UnauthorizedError; a plan or legacy restriction returns 403 (FMP also uses 402) → PaymentRequiredError. An unknown symbol returns HTTP 200 with [] → EmptyDataError.
Install
pip install parsimony-fmp
Pulls in a compatible parsimony automatically. Verify discovery:
python -c "from parsimony import discover; print([p.name for p in discover.iter_providers()])"
Configuration
The API key is supplied per-call via bind(api_key=...) / load(api_key=...),
or — as a dev fallback — from the FMP_API_KEY environment variable:
export FMP_API_KEY="<your-key>"
Get a key at https://financialmodelingprep.com. The key is declared as a
secret (secrets=("api_key",)), so it is stripped from recorded provenance and
redacted from logs. A missing key fails fast with UnauthorizedError.
Quick start
from parsimony_fmp import load
connectors = load(api_key="<your-key>") # or rely on FMP_API_KEY
result = connectors["fmp_quotes"](symbols="AAPL,TSLA,MSFT")
print(result.raw.head())
For multi-plugin composition:
from parsimony import discover
connectors = discover.load_all()
Provider
- Homepage: https://financialmodelingprep.com
- API docs: https://site.financialmodelingprep.com/developer/docs
License
See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parsimony_fmp-0.0.2.tar.gz.
File metadata
- Download URL: parsimony_fmp-0.0.2.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a0fc69a631253078c025f70ebd64bf75684068407ba8abda51ea3c36545a06a
|
|
| MD5 |
5da6d71757781666d7acabc22c6429c1
|
|
| BLAKE2b-256 |
0a9fd7d7aeb164aa005d3974378a3b5c7e2d07167fd369c89152213825023ba2
|
Provenance
The following attestation bundles were made for parsimony_fmp-0.0.2.tar.gz:
Publisher:
release.yml on ockham-sh/parsimony-connectors
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parsimony_fmp-0.0.2.tar.gz -
Subject digest:
6a0fc69a631253078c025f70ebd64bf75684068407ba8abda51ea3c36545a06a - Sigstore transparency entry: 2408417289
- Sigstore integration time:
-
Permalink:
ockham-sh/parsimony-connectors@45adac08dad2b5faf031867e7e3ca1b87689f5b9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ockham-sh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@45adac08dad2b5faf031867e7e3ca1b87689f5b9 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file parsimony_fmp-0.0.2-py3-none-any.whl.
File metadata
- Download URL: parsimony_fmp-0.0.2-py3-none-any.whl
- Upload date:
- Size: 25.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fea10b7f3085f622808a35668fcec8d404e2b9bcb783a2f8ed9f184af7ab118
|
|
| MD5 |
07487af4b51a47a4b54db1fb6dffa8a1
|
|
| BLAKE2b-256 |
9fcc281ec9a967cf729f65b40256e30ce6da9fa6f2154fb6a3f06f4c412aabfc
|
Provenance
The following attestation bundles were made for parsimony_fmp-0.0.2-py3-none-any.whl:
Publisher:
release.yml on ockham-sh/parsimony-connectors
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
parsimony_fmp-0.0.2-py3-none-any.whl -
Subject digest:
7fea10b7f3085f622808a35668fcec8d404e2b9bcb783a2f8ed9f184af7ab118 - Sigstore transparency entry: 2408417886
- Sigstore integration time:
-
Permalink:
ockham-sh/parsimony-connectors@45adac08dad2b5faf031867e7e3ca1b87689f5b9 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ockham-sh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@45adac08dad2b5faf031867e7e3ca1b87689f5b9 -
Trigger Event:
workflow_dispatch
-
Statement type: