3

This is a(nother) Python wrapper for the Stack Exchange API. I wrote this to assist with a couple of my projects that needed to do a lot of API interactions. After using it and polishing it up for as long as I have, it's time to release it for others as well.

Features

  • Multiple pages of results are all returned in a single object. The library automatically paginates for you, up to a maximium number of pages the developer selects.
  • StackAPI automatically respects the backoff parameter. This is useful if you are retreiving a large number of pages, as it will automatically slow down to respect the API's backoff.
  • Supports both read and write functionality, assuming you have an application and token with a scope that contains write_access.
  • Errors thrown by the API are automatically converted to Python exceptions for easier troubleshooting
  • Support for Python 2.7 through 3.5.
  • Supports passing Python datetime objects as parameters to the API.
  • Supports usage behind a proxy

Installation

Installation is simple:

pip install stackapi

Examples

Basic Example

StackAPI is fairly easy to utilize. You can retrieve the 600 newest comments on a site in three lines of code - including imports.

from stackapi import StackAPI
SITE = StackAPI('stackoverflow')
comments = SITE.fetch('comments')

Filtering API results

If you want to utilize the filters provided by the API, that is as simple as passing data to named parameters. In the following example, we are looking for 3 badges (only 2 of which exist):

from stackapi import StackAPI
SITE = StackAPI('stackoverflow')
badges = SITE.fetch('badges', ids=[222, 1306, 99999])

This will return a result that contains information for badge id 222 and 1306. The third will have no data, as it doesn't exist in the system.

Complex API queries

StackAPI can perform the complex queries mentioned in the documentation. This example shows the questions created during the Modern Warfare 3 VS Skyrim Contest with the skryim tag and a score greater than 10 on Gaming Stack Exchange.

SITE = StackAPI('gaming')
from datetime import datetime
questions = SITE.fetch('questions', fromdate=datetime(2011,11,11), todate=datetime(2011,11,19), min=10, sort='votes', tagged='skyrim')

This will return 231 questions. Notice that we are able to pass in datetime objects, instead of timestamp integers.

Documentation

The Documentation is available on Read The Docs: http://stackapi.readthedocs.org/en/latest/index.html

The documentation contains many more examples of various ways to use StackAPI, including using a proxy, sending data to the API and all of the complex queries mentioned in the API documentation. There is also a full overview of the classes and methods that StackAPI utilizes.

Code

The code is available on GitHub: https://github.com/AWegnerGitHub/stackapi

StackAPI is also available on PyPI: https://pypi.python.org/pypi/StackAPI

License

StackAPI is licensed under the MIT License and that is available in the code repository

You must log in to answer this question.

Browse other questions tagged .