A Python wrapper for Azavea's Cicero API
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Python-Cicero provides a Pythonic "wrapper" to Azavea's Cicero API for address-based legislative and non-legislative district matching, lookup of elected official contact information, and election events.

Installation / Setup

Use pip to install the library:

pip install python-cicero

If you anticipate making improvements/extensions and would like to document them, use the extras_require convention to also install the Pycco documentation generator as a dependency (see Documentation section below):

pip install python-cicero['docs']

To make requests to the Cicero API, you will need a Cicero account. A free trial of the API is available by registering here. The process for purchasing additional API credits is described on the Cicero website.


There are a few ways to run the unit tests.

One option is to use the shell script in the root of the repository called test.example.sh. Copy it using cp test.example.sh test.sh. Edit test.sh to include your Cicero API username and password. Then, run the tests using ./test.sh.

Another option is to edit the test/tests.py file directly, adding your Cicero API credentials where indicated. Doing so will allow you to execute tests using nosetests (if you have the nose package installed), or using python setup.py test, or invoking the tests.py file itself.


Documentation, generated with Pycco, is available in the "docs" folder as HTML files. The filenames correspond to the appropriate module being documented.

For examples of the wrapper in use, see the cicero_examples.py file.


All of us at Azavea would be happy to help you get the most out of your Cicero API account. For questions about this wrapper, contact us.


python-cicero is licensed under the Apache 2.0 license. See LICENSE.txt for more details.


See a bug? Want to improve the docs or provide more examples? Thank you! Please open a pull-request with your improvements and we'll work to respond to it in a timely manner.