API TraderAPI QuantAPI Developer
What power plants actually produced each month, in two of the largest electricity markets. For Brazil, the electricity generated by every plant the grid operator dispatches, in megawatt-hours, and the same totaled by the company that owns each plant, from the Operador Nacional do Sistema Eletrico's verified-generation data joined to ANEEL's plant registry. For the United States, the gross load, operating hours, fuel burned and carbon dioxide, sulphur dioxide and nitrogen oxides emitted by every fossil-fuelled generating unit above 25 MW, and gross load, carbon dioxide and capacity factor totaled by the company operating each unit, from the Environmental Protection Agency's Clean Air Markets Program Data.
Brazil's is the earliest public read on hydro dispatch and thermal call-ups, the two things that decide a Brazilian generator's quarter, months before Eletrobras, Engie Brasil, CPFL, Copel and the other listed generators report. The EPA's is unit-level output for essentially the whole US thermal fleet, which no utility's own reporting breaks out: how hard Vistra's, NRG's or Duke Energy's gas and coal units ran, and whether a fleet is switching between them.
Brazilian ownership comes from the regulator's own registry rather than a hand-written list, so a plant's output attaches to the company that holds it. US units attach to the company operating them for the whole month, from that year's EPA register.
Available Data Points:
- Period Date: The period the value describes — what the number is about (the valid clock).
- Published At: When the value first became knowable — when the publisher released it (the knowledge clock). Filter on this for anything where look-ahead bias would matter.
- Value: The numeric value, where the series has one.
- Value Text: The textual value, for categorical series such as a trial's status or phase.
- Unit: Unit of the value, e.g.
vehicles,percent,USD. - Value Type:
number,percent,currency,countortext. - Frequency: How often the publisher releases the series.
- Market: The market the reading describes — an ISO-3166 alpha-2 code (
DE), a sub-national one (US-CA), a supranational aggregate (EA,EU) orGLOBAL. - Series Slug: Which series the reading belongs to. Unique within a publisher, not globally.
- Series Name: Human-readable name of the series.
- Source Slug: Publisher/feed identifier, e.g.
kba_registrations. - Source Name: Human-readable name of the publisher or feed.
- Publisher: Who publishes the underlying data.
- Entity Ref: The publisher's own identifier for what the reading is about — a manufacturer name, a securitisation trust, a reactor unit, a country code. Kept so any value can be traced back to the row it was parsed from.
Coverage
Brazil: monthly from January 2022, when the grid operator began publishing one file per month, about eleven days after the month. The published data is hourly; the monthly sum is stored and the hourly file is archived.
United States: coal, gas and oil-fired units that must monitor emissions continuously, about 3,900 units at 1,300 plants; nuclear, hydro, wind and solar are not included. Monthly from 2016, arriving a quarter at a time about 35 days after the quarter ends, and revised in place after EPA's quality checks. The register names owners without their stakes, so a jointly owned unit counts in full under its operator, a unit whose operator changed during the month is attributed to nobody, and plants run by contract operators, cooperatives or public power agencies map to no listed company.
What to look for
Generation is not revenue. Brazilian generators sell most output forward under contract, so a hydro plant that generates less than its contracted volume buys the shortfall at the spot price: a bad month here can cost more than it looks.
The shape of the year is what this is early on. Thermal plants run when the operator needs them, so rising thermal generation is a statement about reservoir levels and spot prices for everyone.
US gross load is measured at the generator before the plant's own consumption, so it runs a few percent above the net generation a utility reports; compare a unit or an operator with itself in the same month of earlier years, never with a net figure. The operator line is output the company ran, not its equity share. Heat input divided by gross load is a unit's heat rate, and a unit at zero for weeks outside the spring and autumn maintenance seasons is an outage nobody announced.
Two dates on every reading, and the difference is the edge
periodDate is what the number is about. publishedAt is when it first became knowable. The gap between them is the whole point of alternative data — and it is also the trap. A Form 10-D describing July is filed in mid-August, so a backtest that treats the period as the knowledge date reads a document six weeks before it existed.
from_date and to_date filter on periodDate, because that is the axis you plot against. Join on publishedAt when you are joining against returns.
Filtering: one market or all of them
Called with no filters, the endpoint returns every series in the dataset, for every market ORTEX covers it in. Each row names its own market, seriesSlug and sourceSlug, so a single request is enough to chart the whole dataset.
Narrow it with any combination of market (one market), series (one measure) and source (one publisher). Filter values that are each valid but select nothing together return 400 invalidSelection rather than a misleading empty result.
Raw readings here; comparable ones next door
This endpoint serves the publisher's numbers. Raw values are frequently not comparable — receivables of $10.9bn against $4.9bn say nothing without each book's size, and a 5.3% charge-off rate means something different on a subprime book than a prime one. The Alt Data signals endpoint serves the same series as percentiles and z-scores against a stated comparison set, which is the form a screen or a backtest wants.
Why a company you expect may be missing
Three reasons, and none of them is a bug:
- The dataset is a window, not a census: Several of these publishers release a rolling window rather than a complete history.
- The filer is not the listed company: Registers name a marque, a charter or a trust. ORTEX maps those to the listed parent where the link is defensible and leaves them unmapped where it is not — a wrong mapping silently attributes another company's data to your ticker.
- The population is genuinely narrow: Not every listed company appears in every register, and no amount of mapping changes that.
A series slug identifies a series within a publisher, not globally
unemployment_rate is published under that exact slug by the US Bureau of Labor Statistics, the UK Office for National Statistics and Statistics Canada. Where a slug names more than one series in a dataset, passing it alone returns 400 invalidSeries listing the alternatives — pair it with market or source. ORTEX would rather refuse than hand you one country's print labelled as another's.
How much history there is
Several of these publishers overwrite their own pages and keep no archive. Where that is so, the series begins on the day ORTEX started capturing it and lengthens from there — nobody, including the publisher, can supply the days before that. Everything ORTEX has ever fetched is archived on capture, so the series only ever grows.
Try it out! You can test the API with the trial key TEST. Simply include it in your request headers; either here, or add the header "Ortex-Api-Key": "TEST" to your http request.
Trial key restrictions: Trial keys may be limited to a specific date range and set of regions. Requests outside the allowed regions or entirely outside the allowed date range are rejected; a date window that partially overlaps the allowed range is trimmed to it, reported in meta.restriction.
Get full access! Get a key at app.ortex.com/apis
