Reference
Developer
Read MinerTerminal data as JSON, with no key, today.
Developer. Three read-only endpoints serve the same figures the pages show, each tagged with its source and as-of date. A keyed API with rate limits is described under Keys below.
Overview
- Base address: https://www.theminerterminal.com. All routes are GET and return JSON.
- Every row carries its source and as-of date, as the pages do. Read them before you use a figure.
- Figures are research data, not advice and not a trading feed. The methodology page says how each is found.
- Errors return a JSON body with error and message, and a 4xx status.
Endpoints
GET /api/quotes
- Returns
- The price tape for every tracked miner and the benchmarks: last close, change, the session it belongs to and the source.
- Parameters
- None.
- Freshness
- Daily completed sessions. Cached at the edge for one minute. Not an intraday feed.
GET /api/analysis/closes/{ticker}
- Returns
- Daily bars and closes for one series, each close tagged with its source, ending at the as-of date the response states.
- Parameters
- ticker: the series symbol as the Analysis page lists it, for example
MARA. An unknown one returns 404 with an error body. - Freshness
- Rebuilt with each site deploy. At most the last 704 sessions.
GET /api/charts/{id}
- Returns
- The long series behind one card on the Charts page, cut to that card's as-of day.
- Parameters
- id: one of mining-difficulty, next-difficulty, days-to-reset, hashrate, hash-ribbons, miner-capitulation. An unknown one returns 404 with an error body.
- Freshness
- Rebuilt with each site deploy.
Examples
curl -s https://www.theminerterminal.com/api/quotes
curl -s https://www.theminerterminal.com/api/analysis/closes/MARA
curl -s https://www.theminerterminal.com/api/charts/hashrateconst res = await fetch("https://www.theminerterminal.com/api/analysis/closes/MARA");
if (!res.ok) throw new Error((await res.json()).message);
const { ticker, asOf, closes } = await res.json();
// closes: [date, close, source] rows, oldest first
console.log(ticker, asOf, closes.at(-1));Keys
- The three endpoints above need no key. They are for light use: a few requests a minute, cached on your side.
- A keyed API, under
/api/v1, serves everything the site gathers, the data read out of company filings above all: the company list, each company's filings, facts, dilution, insiders and production, and the whole-site datasets. - Values our own models read out of filings are served only for a metric that has passed an audit. In an audit, an AI reader (not a person) checks a sample of at least 30 of the metric's values against the filing text and answers a fixed set of questions about each one, such as whether the number is in the quote and whether it is the right row and column. A metric passes when, at 95 percent confidence, at least 85 percent of its values are right on every question. So
reviewedmeans the metric passed; it does not mean a person checked that value, and a single value can still be wrong. Each value carries its quote, its link, the day it was filed, and the record and day of the audit. They make up the datasetaudited_values. The list of datasets at/api/v1names it once it holds a value; until then, asking for it returns an empty list and says why. - The audited values come in pages of up to 2,000. Send
limit(1 to 5,000) to ask for fewer or more, andcursor, set to thenext_cursorof the page before, to get the next page. The reply'smetagivestotal,limit,moreandnext_cursor. A limit or cursor the API does not accept answers 400. - Send your key as
Authorization: Bearer <key>. Each key may make 120 requests a minute; over that the answer is 429 with a Retry-After header. - Only one admin key exists today, and no public keys are issued yet. The paid Pro plan will include a key at 60 requests a minute, bought through the same checkout as Pro. Pro is not on sale yet.
- To ask for early access, write to [email protected].
