Monarch Money API
raw JSON → 0.1.15 verified Mon Apr 27 auth: no python
An unofficial Python wrapper for the Monarch Money GraphQL API. Version 0.1.15 provides access to accounts, transactions, budgets, categories, and more. Release cadence is irregular, with frequent bugfixes for API changes.
pip install monarchmoney Common errors
error HTTP 403 error after upgrading monarchmoney ↓
cause Monarch invalidated old saved sessions; session file is incompatible.
fix
Delete the .mm session file: rm -fR .mm and then call mm.login() again.
error ModuleNotFoundError: No module named 'monarchmoney' ↓
cause The library is not installed or installed in a different environment.
fix
Install using pip: pip install monarchmoney
error AttributeError: module 'monarchmoney' has no attribute 'MonarchMoney' ↓
cause Incorrect import statement; trying to use the module as a class.
fix
Use: from monarchmoney import MonarchMoney
error requests.exceptions.ConnectionError: HTTPSConnectionPool ↓
cause Network issue or API endpoint unreachable (e.g., invalid URL or proxy).
fix
Check your internet connection and ensure no proxy blocks requests to api.monarchmoney.com.
Warnings
breaking Saved sessions older than v0.1.14 may cause 403 errors. Delete the .mm session file if you encounter auth failures after upgrade. ↓
fix Run: rm -fR .mm in the directory where the session was saved, then re-authenticate.
deprecated The alpha/beta status of this library means the API may change without notice. Pin your version to avoid sudden breakage. ↓
fix Use monarchmoney==0.1.15 in your requirements.txt or poetry.lock.
gotcha The library uses an unsupported, unofficial API. Monarch Money may ban your account for excessive or abnormal usage. ↓
fix Limit request frequency and avoid scraping; use as intended for personal finance management.
Imports
- MonarchMoney wrong
import monarchmoneycorrectfrom monarchmoney import MonarchMoney
Quickstart
from monarchmoney import MonarchMoney
mm = MonarchMoney()
mm.login(username='your-email', password='your-password')
accounts = mm.get_accounts()
print(accounts)