wikimedia
pywikibot
Python

A Python library that interfaces with the MediaWiki API. This is a mirror from gerrit.wikimedia.org. Do not submit any patches here. See https://www.mediawiki.org/wiki/Developer_account for contributing.

Last updated Jul 5, 2026
757
Stars
218
Forks
0
Issues
+1
Stars/day
Attention Score
70
Language breakdown
No language data available.
โ–ธ Files click to expand
README

.. image:: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml/badge.svg?branch=master :alt: GitHub CI :target: https://github.com/wikimedia/pywikibot/actions/workflows/pywikibot-ci.yml .. image:: https://codecov.io/gh/wikimedia/pywikibot/branch/master/graph/badge.svg :alt: Code coverage :target: https://app.codecov.io/gh/wikimedia/pywikibot .. image:: https://img.shields.io/pypi/pyversions/pywikibot.svg :alt: Python :target: https://www.python.org/downloads/ .. image:: https://img.shields.io/github/languages/top/wikimedia/pywikibot :alt: Top language :target: https://www.python.org/downloads/ .. image:: https://img.shields.io/pypi/v/pywikibot.svg :alt: Pywikibot release :target: https://pypi.org/project/pywikibot/ .. image:: https://img.shields.io/pypi/wheel/pywikibot :alt: wheel :target: https://pypi.org/project/pywikibot/ .. image:: https://static.pepy.tech/badge/pywikibot :alt: Total downloads :target: https://pepy.tech/project/pywikibot .. image:: https://static.pepy.tech/personalized-badge/pywikibot?period=month&units=internationalsystem&leftcolor=black&rightcolor=blue&lefttext=monthly :alt: Monthly downloads :target: https://pepy.tech/project/pywikibot .. image:: https://img.shields.io/github/last-commit/wikimedia/pywikibot :alt: Last commit :target: https://gerrit.wikimedia.org/r/plugins/gitiles/pywikibot/core/


Pywikibot

The Pywikibot framework is a Python library that interfaces with the MediaWiki API <https://www.mediawiki.org/wiki/API:Mainpage> version 1.31 or higher.

Also included are various general function scripts that can be adapted for different tasks.

For further information about the library excluding scripts see the full code documentation <https://doc.wikimedia.org/pywikibot/stable/>_.

Quick start ===========

.. code:: text

git clone https://gerrit.wikimedia.org/r/pywikibot/core.git cd core git submodule update --init pip install -r requirements.txt python pwb.py

Or to install using PyPI (excluding scripts)

.. code:: text

pip install pywikibot pwb

Our installation guide <https://www.mediawiki.org/wiki/Manual:Pywikibot/Installation>_ has more details for advanced usage.

Basic Usage ===========

If you wish to write your own script it's very easy to get started:

.. code:: python

import pywikibot site = pywikibot.Site('en', 'wikipedia') # The site we want to run our bot on page = pywikibot.Page(site, 'Wikipedia:Sandbox') page.text = page.text.replace('foo', 'bar') page.save('Replacing "foo" with "bar"') # Saves the page

Wikibase Usage ==============

Wikibase is a flexible knowledge base software that drives Wikidata. A sample pywikibot script for getting data from Wikibase:

.. code:: python

import pywikibot site = pywikibot.Site('wikipedia:en') repo = site.data_repository() # the Wikibase repository for given site page = repo.pagefromrepository('Q91') # create a local page for the given item item = pywikibot.ItemPage(repo, 'Q91') # a repository item data = item.get() # get all item data from repository for this item

Script example ==============

Pywikibot provides bot classes to develop your own script easily:

.. code:: python

import pywikibot from pywikibot import pagegenerators from pywikibot.bot import ExistingPageBot

class MyBot(ExistingPageBot):

update_options = { 'text': 'This is a test text', 'summary': 'Bot: a bot test edit with Pywikibot.' }

def treat_page(self): """Load the given page, do some changes, and save it.""" text = self.current_page.text text += '\n' + self.opt.text self.put_current(text, summary=self.opt.summary)

def main(): """Parse command line arguments and invoke bot.""" options = {} gen_factory = pagegenerators.GeneratorFactory() # Option parsing localargs = pywikibot.handleargs(args) # global options localargs = genfactory.handleargs(localargs) # generators options for arg in local_args: opt, sep, value = arg.partition(':') if opt in ('-summary', '-text'): options[opt[1:]] = value MyBot(generator=gen_factory.getCombinedGenerator(), **options).run()

if name == 'main__': main()

For more documentation on Pywikibot see our docs <https://doc.wikimedia.org/pywikibot/>_.

Roadmap =======

.. include:: ROADMAP.rst

Release history ===============

See https://github.com/wikimedia/pywikibot/blob/stable/HISTORY.rst

Contributing ============

Our code is maintained on Wikimedia's Gerrit installation <https://gerrit.wikimedia.org/>_, learn <https://www.mediawiki.org/wiki/Developeraccount> how to get started.

.. include:: CODEOFCONDUCT.rst

ยฉ 2026 GitRepoTrend ยท wikimedia/pywikibot ยท Updated daily from GitHub