Documentation Index
Fetch the complete documentation index at: https://docs.sacra.com/llms.txt
Use this file to discover all available pages before exploring further.
Sacra surfaces revenue data through two distinct but complementary structures: revenue datasets, which are Sacra’s own revenue models for each company, and metric observations, which are individual datapoints cited to published sources. Both are available through the API and serve different use cases. To work with datasets in code, see Working with Datasets & Revenue Data.
Revenue datasets
A revenue dataset is Sacra’s internal revenue model for a company. It represents a complete, normalized time series of revenue — year by year from the company’s earliest tracked period through the current month — with no gaps.
The purpose of the dataset is to give you a single clean series you can plot, compare, or sync without needing to reconcile inconsistent data from multiple sources. Sacra fills gaps using its own estimates, clearly distinguished from observed figures.
Structure
Each dataset has a data_type that determines what the values represent:
| Data type | Description |
|---|
| Revenue | Trailing revenue — total amount generated for the given period. |
| Recurring Revenue | Annual recurring revenue (ARR) — the contracted subscription value as of the given date, specific to subscription businesses. |
| Run Rate Revenue | Annualized revenue as of the given date, regardless of business model. |
Datapoint periods
Each datapoint in a dataset has a date that encodes its period type:
- December 31 — a full year-end figure for that calendar year.
- Any other month-end — a year-to-date figure through that month.
A revenue value dated 2024-04-30 means cumulative revenue from January 2024 through April 2024 — not a trailing 12-month figure. A value dated 2024-12-31 means the full-year total.
{ "x": "2023-12-31T00:00:00.000Z", "y": 170000000, "type": "historical" }
{ "x": "2024-04-30T00:00:00.000Z", "y": 39600000, "type": "historical" }
If the date falls on December 31, treat it as a full-year figure. Any other month-end date is year-to-date.
How revenue types interact with periods
Revenue reflects total amounts generated — either for the full year (year-end) or from January 1 through the given month (year-to-date). It does not represent a trailing 12-month window.
Run Rate Revenue is a forward-looking annualized figure regardless of period type, roughly the most recent month’s revenue multiplied by 12. A run rate dated June 2025 implies June 2025 revenue × 12.
Recurring Revenue (ARR) applies specifically to subscription businesses — it’s the annual recurring revenue as of the given date, based on contracted subscription value rather than an annualization of recent revenue.
Metric observations
A metric observation is a single revenue or growth datapoint that Sacra has extracted and cited to a specific published source — a news article, earnings call, SEC filing, or industry report from a trusted publication.
Where datasets give you a complete modeled series, observations give you the raw evidence behind specific claims. Each observation is precise, sourced, and structured for programmatic use.
Structure
Each observation has a metric_definition describing what is being measured and a measurement carrying the numeric claim:
metric_definition
| Field | Description |
|---|
base | Metric family: trailing_revenue, run_rate_revenue, or recurring_revenue |
view | value — a point value or range; growth — a growth rate or multiple |
base_period | Granularity of the measured window: year, quarter, month, ytd, custom |
base_forward | Forward anchor for ARR and run rate metrics — typically year for annualized framing, month for MRR-style framing |
growth_period | Comparator cadence for growth rows: year, quarter, month, ytd, custom |
growth_period_length | Number of comparator periods — 1 is standard; values above 1 indicate multi-period windows like 3-year CAGR |
measurement
| Field | Description |
|---|
scenario | historical — observed/realized; projection — forecast |
end_date | Anchor date for the datapoint |
custom_start_date | Explicit start of the primary measured window, when the window is non-standard |
comparison_window_end_date | End date of the comparison baseline for growth rows — required when view is growth |
comparison_window_custom_start_date | Custom start of the comparison window, when the baseline is non-standard |
type | Numeric shape: equals, greater_than, less_than, or range |
amount / low / high | Raw numeric values — no symbols, formatting comes from unit_kind |
unit_kind | currency, percent, multiple, or count |
scope_name / scope_type | If set, the datapoint refers to a segment rather than the whole company |
status | Lifecycle status of the datapoint — the /metrics endpoint returns active observations only |
Numeric shapes
measurement.type | Read as |
|---|
equals | Exactly amount |
greater_than | More than low |
less_than | Less than high |
range | Between low and high |
amount, low, and high are raw numeric values with no symbols. Display formatting comes from unit_kind (and currency_code when unit_kind is currency) combined with measurement.type.
Citations
Every observation includes a citations object with the sources backing the claim:
citations.sources[] — deduplicated list of source URLs, each with an optional quote field containing the extracted text that supports the datapoint
citations.summary.count — number of unique sources for this observation
quote: null does not mean the source is invalid — SEC filing URLs are included by default even without an extracted quote.
Growth observations
Growth rows (view: "growth") require a comparison_window_end_date to define the baseline:
| Case | end_date | comparison_window_end_date |
|---|
| FY2025 YoY | 2025-12-31 | 2024-12-31 |
| Q1 2025 YoY | 2025-03-31 | 2024-03-31 |
| Q2 2025 QoQ | 2025-06-30 | 2025-03-31 |
For growth rows, unit_kind: "percent" means percentage growth (e.g. 55 = 55%) and unit_kind: "multiple" means an x-multiple (e.g. 3.7 = 3.7×).
Common patterns
Forward metrics are point-in-time. For run_rate_revenue and recurring_revenue, the datapoint is an anchored forward-looking view as of the given date. base_forward carries the annualized or monthly framing; base_period is commonly null for these.
growth_period_length above 1 indicates a multi-period cumulative growth window rather than a single prior period comparison. growth_period: year with growth_period_length: 3 means a 3-year CAGR-style window; growth_period: month with growth_period_length: 6 means a 6-month CMGR-style window.
Scoped datapoints have both scope_name and scope_type set, indicating the figure applies to a product line or business segment rather than the whole company. If both are null, the datapoint is company-level.
YTD-vs-YTD growth (growth_period: ytd) compares two year-to-date windows: the current YTD anchored by end_date and the prior YTD anchored by comparison_window_end_date.
Field roles at a glance
| Field | Role | What it is not |
|---|
measurement.end_date | Anchor/end date of the primary measured window | Not automatically the comparison baseline |
metric_definition.base_period | Granularity of the primary measured window | Not the growth comparator cadence |
metric_definition.growth_period | Comparator cadence for growth rows | Not the primary metric window granularity |
measurement.comparison_window_end_date | Explicit baseline anchor for the comparison window | Not optional for growth rows |
Null handling
| Field | null means |
|---|
metric_definition.base_forward | Not stored as a forward-framed metric |
metric_definition.growth_period | Not a growth row (view is value) |
measurement.custom_start_date | No explicit custom window start |
measurement.comparison_window_end_date | For value rows: not applicable. For growth rows: unexpected — this field is required |
measurement.comparison_window_custom_start_date | Comparison window is not custom |
measurement.scope_name / scope_type | Unscoped — datapoint applies to the whole company |
citations.sources[].quote | No extracted quote available — the source URL may still be valid evidence |