Data downloads
Every Sunday we publish Extension Tracker's data as a set of files that anyone can download: every extension we track, the users and rating recorded at each check, and every change we've recorded. The files are free to reuse under CC BY 4.0.
The latest set
A new set comes out shortly after 01:00 UTC every Sunday. The latest set is from 8 Nov 2026:
| File | Rows | Size |
|---|---|---|
| extensions-2026-11-08.parquet | 295,659 | 96.7 MB |
| extensions-2026-11-08.csv.gz | 295,659 | 110.0 MB |
| history-2026-11-08.parquet | 882,780 | 8.5 MB |
| changes-2026-11-08.parquet | 462,127 | 13.1 MB |
| other-items-2026-11-08.csv.gz | 107,491 | 4.2 MB |
| coverage-2026-11-08.json | 1.6 KB | |
| SCHEMA.md | 11.9 KB |
What's in a set
- Extensions, in Parquet and in gzipped CSV: one row for every extension we track, including removed ones, with its users, rating, category, version, developer and permissions, the days it was first and last seen in the store, and its removal date if it has been removed.
- History: the users, rating and number of ratings recorded at every check since 26 September 2026, one row per check.
- Changes: every change we've recorded, one row per changed field, such as a new version, name, permission or publisher account, or a removal.
- Other items: a short row for each theme and app, and for each item whose page we've never been able to view. Themes and apps are read once, to learn what they are, and aren't tracked after that.
- Coverage: how many items we hold, by type and status, and when the daily checks last ran.
- SCHEMA.md: what each file holds and what every column means.
How current the figures are
- Extensions with 1,000 or more users are checked every week and the others every month, and any extension
is checked again as soon as a new version appears. In a set, each extension's figures are from its latest
check, and
data_as_ofsays when that was. - User counts and ratings are the store's own figures, as its listings show them.
- An extension counts as removed once it has left the store's daily lists and the store no longer offers it. Removals are dated by the first day the extension was missing.
- All dates and times are in UTC.
- The data is collected automatically, so it can be wrong or out of date. Before relying on an important fact, check it against the extension's listing in the Chrome Web Store.
The methodology explains how we collect the data, and the status page shows how collection is going.
What's left out
We don't publish full descriptions, screenshots or reviews, and we don't keep developers' contact details at all. We keep a keyed hash of each developer's email address, to group their extensions, but the files don't include it: the changes file records only that the address changed.
An extension whose page we withdrew at its developer's request is left out of every set published after that, though the totals in the coverage file still count it. Sets published earlier don't change.
File formats
For analysis in code, Parquet is the better choice. It keeps each column's type, it's compact, and pandas, Polars, DuckDB and R's arrow package all read it. Partial downloads work and any website may read the files, so a tool can fetch just the columns it needs, even in a browser.
The CSV files are compressed with gzip. Lists are written as JSON arrays, true and false are written out,
and an empty field means there's no value. Excel can't open a .gz file directly: unpack it first
(on a Mac, double-click it; on Windows, a tool such as 7-Zip will do it), then import it with Data → From
Text/CSV, choosing UTF-8 as the file origin, so that names in other alphabets come out right.
Each set's manifest gives every file's SHA-256 checksum, so you can check a download.
Getting the newest set automatically
Each set's files are named for its date, so their addresses change every week. To fetch the newest set from a script, start from latest.json, whose address never changes. It gives the set's date and each file's address, size, number of rows and checksum, and it describes a new set within five minutes of its publication.
In a shell
This downloads the newest set's Parquet files into the current folder and shows each download's progress. It needs curl and jq, which recent versions of macOS include; on Linux, jq comes from the package manager.
curl -fsS https://data.extensiontracker.com/latest.json |
jq -r '.files[] | select(.name | endswith(".parquet")) | .url' |
xargs -n 1 curl -fO
In Python
pandas reads the files straight from their addresses. It needs pyarrow to read Parquet, so install both
first, with pip install pandas pyarrow:
import json
from urllib.request import urlopen
import pandas as pd
latest = json.load(urlopen("https://data.extensiontracker.com/latest.json"))
date = latest["date"]
files = {f["name"]: f["url"] for f in latest["files"]}
extensions = pd.read_parquet(files[f"extensions-{date}.parquet"])
history = pd.read_parquet(files[f"history-{date}.parquet"])
print(f"The set of {date} has {len(extensions):,} extensions")
On a Mac with Python from python.org, if this fails with CERTIFICATE_VERIFY_FAILED, run
Install Certificates.command, which is in that Python's folder in Applications.
In DuckDB
DuckDB queries a file where it is, downloading only the columns the query needs. This lists the ten live extensions with the most users in the latest set:
SELECT name, users
FROM 'https://data.extensiontracker.com/2026-11-08/extensions-2026-11-08.parquet'
WHERE status = 'live'
ORDER BY users DESC
LIMIT 10;
Earlier sets
Every set stays online, under its own date, and its files never change once they're published. An analysis that names the set it used can therefore be repeated exactly. index.json lists every set, newest first, with the address of its manifest, which lists the set's files.
Notebooks
Our notebooks are a place to start. They run in Google Colab, Kaggle or Jupyter and read the files straight from data.extensiontracker.com, so there's nothing to download first:
- Getting started: what's in a set, and the extensions with the most users, categories, ratings and publication years. Open it in Colab or Kaggle.
- Permissions: the most requested permissions, Manifest V2 and V3, and the extensions that can read and change data on every website. Open it in Colab or Kaggle.
- Changes and removals: removals, new extensions, new versions, added permissions and Enhanced Safe Browsing. Open it in Colab or Kaggle.
Each notebook reads one dated set, so it gives the same results every time it runs, and GitHub shows the results of its last run, so you can read them without running anything. On Kaggle, a notebook needs internet access to read the files, which Kaggle allows once your account has a verified phone number.
License and credit
The data is free to reuse under the CC BY 4.0 license, including for commercial purposes, as long as you credit Extension Tracker and link to extensiontracker.com. For example: “Data: Extension Tracker (extensiontracker.com), CC BY 4.0.”
Extension names, summaries and other text written by developers belong to them, and the license doesn't cover it. Our terms of use say more about reusing the data.
Citing a set
In a paper or an article, cite the set you used by its date. For the latest set:
Extension Tracker (2026). Chrome Web Store extensions: weekly data, 2026-11-08 [Data set]. Web Iterate. https://data.extensiontracker.com/2026-11-08/manifest.json
@misc{extensiontracker_2026_11_08,
title = {Chrome Web Store extensions: weekly data, 2026-11-08},
author = {{Extension Tracker}},
year = {2026},
note = {Published by Web Iterate under CC BY 4.0},
url = {https://data.extensiontracker.com/2026-11-08/manifest.json}
}
Every extension page also has a citation you can copy. Once a quarter, we'll deposit a set on Zenodo too, which keeps it for the long term and gives it a DOI to cite. The DOI will appear here once the first one is published.
AI agents and assistants
AI agents and assistants are welcome to use the data. /llms.txt describes the site, including what it holds, how to find an extension's page and how to credit the data. To work with many extensions at once, please use these files instead of fetching pages one by one: they hold the facts behind every page. When an answer uses the data, it should credit Extension Tracker and link to the extension's page.
Questions and corrections
If something in the data looks wrong, or you have a question about it, the contact page has our address.