Browser Monster
Data overview

Browser Monster Index · About the data

Use it, cite it, build on it

The Index is public data. Here’s how you can reuse it, how to get a copy that never changes, and what every column means. Or explore it in the browser.

Licence and credit

Creative Commons Attribution-NonCommercial 4.0

Free for journalism, research, teaching and personal projects, with credit. For commercial use, email hello@browsermonster.com.

Suggested credit

Browser Monster Index, accessed 24 October 2026. browsermonster.com/data

Monthly releases

Frozen copies that never change

The live data changes as people check sites. On the 1st of every month we freeze a copy, so a number you quote can always be checked. The first release, 2026-10, is cut on 1 November.

API

Read-only, no key needed, open to any website

  • GET /api/data/v1/sites?grade=F&sort=-before
  • GET /api/data/v1/companies?sector=News
  • GET /api/data/v1/sites?format=csv
  • GET /api/data/v1/releases
  • GET /api/data/v1/dictionary

Same filters as the explore page (sector, grade, flag, cmp, company, country, q, sort, page, size). Up to 900 requests an hour; please cache.

Data dictionary 18 columns · show
ColumnTypeMeaning
domaintextThe website, without www.
sectortextOur sector label for the site. Empty if we haven’t labelled it.
gradetextA to F. A means little tracking seen; F means heavy tracking seen.
scoreinteger0–100, the score behind the grade. Higher is better. See /methodology.
tracking_companiesintegerDistinct tracking companies seen across our three visits.
cross_site_companiesintegerOf those, companies that can follow people across sites (advertising, social, identity, session replay).
cross_site_before_choiceintegerCross-site companies that loaded as the page opened, before any cookie choice.
cross_site_after_rejectintegerCross-site companies that loaded new requests after we clicked reject. Empty if we couldn’t click reject.
no_reject_buttonbooleanTrue if the first screen of the banner had no reject option.
paid_option_texttextThe banner text, if it offered a paid subscription instead of rejecting.
tcf_partnersintegerNumber of advertising partners the consent tool listed (IAB TCF), if it said.
consent_tooltextThe cookie-banner platform we recognised, if any.
fingerprintingbooleanTrue if a script used canvas, WebGL, audio or font fingerprinting.
session_recordingbooleanTrue if a session-recording service loaded.
data_brokersintegerKnown data brokers seen.
checked_atdate-timeWhen the check behind these numbers ran (UTC, ISO 8601).
company_idstext[]IDs of every tracking company seen (downloads only; see /companies/{id}).
server_countriestext[]ISO country codes of tracker servers the page sent requests to, located from London (downloads only).

The five tables

  • Sites: One row per published site: its grade and what we saw on its homepage.
  • Companies: One row per tracking company: how many of the matching sites it was seen on, and when.
  • Countries: One row per country where tracker servers were located: how many sites sent data there.
  • Consent tools: One row per cookie-banner platform: how sites using it behave.
  • Sectors: One row per sector: averages across its sites.

These are observations from one location at one time, homepage only; ads and banners change between visits. Some requests after rejecting may be strictly necessary services. Nothing here is proof that a site broke the law. A site appears once it’s on our list or two different people have checked it. Who asked for a check is never part of the data.