Skycart
A free, open-source Python package for Blackbaud's SKY API. It handles the login, token refreshes, paging, and rate limits, so a Jupyter cell can just ask Raiser's Edge for data.
From install to answers
Raiser's Edge will tell you a prospect is in Cultivation. The SKY API can tell you they've been there for 224 days. With Skycart, that's one line.
-
Install it
pip install "skycart[pandas] @ git+https://github.com/ngoodroe/skycart.git" -
Log in once, then ask for anything
import skycart skycart.login() # once -- opens your browser skycart.get_prospect_status("280") # {'status': 'Cultivation', 'days_elapsed': 224, ...} -
Sort a gift officer's portfolio by days in status
assignments = skycart.get_fundraiser_assignments("123") ids = [a["constituent_id"] for a in assignments] statuses = skycart.to_dataframe(skycart.get_prospect_statuses(ids)) statuses.sort_values("days_elapsed", ascending=False)
Why I built it
-
Data RE queries can't reach
Days in prospect status, fundraiser assignments, relationships: the SKY API exposes a lot that queries and exports don't. Any endpoint is one
skycart.get()away. -
Built for notebooks
Answers come back as plain Python data.
get_all()follows the paging for you, andto_dataframe()turns any result into a pandas table. -
Small enough to read
Four short, commented files, so you can see exactly what it does with your credentials. Your login stays on your own computer. MIT licensed.
Want help putting it to work?
Skycart is free. If you'd like a hand getting it set up, or need something bigger built on your Raiser's Edge data, I'd like to hear about it.
Skycart isn't affiliated with or endorsed by Blackbaud. Raiser's Edge NXT and SKY API are Blackbaud trademarks.