FinamTradeApiPy — это Python-библиотека для лёгкого взаимодействия с публичным торговым API Finam. Библиотека только предоставляет удобную обертку для доступа к API и не несет ответственность за полученные и отправленные через нее данные.
Так как Finam переезжает на новое API, библиотека будет обновляться. Версия будет начинаться с 4.х.х и уже доступна в PyPi. Предыдущая версия остановилась на 3.1.2 и доступна в PyPi. В нее больше изменения вноситься не будут.
Асинхронный REST-клиент для API Finam.
Используется:
- aiohttp для создания клиента;
- pydantic для удобной работы с моделями данных;
- ruff для линтинга;
- mypy для статической типизации;
- pytest для тестирования;
- bandit для статического анализа безопасности;
- pre-commit для автоматизации линтинга и тестирования;
Python >= 3.11; < 3.14 - проверки в CI.
pip install finam-trade-api
poetry add finam-trade-apiimport os
from finam_trade_api import Client
from finam_trade_api import TokenManager
async def main():
# Получение токена из переменных окружения
token = os.getenv("TOKEN")
# Инициализация клиента с менеджером токенов
client = Client(TokenManager(token))
# Установка JWT-токена
await client.access_tokens.set_jwt_token()
# Получение деталей JWT-токена
return await client.access_tokens.get_jwt_token_details()
if __name__ == "__main__":
import asyncio
# Запуск асинхронного main
print(asyncio.run(main()))import os
from pprint import pprint
from finam_trade_api import Client
from finam_trade_api import TokenManager
from finam_trade_api.account import GetTransactionsRequest, GetTradesRequest
token = os.getenv("TOKEN")
account_id = os.getenv("ACCOUNT_ID")
async def main():
client = Client(TokenManager(token))
await client.access_tokens.set_jwt_token()
# Получение информации об аккаунте
pprint(await client.account.get_account_info(account_id))
# Получение списка транзакций
pprint(await client.account.get_transactions(GetTransactionsRequest(
account_id=account_id,
start_time="2024-01-01T00:00:00Z",
end_time="2025-03-15T00:00:00Z",
limit=10,
)))
# Получение списка сделок
pprint(await client.account.get_trades(GetTradesRequest(
account_id=account_id,
start_time="2024-01-01T00:00:00Z",
end_time="2025-03-15T00:00:00Z",
)))
if __name__ == "__main__":
import asyncio
asyncio.run(main())