# Competitive intelligence open data

> Our competitor data as machine-readable JSON: one file per tracked company, one per industry and quarter, plus every change we publish. Free under CC BY 4.0.


Every company file and industry file we publish also exists as JSON. Same facts, same dates, in a shape a machine can read without parsing prose. You do not need a key or an account.

The tree starts at [`/data/index.json`](/data/index.json), which lists everything below it.

## What the competitor data covers

Four sets, all generated from the tracking record that produces the pages.

One file per tracked company sits at `/data/companies/{slug}.json`: who they are, how many changes are on file, the dated sample we publish, which of their pages we watch, and the rest of their watch list. The directory of all of them is [`/data/companies.json`](/data/companies.json).

One all-time profile per industry sits at `/data/industries/{slug}.json`, listing its tracked companies, its quarters and the totals across both. That view has no page of its own, so the JSON is the only place it exists. Directory at [`/data/industries.json`](/data/industries.json).

Then one file per industry per quarter, at `/data/industries/{slug}/{quarter}.json`. These carry the movement map: coordinates placing each company on novelty against shipping volume for that window, with the scoring inputs written out so you can check the arithmetic rather than take the verdict on faith.

Last, the master feed at [`/data/changes.json`](/data/changes.json). Every change we publish, newest first, each one dated and pointing back at the company it belongs to.

## What we publish and what we hold back

A data file carries what its page carries, and nothing the page withholds.

So you get the dated sample of changes you can read on a company page, the true totals beside it, and a count of what is not shown. A file reading `changes_total: 97` next to `changes_shown: 5` is being straight with you about both the depth of the record and the size of the slice. The rest is what the subscription buys. We would rather publish an honest partial record than a padded one.

Every file also states its own terms: a `licence` block, a `canonical` link back to the human page, and a `generated_at` stamp that tells you how current the tracking is rather than when a build last ran.

## How to use the JSON files

Fetch them. The files are static and served with permissive CORS, so a browser and an agent read them the same way, and there is nothing to authenticate against.

Start at the catalog, walk to a directory, then to the file you want. Every file links onward. A company file names its industry, an industry file names its companies, and both carry `data_url` beside `url` so you never have to guess a path.

For the whole picture rather than one company, `changes.json` is the fastest read. For how a category moved in one quarter, the quarter files carry the scoring inputs and not only the result.

## The licence

Everything under `/data/` is published under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/). Use it commercially, build on it, republish it. The one condition is attribution: credit Competitor Tracker & Co. and link back to competitortracker.io.

We ask for the link because it is the whole return on publishing this.

## Where the competitor data comes from

We crawl the public web pages of the companies we track, detect what changed between reads, then classify and date each change. Nothing comes from private sources or from behind a login, and every change points at the page it was found on.

Each company file records when it was last read. When a record starts from an archived snapshot rather than one of our own captures, the file says so in its `archive` block instead of claiming a capture we never made.


---

Source: https://competitortracker.io/data/
Updated: 2026-08-12
