Complex API Queries

The API Documentation explains that advanced queries can be generated using combinations of the min, max, sort, fromdate and todate parameters. This portion of the documentation explains how to replicate the examples provided using StackAPI.

All Stack Overflow Users Created on Feb. 27th of 2011

>>> from stackapi import StackAPI
>>> from datetime import datetime
>>> SITE = StackAPI('stackoverflow')
>>> SITE.max_pages=10
>>> users = SITE.fetch('users', fromdate=datetime(2011,02,27), todate=datetime(2011,02,28))
>>> len(users['items'])

This one is pretty straight forward. The biggest thing here is that max_pages is adjusted upward because there are more new users created on that day than StackAPI returns by default.

Comments with at least a score of 10 on Ask Ubuntu

>>> from stackapi import StackAPI
>>> SITE = StackAPI('askubuntu')
>>> comments = SITE.fetch('comments', min=10, sort='votes')
>>> len(comments['items'])

Note This value differs from the result in the total element. This is not a StackAPI bug, but appears to be a problem on the Stack Exchange side. This has been reported as a bug and this documentation will be adjusted depending on the outcome of the bug.

Of three specific posts on Server Fault, which one has the most recent activity

>>> from stackapi import StackAPI
>>> SITE = StackAPI('serverfault')
>>> SITE.max_pages=1
>>> SITE.page_size=1
>>> post = SITE.fetch('posts', ids=[3743, 327738, 339426], sort='activity', order='desc')
>>> post['items'][0]['post_id']

Any favorites added in the month of December 2011 by Darin Dimitrov

>>> SITE = StackAPI('stackoverflow')
>>> from datetime import datetime
>>> favorites = SITE.fetch('users/{ids}/favorites', min=datetime(2011, 12, 1), max=datetime(2012, 1, 1), sort='added', ids=[29407])
>>> len(favorites['items'])

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')
>>> len(questions['items'])