Wikipedia Pageviews Scraper: Traffic & Trend Analysis avatar

Wikipedia Pageviews Scraper: Traffic & Trend Analysis

Pricing

from $0.37 / 1,000 pageview scrapeds

Go to Apify Store
Wikipedia Pageviews Scraper: Traffic & Trend Analysis

Wikipedia Pageviews Scraper: Traffic & Trend Analysis

Scrape Wikimedia pageview analytics: daily or monthly views for any article, by access method and agent type. A genuinely free proxy for public interest.

Pricing

from $0.37 / 1,000 pageview scrapeds

Rating

0.0

(0)

Developer

Arman Hossain

Arman Hossain

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

18 days ago

Last modified

Share

Wikipedia Pageviews Scraper: Daily or monthly view counts for any Wikipedia article, with the total, peak day and trend already computed

Wikipedia Pageviews Scraper pulls daily or monthly view counts for any Wikipedia article from the Wikimedia Analytics API, and returns each series with its total, its peak day and a trend figure already computed.

Pageviews are the closest thing to a free, public, unlogged search-volume signal: real attention, per topic, per day, back to 2015, in every language edition. This Actor reads the official analytics endpoint directly: no proxy setup, no browser, no credentials to manage.

Agent skill: SKILL.md

https://api.apify.com/v2/key-value-stores/t7YoTxpZEJOWvw4Ug/records/wikipedia-pageviews-scraper.md

What you get

Series mode (default), one record per article:

Output fieldMeaning
article, projectUnderscore-encoded title and the Wikimedia project it came from
granularity, accessMethod, agentThe query that produced this series
fromDate, toDate, dataPointsWindow requested and how many points came back
totalViews, averageViewsSum and mean across the window
peakDate, peakViewsBusiest day (or month) and its count
trendPercentSecond half of the window vs the first half, in per cent
seriesThe points themselves: { timestamp, date, views }
scrapedAtRun timestamp

Rows mode, one record per data point, carrying its series' aggregates on every row: article, project, granularity, timestamp, views, accessMethod, agent, totalViews, peakDate, peakViews, trendPercent, scrapedAt. This is the shape that exports straight to CSV and drops into a chart.

A RUN_SUMMARY record in the key-value store holds per-run counts, the filters used, and any article that failed.

Common use cases

  • Brand and topic monitoring. Track public interest in a company, product or person over time.
  • News correlation. Line up attention spikes with events and press coverage.
  • Free search-volume proxy. A directional substitute for keyword tools, with no seat licence.
  • Content prioritisation. Find which topics in your space people actually look up.
  • Seasonality analysis. Pull monthly granularity over several years in one run.

Quick start

Last month for two topics:

{
"articles": ["Web scraping", "Python (programming language)"],
"fromDate": "20260101",
"toDate": "20260131"
}

Five years of monthly seasonality, CSV-ready:

{
"articles": ["Christmas", "Halloween"],
"project": "en.wikipedia",
"fromDate": "2021-01-01",
"toDate": "2026-01-01",
"granularity": "monthly",
"outputMode": "rows"
}

Mobile-only traffic on the German Wikipedia:

{
"articles": ["https://de.wikipedia.org/wiki/Kartoffel"],
"fromDate": "20260101",
"toDate": "20260131",
"accessMethod": "mobile-web",
"agent": "user"
}

Input

FieldTypeDefaultNotes
articlesarray-Required. Titles or full Wikipedia URLs. A URL also sets that article's project.
projectstringen.wikipediaProject for plain titles, de.wikipedia, en.wikinews, …
fromDatestring31 days agoRequired. YYYYMMDD or YYYY-MM-DD.
toDatestringyesterdayRequired. YYYYMMDD or YYYY-MM-DD. Data lags roughly a day.
granularitystringdailydaily or monthly.
accessMethodstringall-accessall-access, desktop, mobile-web, mobile-app.
agentstringuseruser excludes known bots, the honest interest signal. Also all-agents, spider, automated.
outputModestringseriesseries = one record per article; rows = one record per data point.

Output example

Series mode:

{
"article": "Web_scraping",
"project": "en.wikipedia",
"granularity": "daily",
"accessMethod": "all-access",
"agent": "user",
"fromDate": "20260101",
"toDate": "20260131",
"dataPoints": 31,
"totalViews": 15367,
"averageViews": 496,
"peakDate": "2026-01-23",
"peakViews": 1068,
"trendPercent": 2.9,
"series": [
{ "timestamp": "2026010100", "date": "2026-01-01", "views": 249 },
{ "timestamp": "2026010200", "date": "2026-01-02", "views": 368 }
],
"scrapedAt": "2026-08-06T11:44:00.000Z"
}

Rows mode:

{
"article": "Berlin",
"project": "en.wikipedia",
"granularity": "daily",
"timestamp": "2026-01-01",
"views": 3750,
"accessMethod": "all-access",
"agent": "user",
"totalViews": 27726,
"peakDate": "2026-01-07",
"peakViews": 4701,
"trendPercent": 11.2,
"scrapedAt": "2026-08-06T11:44:00.000Z"
}

API example

curl -X POST "https://api.apify.com/v2/acts/arman-bd~wikipedia-pageviews-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"articles": ["Web scraping"],
"fromDate": "20260101",
"toDate": "20260131"
}'

JavaScript example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('arman-bd/wikipedia-pageviews-scraper').call({
articles: ['Christmas', 'Halloween'],
fromDate: '2025-01-01',
toDate: '2026-01-01',
granularity: 'monthly',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const s of items) console.log(`${s.article}: ${s.totalViews} views, peak ${s.peakViews} in ${s.peakDate}`);

Limits and behaviour

  • Titles must match the URL form exactly. A mismatched title returns 404 with no explanation, the API cannot tell "no such article" from "no data". The Actor normalises spaces to underscores and capitalises the first letter for you, but everything after that is case-sensitive: Python (programming language), not python (Programming Language). Pasting the article URL is the safest input.
  • trendPercent is second half vs first half of the window you asked for, rounded to one decimal. It is null for series shorter than four points, or when the first half had zero views.
  • Data lags about a day, so toDate defaults to yesterday rather than today.
  • Missing articles don't kill the run. A 404 is recorded in RUN_SUMMARY.failures and the run continues; the Actor only errors out if every article fails.
  • Transient errors are retried. 429 and 5xx get four attempts with exponential backoff and jitter.
  • Descriptive user agent. Wikimedia throttles generic clients within a handful of requests; every request identifies this Actor.
  • Public, aggregate data only. Pageview counts are anonymised aggregates, no user-level data exists in this API.

FAQ

Do I need a proxy? No. Proxy configuration is not required to run this Actor.

Do I need an account? No. You supply no credentials.

Is weekly granularity supported? No, the per-article endpoint offers daily and monthly only. Aggregate daily points yourself if you need weeks.

How far back does data go? July 2015 for the pageviews API. Earlier traffic exists only in the legacy, differently-shaped pagecounts datasets.

Why did an article return nothing? Almost always the title. Check it against the URL on Wikipedia, or paste the full URL and let the Actor parse it.

What happens if a source is unavailable? It is reported in RUN_SUMMARY.failures and the run continues.

Can I schedule it? Yes, it is designed for scheduled runs. A daily run with a rolling 30-day window keeps a live trend table warm.

Can I integrate it with something else? Yes, Apify API, client libraries, webhooks, scheduled runs, dataset exports (JSON/CSV/Excel) or MCP. Output is structured JSON.