Python library for accessing Personal Capital data
pip install personalcapital
You can get the source code by cloning it from Github:
git clone https://github.com/haochi/personalcapital.git
or get the tarball:
curl -OJL https://github.com/haochi/personalcapital/tarball/master
then either include the library into your code, or install it with:
python setup.py install
You need to first create an instance.
pc = PersonalCapital()Then you will need to authenticate the account by logging in:
pc.login(email, password)login may throw a RequireTwoFactorException, if two factor is enabled on your account and the current session is not yet associated with the account.
In this case, you will need to pick a way to complete the two factor authenticate by calling
pc.two_factor_challenge(mode)mode can either be TwoFactorVerificationModeEnum.SMS or TwoFactorVerificationModeEnum.EMAIL.
Then you need to finish the two factor challenge by verifying the code and continue the login process.
pc.two_factor_authenticate(mode, raw_input('code'))
pc.authenticate_password(password)Once authenticated, you can start fetching data from the Personal Capital API.
accounts_response = pc.fetch('/newaccount/getAccounts')The above request will load your accounts data, and with that response you can get your net worth.
print('Networth', accounts_response.json()['spData']['networth'])To avoid two factor authentication every time you run the script, you can use get_session() to store your session somewhere and set_session(session) to re-use the session.
Here's the entire thing.
from personalcapital import PersonalCapital, RequireTwoFactorException, TwoFactorVerificationModeEnum
pc = PersonalCapital()
email, password = "email@domain.tld", "password"
try:
pc.login(email, password)
except RequireTwoFactorException:
pc.two_factor_challenge(TwoFactorVerificationModeEnum.SMS)
pc.two_factor_authenticate(TwoFactorVerificationModeEnum.SMS, raw_input('code: '))
pc.authenticate_password(password)
accounts_response = pc.fetch('/newaccount/getAccounts')
accounts = accounts_response.json()['spData']
print('Networth: {0}'.format(accounts['networth']))See main.py for an example script.
To run it, simply run python main.py.
Or set the environment email and password so you don't need to enter it every time.
PEW_PASSWORD="password" PEW_EMAIL="email" python main.py Please inspect the network requests to see what requests are possible. The main.py example includes two such calls.