FinBrain Python SDK
Official Python client for the FinBrain API.
Fetch deep-learning price predictions, sentiment scores, insider trades, LinkedIn metrics, options data and more — with a single import.
Python ≥ 3.9 • requests, pandas, numpy & plotly • asyncio optional.
✨ Features
- One-line auth (
FinBrainClient(api_key="…")) - Complete endpoint coverage (predictions, sentiments, options, insider, etc.)
- Transparent retries & custom error hierarchy (
FinBrainError) - Async parity with
finbrain.aio(httpx) - CLI (
finbrain markets,finbrain predict AAPL) - Auto-version from Git tags (setuptools-scm)
- MIT-licensed, fully unit-tested
🚀 Quick start
Install the SDK:
pip install finbrain-python
Create a client and fetch data:
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_KEY") # create once, reuse below
# ---------- availability ----------
fb.available.markets() # list markets
fb.available.tickers("daily", as_dataframe=True)
# ---------- app ratings ----------
fb.app_ratings.ticker("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
# ---------- analyst ratings ----------
fb.analyst_ratings.ticker("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
# ---------- house trades ----------
fb.house_trades.ticker("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
# ---------- insider transactions ----------
fb.insider_transactions.ticker("S&P 500", "AMZN", as_dataframe=True)
# ---------- LinkedIn metrics ----------
fb.linkedin_data.ticker("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
# ---------- options put/call ----------
fb.options.put_call("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
# ---------- price predictions ----------
fb.predictions.market("S&P 500", as_dataframe=True) # all tickers in market
fb.predictions.ticker("AMZN", as_dataframe=True) # single ticker
# ---------- news sentiment ----------
fb.sentiments.ticker("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30",
as_dataframe=True)
📈 Plotting
Plot helpers in a nutshell
-
show– defaults to True, so the chart appears immediately. -
as_json=True– skips display and returns the figure as a Plotly-JSON string, ready to embed elsewhere.
# ---------- App Ratings Chart - Apple App Store or Google Play Store ----------
fb.plot.app_ratings("S&P 500", "AMZN",
store="app", # "play" for Google Play Store
date_from="2025-01-01",
date_to="2025-06-30")
# ---------- LinkedIn Metrics Chart ----------
fb.plot.linkedin("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30")
# ---------- Put-Call Ratio Chart ----------
fb.plot.options("S&P 500", "AMZN",
kind="put_call",
date_from="2025-01-01",
date_to="2025-06-30")
# ---------- Predictions Chart ----------
fb.plot.predictions("AMZN") # prediction_type="monthly" for monthly predictions
# ---------- Sentiments Chart ----------
fb.plot.sentiments("S&P 500", "AMZN",
date_from="2025-01-01",
date_to="2025-06-30")
🔑 Authentication
To call the API you need an API key, obtained by purchasing a FinBrain API subscription.
(The Terminal-only subscription does not include an API key.)
- Subscribe at https://www.finbrain.tech → FinBrain API.
- Copy the key from your dashboard.
- Pass it once when you create the client:
from finbrain import FinBrainClient
fb = FinBrainClient(api_key="YOUR_KEY")
Async (currently under development)
import asyncio, os
from finbrain.aio import FinBrainAsyncClient async
def main():
async with FinBrainAsyncClient(api_key=os.getenv("FINBRAIN_API_KEY")) as fb:
data = await fb.sentiments.ticker("S&P 500", "AMZN")
print(list(data["sentimentAnalysis"].items())[:3])
asyncio.run(main())
CLI (currently under development)
export FINBRAIN_API_KEY=your_key
finbrain markets
finbrain predict AAPL --type daily
📚 Supported endpoints
| Category | Method | Path |
|---|---|---|
| Availability | client.available.markets() |
/available/markets |
client.available.tickers() |
/available/tickers/{TYPE} |
|
| Predictions | client.predictions.ticker() |
/ticker/{TICKER}/predictions/{daily|monthly} |
client.predictions.market() |
/market/{MARKET}/predictions/{daily|monthly} |
|
| Sentiments | client.sentiments.ticker() |
/sentiments/{MARKET}/{TICKER} |
| App ratings | client.app_ratings.ticker() |
/appratings/{MARKET}/{TICKER} |
| Analyst ratings | client.analyst_ratings.ticker() |
/analystratings/{MARKET}/{TICKER} |
| House trades | client.house_trades.ticker() |
/housetrades/{MARKET}/{TICKER} |
| Insider transactions | client.insider_transactions.ticker() |
/insidertransactions/{MARKET}/{TICKER} |
client.linkedin_data.ticker() |
/linkedindata/{MARKET}/{TICKER} |
|
| Options – Put/Call | client.options.put_call() |
/putcalldata/{MARKET}/{TICKER} |
🛠️ Error-handling
from finbrain.exceptions import BadRequest
try:
fb.predictions.ticker("MSFT", prediction_type="weekly")
except BadRequest as exc:
print("Invalid parameters:", exc)
| HTTP status | Exception class | Meaning |
|---|---|---|
| 400 | BadRequest |
The request is invalid or malformed |
| 401 | AuthenticationError |
API key missing or incorrect |
| 403 | PermissionDenied |
Authenticated, but not authorised |
| 404 | NotFound |
Resource or endpoint not found |
| 405 | MethodNotAllowed |
HTTP method not supported on endpoint |
| 500 | ServerError |
FinBrain internal error |
🔄 Versioning & release
-
Semantic Versioning (
MAJOR.MINOR.PATCH) -
Version auto-generated from Git tags (setuptools-scm)
git tag -a 0.2.0 -m "Add options.chain endpoint"
git push --tags # GitHub Actions builds & uploads to PyPI
🧑💻 Development
git clone https://github.com/finbrain-tech/finbrain-python
cd finbrain-python
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
ruff check . # lint / format
pytest -q # unit tests (mocked)
Live integration test(currently under development)
Set FINBRAIN_LIVE_KEY, then run:
pytest -m integration
🤝 Contributing
-
Fork → create a feature branch
-
Add tests & run
ruff --fix -
Ensure
pytest& CI pass -
Open a PR — thanks!
🔒 Security
Please report vulnerabilities to info@finbrain.tech.
We respond within 48 hours.
📜 License
MIT — see LICENSE.
© 2025 FinBrain Technologies — Built with ❤️ for the quant community.
Metadata
Release files for finbrain-python 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| finbrain_python-0.1.5.tar.gz | 24.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finbrain_python-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.6 kB
Release files / finbrain_python-0.1.5.tar.gz
| Download URL | finbrain_python-0.1.5.tar.gz |
|---|---|
| Size | 24.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
097ecbc143b8dec52c76ccab349d223b19bed00349ac14a69b6246ea07a5ff21
|
|
BLAKE2b-256 checksum How to use checksums |
8afff0724dc9f027166a092e19dca79f291e0f1491989312243978efb8980355
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / finbrain_python-0.1.5-py3-none-any.whl
| Download URL | finbrain_python-0.1.5-py3-none-any.whl |
|---|---|
| Size | 25.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad39584783aa6e8e89c74eb6da50ac36b2e51cd12fff8a374606e22aa68e88f4
|
|
BLAKE2b-256 checksum How to use checksums |
04d5fa89ce297ae034826b7b81e2c10ee4ca8918877fdb8a55cfdd7fc8596504
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|