Wikipedia Pageviews
Daily Wikipedia pageviews for a universe of public companies, by ticker.
wikipedia_pageviews — the dataset name to pass to the Obscura API.
What one row means
One ticker's daily English-Wikipedia article pageview count for a single calendar day: the number of non-bot ("user") pageviews the resolved Wikipedia article for a company received on that day, per the Wikimedia Pageviews REST API. Only tickers in our rolling earnings-calendar universe are tracked, and only if a matching article was resolved via MediaWiki search.
One row per (ticker, period_end).
Point-in-time availability
Every Obscura dataset carries available_date: the calendar day the publisher made the row
available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the
same thing on every dataset in the catalog.
For wikipedia_pageviews: published: available_date = period_end + 1 calendar day, Wikimedia's real publication lag (day D's count is only computed/served roughly D+1 UTC).
Refresh cadence
Obscura refreshes wikipedia_pageviews every weekday — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.
Schema — 5 columns
The full public column list for wikipedia_pageviews, with the meaning of every field. The same
schema is served unauthenticated at https://api.obscura.trade/v1/catalog/wikipedia_pageviews.
| Column | Type | Description |
|---|---|---|
| ticker | text · not null | Equity ticker from the earnings-universe supplied by ticker_universe::earnings_tickers (our own earnings-calendar selection, not from Wikipedia itself). Part of the composite primary key with period_end; also the foreign key into wikipedia_article (ticker -> article resolution cache). |
| period_end | date · not null | The pageview calendar day (D) itself, parsed from the Wikimedia REST response's per-day `timestamp` field (first 8 chars, %Y%m%d). This is the period/event date — the day the views actually occurred — NOT when the count became public; see available_date for that. Part of the composite primary key with ticker; the collector's upsert OnConflict targets (ticker, period_end) so re-scrapes of the rolling window are idempotent updates, not duplicate rows. |
| article | text · not null | The resolved English-Wikipedia article title backing this ticker's pageview series (e.g. 'Apple Inc.', 'GameStop'), cached once per ticker in wikipedia_article via a MediaWiki list=search hit on the company name and reused across all days; percent-encoded via article_path() when building the Wikimedia REST URL segment. Can change over time only if the ticker's cached article is re-resolved; historical rows keep whatever article title was current when they were upserted (overwritten on re-sync via the OnConflict update_columns list). |
| views | bigint · not null | Count of non-bot ('user' access, all-access) pageviews the article received on period_end, from the Wikimedia pageviews REST API path .../per-article/en.wikipedia/all-access/user/{article}/daily/{start}/{end}; parsed as item.views (i64) in parse_pageviews. Automated/bot traffic is excluded by the 'user' access-type filter baked into PAGEVIEWS_URL, so this is human-attributable attention only, not raw hit volume. |
| available_date | date | PUBLIC-availability date, DB-generated (STORED) as period_end + 1 calendar day — Wikimedia's real per-article publication lag: day D's count is not fully computed/served until roughly D+1 UTC. This is the point-in-time column to filter/join on — never period_end, which is the pageview day itself, not when it became public. Read-only. |
Access wikipedia_pageviews
Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.
import obscura
client = obscura.Client("obs_live_…")
df = client.query(
dataset="wikipedia_pageviews",
symbols=["NVDA", "AAPL"],
start="2024-01-01",
)
Create a free account Browse all 95 datasets
Frequently asked questions
What is in the wikipedia_pageviews dataset?
Daily Wikipedia pageviews for a universe of public companies, by ticker. One ticker's daily English-Wikipedia article pageview count for a single calendar day: the number of non-bot ("user") pageviews the resolved Wikipedia article for a company received on that day, per the Wikimedia Pageviews REST API. Only tickers in our rolling earnings-calendar universe are tracked, and only if a matching article was resolved via MediaWiki search.
How do I avoid look-ahead bias with wikipedia_pageviews?
Filter on wikipedia_pageviews.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = period_end + 1 calendar day, Wikimedia's real publication lag (day D's count is only computed/served roughly D+1 UTC). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.
In what formats can I get wikipedia_pageviews?
As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="wikipedia_pageviews". The column schema is public at https://api.obscura.trade/v1/catalog/wikipedia_pageviews.
Can I filter wikipedia_pageviews by company or symbol?
Yes. wikipedia_pageviews carries ticker, the column the API's symbols filter resolves against.
How often is wikipedia_pageviews updated?
Obscura refreshes wikipedia_pageviews on a every weekday schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.