Wikipedia Revision History Scraper β Page Edit History by Date
Pricing
from $1.50 / 1,000 results
Wikipedia Revision History Scraper β Page Edit History by Date
Scrape the complete edit / revision history of any Wikipedia page. Every edit: who, when, summary, byte size + delta, tags, minor flag, revision IDs. Any language, any MediaWiki project, category expansion, date & user filters. No API key, no login.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Wikipedia Revision History Scraper β Full Page Edit History by Date (No API Key)
Extract the complete revision (edit) history of any Wikipedia page β or any page on Wiktionary, Wikibooks, Wikiquote, Wikinews, Wikisource, Wikiversity or Wikivoyage. This Wikipedia revision history scraper returns every edit ever made to a page as clean, flat rows: who edited, when, the edit summary, the byte size and byte delta, change tags, the minor-edit flag, revision and parent IDs, the content SHA-1 and a permanent link to view each revision. It works for any language edition, can expand an entire category into hundreds of pages, and filters by date window or editor. Fast, no browser, no Wikipedia account, no API key, no login β powered directly by the keyless MediaWiki Action API.
π Why this Wikipedia revision history scraper?
Every edit as a flat row Β· thousands of revisions per run Β· byte-level
sizeDeltaper edit Β· date-bounded windows going back to a page's first edit Β· filter by editor Β· expand a whole category Β· any language, any MediaWiki project Β· export to JSON / CSV / Excel. The unofficial Wikipedia edit-history / MediaWiki API alternative for research, contributor analytics, vandalism detection and AI training corpora.
What does this Actor do?
The Actor queries the official, keyless MediaWiki Action API (/w/api.php) with action=query&prop=revisions against the wiki host you choose (for example https://en.wikipedia.org/w/api.php). For each page it pages through the entire history using the API's rvcontinue token β fetching up to 500 revisions per request β until it has the depth you asked for or the page runs out of edits. It requests ids | timestamp | user | userid | comment | size | tags | flags | sha1 for each revision, sorts them oldestβnewest, and computes the byte sizeDelta of every edit against the immediately preceding version. Date bounds map to the API's rvstart / rvend parameters, an editor filter maps to rvuser, and an optional category is expanded into member pages via list=categorymembers. Every request carries a descriptive User-Agent and honours the API's maxlag politeness signal with exponential backoff. Optionally it can attach the full wikitext of each revision.
Who is it for?
- Misinformation & edit-war researchers studying how contentious articles change over time and who is driving those changes.
- Academics & computational social scientists building longitudinal datasets of article evolution, contributor behaviour and content growth.
- Data journalists reconstructing exactly when and how a claim entered (or left) a Wikipedia page around a news event.
- AI / NLP & ML teams assembling revision-level corpora, diff datasets and edit-summary training data.
- Trust & safety / community analysts detecting vandalism spikes, anonymous-IP surges and coordinated editing on watched pages.
Use cases
- Brand & reputation monitoring β track every edit to your company's or product's Wikipedia page: who changed what, when, and by how many bytes.
- Edit-war & controversy analysis β pull the full history of a disputed article and see the back-and-forth revert pattern in the
comment,sizeDeltaandtagsfields. - Contributor auditing β filter to a single editor or bot and export every revision they ever made to a page.
- Content-growth studies β chart an article's
sizeover years to see how coverage of a topic expanded or was trimmed. - AI training corpora β with
includeContenton, capture the full wikitext of thousands of historical versions for diff and rewrite datasets.
Why use this Actor?
- π 100% keyless β no Wikipedia login, no OAuth, no API key, no client secret. It reads the public MediaWiki Action API directly.
- π§Ύ 18 fields per revision β editor, user ID, anonymity, timestamp, edit summary, minor flag, size, byte delta, tags, SHA-1, revision & parent IDs, and a direct permalink to each version.
- π Bulk & category expansion β pass many page titles at once, or point it at a category and it fans out to hundreds of member pages, each with its full history β thousands of rows per run.
- π― Precise filters β narrow by
afterDate/beforeDate(ISO), by a specificuserFiltereditor, and cap depth withmaxRevisionsPerPage. - π Any language, any project β set
language(en, de, fr, es, tr, ja, zhβ¦) andproject(Wikipedia, Wiktionary, Wikibooks, Wikiquote, Wikinews, Wikisource, Wikiversity, Wikivoyage). - π€ Clean, flat export & pay-per-result β every edit is one tidy row, exportable to JSON, CSV, Excel, HTML, XML or JSONL, with simple pay-per-result pricing.
What data can you extract?
Each row is a single revision of a single page. Numbers and booleans are shown as numeric / boolean columns in the dataset view and exported cleanly to CSV, JSON and Excel.
| Field | Type | Description |
|---|---|---|
page | string | Page title the revision belongs to. |
pageId | number | MediaWiki numeric page ID. |
language | string | Wiki language code (e.g. en). |
project | string | MediaWiki project (e.g. wikipedia). |
revId | number | This revision's unique ID. |
parentId | number | The previous revision's ID (0 for the first edit). |
timestamp | string | When the edit was made (ISO 8601 UTC). |
user | string | Username or IP address that made the edit. |
userId | number | Numeric user ID (0 for anonymous / IP edits). |
isAnonymous | boolean | true when the edit was made by an IP (not a registered account). |
isMinor | boolean | Whether the editor flagged the edit as minor. |
comment | string | The edit summary left by the editor. |
size | number | Page size in bytes after this revision. |
sizeDelta | number | Byte change vs the parent revision (+ added, β removed). |
tags | string | Change tags, comma-joined (e.g. mobile edit, visualeditor). |
sha1 | string | SHA-1 hash of the revision content. |
revisionUrl | string | Permanent link to view this exact revision. |
content | string | Full wikitext at this revision (only when includeContent is enabled). |
Example output object
{"page": "Bitcoin","pageId": 28249265,"language": "en","project": "wikipedia","revId": 1363572085,"parentId": 1363571325,"timestamp": "2026-07-11T01:38:40Z","user": "Idacticus","userId": 54142316,"isAnonymous": false,"isMinor": true,"comment": "link added","size": 113434,"sizeDelta": 44,"tags": "visualeditor","sha1": "bd9a2e11915de7e4491e313dbefaa7683957aaeb","revisionUrl": "https://en.wikipedia.org/w/index.php?title=Bitcoin&oldid=1363572085"}
How to use
You can target pages two ways β list titles directly, or expand a category.
Option A β by page title (or URL)
- Open the Actor and add one or more titles to Page titles or URLs (full Wikipedia URLs are accepted and stripped to the title automatically).
- Set language (default
en) and project (defaultwikipedia). - Optionally add a date window, an editor filter, or a max revisions per page cap.
- Click Start. Each page is paged to full depth and every edit is saved as one row.
{"pages": ["Bitcoin", "ChatGPT", "https://en.wikipedia.org/wiki/Artificial_intelligence"],"language": "en","project": "wikipedia","maxRevisionsPerPage": 2000}
Option B β by category (huge volume)
- Put a category name (without the
Category:prefix) in the Category field. - Set Max pages from category to bound how many member pages are expanded.
- Click Start. The Actor discovers member pages and scrapes each one's full revision history.
{"category": "Cryptocurrencies","maxPagesFromCategory": 30,"language": "en","project": "wikipedia","afterDate": "2022-01-01","maxRevisionsPerPage": 500}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
pages | array | ["Bitcoin","ChatGPT"] | Page titles or full wiki URLs to scrape. |
language | string | en | Wiki language / edition code (en, de, fr, es, tr, ja, zhβ¦). |
project | string (select) | wikipedia | MediaWiki project (wikipedia, wiktionary, wikibooks, wikiquote, wikinews, wikisource, wikiversity, wikivoyage). |
category | string | "" | Optional category name (no Category: prefix) to expand into member pages. |
maxPagesFromCategory | integer | 50 | Max member pages to expand when category is set. |
afterDate | string | null | Only revisions made after this ISO date (older bound). |
beforeDate | string | null | Only revisions made before this ISO date (newer bound). |
userFilter | string | "" | Only revisions by this exact editor (username or IP). |
maxRevisionsPerPage | integer | 2000 | Cap on revisions per page (newest-first). 0 = full history. |
includeContent | boolean | false | Include the full wikitext of each revision (heavy, slow). |
maxItems | integer | 0 | Global cap on rows across all pages. 0 = unlimited. |
proxyConfiguration | object | Apify Proxy on | Datacenter proxy by default; used mainly for fresh IPs on retry. |
Full input example
{"pages": ["Climate change"],"language": "en","project": "wikipedia","afterDate": "2020-01-01","beforeDate": "2021-12-31","userFilter": "","maxRevisionsPerPage": 1000,"includeContent": false,"maxItems": 5000,"proxyConfiguration": { "useApifyProxy": true }}
Output example
{"page": "ChatGPT","pageId": 72287769,"language": "en","project": "wikipedia","revId": 1189998877,"parentId": 1189998001,"timestamp": "2023-12-14T18:22:05Z","user": "203.0.113.42","userId": 0,"isAnonymous": true,"isMinor": false,"comment": "/* History */ added release detail","size": 208764,"sizeDelta": 512,"tags": "mobile edit, mobile web edit","sha1": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678","revisionUrl": "https://en.wikipedia.org/w/index.php?title=ChatGPT&oldid=1189998877"}
Tips for best results
- Set a
maxRevisionsPerPagecap on very active articles β high-traffic pages can have 20,000+ edits. The cap keeps the newest N revisions and controls cost. - Use date windows for eras.
afterDateis the older bound andbeforeDateis the newer bound; combine them to slice a specific year or event window. - Audit one editor by setting
userFilterto a username or IP β you get only their edits to each page. - Expand categories for scale. One category can fan out to hundreds of pages; raise
maxPagesFromCategorydeliberately and watch the row count. - Leave
includeContentoff unless you truly need wikitext β it multiplies data size and runtime dramatically. - Pass full URLs freely β
https://de.wikipedia.org/wiki/Berlinis accepted; just remember to also setlanguage: "de"so the API host matches. - Sister projects work the same β set
projecttowiktionary,wikisource, etc., and the identical engine applies. - The oldest emitted row's
sizeDeltais anchored by fetching one extra older revision, so deltas are accurate even at your cap boundary. isAnonymous/userId: 0marks IP edits β a useful signal for vandalism and unregistered-contributor analysis.- Use
maxItemsas a global budget ceiling across all pages in a single run.
Integrations
Wire this Actor into your stack with Apify's built-in connectors:
- Google Sheets β push each run's revisions straight into a spreadsheet for pivot tables and charts.
- Slack β get notified when a monitored page crosses an edit-volume threshold.
- Zapier & Make β trigger downstream workflows (alerts, tickets, dashboards) on new revisions.
- Webhooks β POST the dataset to your own API or data warehouse when a run finishes.
- Schedule β run daily or hourly to keep a rolling archive of a page's or category's edit history.
API usage
Run the Actor programmatically with the Apify API or clients.
cURL
curl -X POST "https://api.apify.com/v2/acts/logiover~wikipedia-revision-history-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"pages":["Bitcoin"],"language":"en","maxRevisionsPerPage":500}'
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('logiover/wikipedia-revision-history-scraper').call({pages: ['Bitcoin', 'ChatGPT'],language: 'en',project: 'wikipedia',maxRevisionsPerPage: 1000,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("logiover/wikipedia-revision-history-scraper").call(run_input={"pages": ["Bitcoin"],"language": "en","project": "wikipedia","maxRevisionsPerPage": 1000,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Use with AI agents (MCP)
This Actor is a clean, structured data source for LLM agents and MCP-based tools. Point your agent at it to fetch the edit history of any Wikipedia page on demand β for example to answer "when was this claim added to the article and by whom?" or to feed revision-level context into a RAG pipeline. An example agent prompt: "Use the Wikipedia Revision History Scraper to pull every 2024 edit to the 'ChatGPT' article, then summarize who made the largest byte additions and what their edit summaries said." The flat, typed rows drop straight into tool-calling and retrieval workflows.
FAQ
Do I need a Wikipedia account or API key?
No. The Actor uses the public, keyless MediaWiki Action API. There is no login, OAuth, API key or client secret β you just provide page titles.
How far back does the history go?
To the page's very first edit. MediaWiki keeps the complete revision history of every page, and the Actor pages through all of it (bounded only by your maxRevisionsPerPage and date filters).
How many revisions can I get per run?
Thousands, easily. A single busy article can hold 20,000+ edits, and a category expands to many pages. Use maxRevisionsPerPage, maxPagesFromCategory and maxItems to control depth, breadth and total volume.
What does sizeDelta mean?
It is the byte change of a revision compared with the immediately preceding version β positive when content was added, negative when removed. The oldest emitted row is anchored with an extra fetched revision so its delta is accurate too.
A run returned zero rows β why?
Usually the filters excluded everything (a date window with no edits, or a userFilter editor who never touched the page), or the page title was misspelled / doesn't exist on that language edition. Missing pages are logged and skipped. Check the log and loosen the filters.
Why are some fields empty or 0?
userId is 0 and isAnonymous is true for IP (unregistered) edits. comment is empty when the editor left no summary. tags is empty when no change tags apply. parentId is 0 on the first-ever edit. These are faithful to the source data.
Can I export to CSV, JSON or Excel?
Yes. Open the Output/Dataset tab and download as CSV, JSON, Excel, HTML, XML or JSONL, or pull the data via the Apify API and webhooks. Every revision is a flat row, so it imports cleanly into spreadsheets and databases.
Does it work for non-English Wikipedia and sister projects?
Yes. Set language to any edition code (de, fr, es, tr, ja, zhβ¦) and project to Wikipedia or any sister project (Wiktionary, Wikibooks, Wikiquote, Wikinews, Wikisource, Wikiversity, Wikivoyage). The same engine applies.
How do I get only one editor's edits to a page?
Set userFilter to that exact username or IP address. The Actor returns only that contributor's revisions on each page β ideal for auditing a bot or a single user.
Can I include the full text of each revision?
Yes β enable includeContent and each row will carry the full wikitext at that revision. This is heavy (megabytes per page) and much slower, so leave it off unless you need it for diffs or corpora.
How do I monitor a page for new edits?
Schedule the Actor to run on an interval with a recent afterDate (or just re-run and diff by revId). Wire the finish webhook into Slack or your database to alert on new revisions.
Is this an official Wikipedia product?
No. It is an independent Actor that reads Wikipedia's own public MediaWiki API. It is not affiliated with or endorsed by the Wikimedia Foundation.
Is it legal?
This Actor collects publicly available revision metadata (and, optionally, wikitext) that Wikipedia and its sister projects already publish openly through their own MediaWiki API. Wikimedia content is released under free licenses (predominantly CC BY-SA and, for text, the GFDL); when you reuse the content you are responsible for complying with those licenses and with the Wikimedia Terms of Use. The Actor identifies itself with a descriptive User-Agent and honours the API's maxlag politeness signal. You are responsible for using the extracted data lawfully, including under GDPR and any applicable local regulations, particularly where usernames or IP addresses are involved.
Related scrapers
Building a wider knowledge-base or research dataset? Pair this with other logiover Actors:
- Wikipedia Category Scraper β enumerate every page in a Wikipedia category tree.
- Wikidata Scraper β pull structured entity data (claims, labels, identifiers) from Wikidata.
- Reddit Historical Archive Scraper β years of old Reddit posts and comments by date, no API key.
- π Browse all logiover scrapers on Apify Store β 180+ Actors across research, social media, real estate, jobs and B2B data.
Changelog
2026-07-22
- π Initial release: full page revision-history extraction via the keyless MediaWiki Action API β 18 fields per edit, byte-level
sizeDelta, category expansion, date & editor filters, any language and any MediaWiki project, with optional full-wikitext capture.