Skip to main content

Tiny MediaWiki API client library from the author of the MW API

Project description

pywikiapi: A Tiny Python MediaWiki API Lib

GitHub Coverage Issues Pull Requests CI build

This is a minimalistic library that handles some of the core MediaWiki API complexities like handling continuations, login, errors, and warnings, but does not impose any additional abstraction layers, allowing you to use every single feature of the MW API directly in the most optimal way.

The library was written by the original author of the MediaWiki API itself, and tries to address some of the mistakes of the original API design... Some things should have been done differently. :)

from pywikiapi import wikipedia
# Connect to English Wikipedia
site = wikipedia('en')

# Iterate over all query results as they are returned
# from the server, handling continuations automatically.
# (pages whose title begins with "New York-New Jersey")
for r in site.query(list='allpages', apprefix='New York-New Jersey'):
  for page in r.allpages:

# Iterate over two pages, getting the page info and the list of links for each of the two pages. Each page will be yielded as a separate result.
for page in site.query_pages(titles=['Test', 'API'], prop=['links', 'info'], pllimit=10):
    print(', '.join([l.title for l in page.links]))

site.login('username', 'password')
site('edit', text=...)


You can install the library from PyPI:

pip install pywikiapi


python3 -m pip install pywikiapi

The library requires Python 3.6+

How to use

  • Create a Site object, either directly or with the wikipedia helper function.
  • Use site.query(...) or site.iterate(action, ...) for all iteration-related API calls. The API will handle all the continuation logic internally.
  • Use site.query_pages(...) to get one page object at a time from the action=query.
  • Use site('query', meta='siteinfo') to access any API action, passing any additional params as keys.

Data formats

The library will properly handle all of the basic parameter types:

  • Numbers and strings will be passed as is
  • Boolean True will be passed as "1".
  • None and boolean False will not be included.
  • Datetimes will be formatted with isoformat(). Warning: make sure datetime is in UTC timezone.
  • Lists will be converted into a pipe | -separated string of values.


To test, run python3 test -q or use ./

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywikiapi-5.0.0.tar.gz (13.4 kB view hashes)

Uploaded Source

Built Distribution

pywikiapi-5.0.0-py3-none-any.whl (11.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page