PHD MODE
filter every signal by tool, country and date — down to a single day — then export exactly what you filtered. free, citable, reproducible.
Everything this site tracks, in one queryable place: search-interest share for 13 AI tools across 84 countries (daily since 2026-07-07), 12 months of global weekly context, a full year of Wikipedia attention, and npm/PyPI/GitHub developer signals. share of Google search interest — relative preference, not usage counts; SDK downloads include CI — momentum, not headcount.
updated 2026-07-08 · refreshed daily
01 · filters
pick a metric, tools, countries and a date range — or a single day. share of Google search interest — relative preference, not usage counts.
every view is a permalink — the console reads and writes the URL: ?metric=trends|npm|pypi|github|wiki · &tools=chatgpt,claude · &countries=US,CN · &from=YYYY-MM-DD&to=YYYY-MM-DD · or &on=YYYY-MM-DD for single-day mode (wins over from/to). share the URL and a colleague sees exactly your slice.
02 · results
the exact rows your filter matches, from the yearly research bundles. holes in the data stay visible as null — nothing is interpolated.
03 · export
download the current slice — no more, no less — ready for pandas, R or a spreadsheet.
the honest-labeling rules travel with the data: search shares are relative preference, not usage; SDK downloads are momentum, not headcount.
04 · cite this dataset
If this dataset feeds a paper, a post or a chart, cite it — that’s the whole price. Plain-text form: “Who is using AI? — Global AI Tracker dataset, PIXIPACE, whoisusingai.com/tracker/research, accessed 2026-07-08”. search shares are relative Google search interest, not usage counts — say so in your methods section.
PIXIPACE. (2026). Who is using AI? — Global AI Tracker dataset [Data set]. whoisusingai.com. Retrieved Jul 8, 2026, from https://whoisusingai.com/tracker/research
@misc{whoisusingai2026tracker,
author = {{PIXIPACE}},
title = {Who is using AI? --- Global AI Tracker dataset},
year = {2026},
url = {https://whoisusingai.com/tracker/research},
note = {Accessed 2026-07-08}
}
the accessed date is baked at every daily rebuild, so it always matches the data stamp above — swap in the date you actually pulled the files.
05 · data dictionary
what each endpoint returns, unit by unit — with the caveats that belong in a methods section.
/history/research/trends-<YYYY>.json — country × tool × day search-share matrix| field | type | unit | source | caveats |
|---|---|---|---|---|
year | integer | calendar year | bundle metadata | snapshots are grouped by the filename's year prefix |
dates | string[] | ISO date (UTC) | snapshot filenames | ascending; every per-day column below is index-aligned with this array |
tools | string[] | tool id | tool registry | canonical order of the 13 tracked tools |
countries | {ISO2: string} | country name | Google Trends geo | only countries with enough search volume are tracked |
values[ISO2][toolId] | (number|null)[] | % of AI-tool searches | Google Trends | anchor-normalized RELATIVE search interest — preference, not usage counts; null = no observation that day |
global.weekly | {d, v}[] | % share per tool | Google Trends | 12-month weekly global backfill (since 2025-07-06); v maps toolId → share |
global.daily | {d, v}[] | % share per tool | Google Trends | daily global backfill (since 2026-04-07) |
/history/research/signals-<YYYY>.json — developer & attention signals per day| field | type | unit | source | caveats |
|---|---|---|---|---|
year, dates | integer, string[] | — | snapshot filenames | same year grouping and index alignment as the trends bundle |
npm[pkg] | (number|null)[] | downloads / week | npm registry | weekly totals include CI machines and mirrors — momentum, not headcount |
pypi[pkg] | (number|null)[] | downloads / week | PyPI | same CI caveat; empty object while no PyPI packages are tracked |
github[repo] | (number|null)[] | stars (cumulative) | GitHub API | lifetime star total — it only climbs; day-over-day deltas are the momentum signal |
wiki[toolId] | (number|null)[] | pageviews / day | Wikimedia Pageviews API | user (non-bot) views of the tool's article — the latest complete day at snapshot time |
labels.npm, labels.github | {key: string} | display name | tool registry | legend names; keys match the npm/github objects above |
wiki_daily[toolId] | {dates[], values[]} | pageviews / day | Wikimedia Pageviews API | full backfilled daily series (since 2025-07-07) — deeper than the snapshot era |
/history/tracker/<YYYY-MM-DD>.json — one raw daily snapshot| field | type | unit | source | caveats |
|---|---|---|---|---|
date | string | ISO date (UTC) | — | matches the filename |
trends.countries[ISO2][toolId] | number | % of AI-tool searches | Google Trends | anchor-normalized relative search interest — not usage counts |
sdk.npm[pkg], sdk.pypi[pkg] | number | downloads / week | npm / PyPI | includes CI machines and mirrors |
github[repo] | number | stars (cumulative) | GitHub API | lifetime total |
wiki[toolId] | number | pageviews / day | Wikimedia Pageviews API | latest complete day at snapshot time |
hf_trending | [modelId, downloads][] | downloads (30d) | Hugging Face | top-10 trending models at snapshot time |
/history/series/<ISO2>.json — one country’s full daily history| field | type | unit | source | caveats |
|---|---|---|---|---|
country, name | string | ISO2 / display name | — | |
dates | string[] | ISO date (UTC) | snapshot filenames | the full snapshot history, ascending |
tools[toolId] | (number|null)[] | % of AI-tool searches | Google Trends | index-aligned with dates; null = no observation that day |
/history/research/index.json & /history/tracker/index.json — discovery| field | type | unit | source | caveats |
|---|---|---|---|---|
years | integer[] | calendar year | research index | every year with research bundles |
generated | string | ISO 8601 | research index | freshness stamp of the newest underlying fetch |
snapshots | integer | count | research index | total daily snapshots across all years |
(tracker index) | string[] | ISO date (UTC) | tracker index | the bare sorted array of every snapshot date |
cadence: one snapshot per day, taken around 06:30 site-local time; snapshot filenames use the UTC date. country-level daily history starts 2026-07-07. backfill depth: global weekly since 2025-07-06, global daily since 2026-04-07, Wikipedia daily since 2025-07-07, npm daily since 2026-01-08.
06 · the API
Plain JSON over GET — no key, no auth, no SDK. Every endpoint is a static file on the same CDN as this page, rebuilt daily, so it is fast, cacheable and stable enough to cite. Free for any use — attribute whoisusingai.com.
| GET endpoint | returns |
|---|---|
/history/research/trends-<YYYY>.json | one year: {year, dates[], tools[], countries{ISO2:name}, values{ISO2:{toolId:[share|null]}}, global:{weekly,daily}} |
/history/research/signals-<YYYY>.json | one year: {year, dates[], npm{pkg:[weekly|null]}, pypi{…}, github{repo:[stars|null]}, wiki{toolId:[views|null]}, labels{…}, wiki_daily{…}} |
/history/research/index.json | {years[], generated, snapshots} — which bundles exist |
/history/tracker/<YYYY-MM-DD>.json | one raw daily snapshot: {date, trends{countries}, sdk{npm,pypi}, github{…}, wiki{…}, hf_trending[]} |
/history/tracker/index.json | ["YYYY-MM-DD", …] — every snapshot date, sorted |
/history/series/<ISO2>.json | {country, name, dates[], tools{toolId:[share|null]}} — one country's full daily history |
/tracker_data.js | window.TRACKER = {…}; — the live dashboard object (strip the JS prefix, parse the rest as JSON) |
# one year of country-level search share, one GET curl -s https://whoisusingai.com/history/research/trends-2026.json \ | python3 -c 'import json,sys; b=json.load(sys.stdin); print(b["dates"][-1], b["values"]["US"]["chatgpt"][-1])'
CORS: Access-Control-Allow-Origin: * is set on /history/* and /tracker_data.js, so you can fetch() them straight from a notebook, Observable or the browser console. browse the live files: trends-2026.json · signals-2026.json · research index · snapshot index · series/US.json.
want the guided tour instead? the tracker hub, the race and the developer signal read the same data.