Unofficial Fennel Invest API
This is an unofficial API for Fennel.com (now) built using the official Fennel API. This project is not affiliated with Fennel.com in any way.
While I try my best to ensure the API is working correctly, it is an ongoing work in progress, so it may have bugs and missing features. Please feel free to contribute!
Important!
Versions prior to 2.0.0 used an unofficial reverse-engineered API that mimicked the Fennel Invest mobile app. With the release of the official API, this library has been updated to use that instead and previous versions are no longer supported or recommended.
Installation
Install with uv:
uv add 'fennel-invest-api>=2.0.0'
Or with pip:
pip install 'fennel-invest-api>=2.0.0'
Usage: Logging In
Generate a new Personal Access Token (PAT) from the Fennel Dashboard.
Then, initialize the Fennel class with your PAT:
from fennel_invest_api import Fennel
fennel = Fennel(pat_token="your-personal-access-token")
Usage: Get Account Info
account_info = fennel.get_account_info()
for account in account_info:
print(f"Name: {account.name}, Account ID: {account.id}, Type: {account.account_type}")
Usage: Get Account Summary
account_info = fennel.get_account_info()
for account in account_info:
summary = fennel.get_portfolio_cash_summary(account.id)
print(f"Account: {account.name}, Portfolio Value: ${summary.portfolio_value:.2f}, Buying Power: ${summary.buying_power:.2f}, Cash: ${summary.cash_available:.2f}")
Usage: Get Stock Holdings
account_info = fennel.get_account_info()
for account_id in account_info:
positions = fennel.get_portfolio_positions(account_id.id)
print(f"Positions for account {account_id.name}:")
for position in positions:
print(f"{position.symbol}: {position.shares} shares at ${position.value:.2f}")
Usage: Placing Orders
Market order (Default):
order = fennel.place_order(
account_id=account_id,
symbol="AAPL",
shares=1,
side="BUY"
)
print(order)
Limit order:
order = fennel.place_order(
account_id=account_id,
ticker="AAPL",
quantity=1,
side="BUY",
order_type="LIMIT",
limit_price=150.00,
)
print(order)
Contributing
Found or fixed a bug? Have a feature request? Feel free to open an issue or pull request!
Enjoying the project? Feel free to Sponsor me on GitHub or Ko-fi!
DISCLAIMER
DISCLAIMER: I am not a financial advisor and not affiliated with Fennel.com. Use this tool at your own risk. I am not responsible for any losses or damages you may incur by using this project. This tool is provided as-is with no warranty.
Release files for fennel_invest_api 2.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fennel_invest_api-2.0.1.tar.gz | 13.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fennel_invest_api-2.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.3 kB
Release files / fennel_invest_api-2.0.1.tar.gz
| Download URL | fennel_invest_api-2.0.1.tar.gz |
|---|---|
| Size | 13.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f012b4fcbf817b32b6bcf19ffc747d67aa700fd210393a80a0a69b4b007775a5
|
|
BLAKE2b-256 checksum How to use checksums |
cf99691d4a7e8b454f16d48007334f5a6b334c22c77c3f54750913e3c7c4ebd3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fennel_invest_api-2.0.1-py3-none-any.whl
| Download URL | fennel_invest_api-2.0.1-py3-none-any.whl |
|---|---|
| Size | 26.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b73e0e4960df8af1312766652ded0ad1009ce4a01fd51e8cbbcb11b3a14b185
|
|
BLAKE2b-256 checksum How to use checksums |
21c9efd0b0c94dadbb7b5a73428fc84eaab3076fc05f940cc883ba46cd1f9165
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|