Skip to main content

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 typeDescription
RevenueTrailing revenue — total amount generated for the given period.
Recurring RevenueAnnual recurring revenue (ARR) — the contracted subscription value as of the given date, specific to subscription businesses.
Run Rate RevenueAnnualized 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
FieldDescription
baseMetric family: trailing_revenue, run_rate_revenue, or recurring_revenue
viewvalue — a point value or range; growth — a growth rate or multiple
base_periodGranularity of the measured window: year, quarter, month, ytd, custom
base_forwardForward anchor for ARR and run rate metrics — typically year for annualized framing, month for MRR-style framing
growth_periodComparator cadence for growth rows: year, quarter, month, ytd, custom
growth_period_lengthNumber of comparator periods — 1 is standard; values above 1 indicate multi-period windows like 3-year CAGR
measurement
FieldDescription
scenariohistorical — observed/realized; projection — forecast
end_dateAnchor date for the datapoint
custom_start_dateExplicit start of the primary measured window, when the window is non-standard
comparison_window_end_dateEnd date of the comparison baseline for growth rows — required when view is growth
comparison_window_custom_start_dateCustom start of the comparison window, when the baseline is non-standard
typeNumeric shape: equals, greater_than, less_than, or range
amount / low / highRaw numeric values — no symbols, formatting comes from unit_kind
unit_kindcurrency, percent, multiple, or count
scope_name / scope_typeIf set, the datapoint refers to a segment rather than the whole company
statusLifecycle status of the datapoint — the /metrics endpoint returns active observations only

Numeric shapes

measurement.typeRead as
equalsExactly amount
greater_thanMore than low
less_thanLess than high
rangeBetween 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:
Caseend_datecomparison_window_end_date
FY2025 YoY2025-12-312024-12-31
Q1 2025 YoY2025-03-312024-03-31
Q2 2025 QoQ2025-06-302025-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

FieldRoleWhat it is not
measurement.end_dateAnchor/end date of the primary measured windowNot automatically the comparison baseline
metric_definition.base_periodGranularity of the primary measured windowNot the growth comparator cadence
metric_definition.growth_periodComparator cadence for growth rowsNot the primary metric window granularity
measurement.comparison_window_end_dateExplicit baseline anchor for the comparison windowNot optional for growth rows

Null handling

Fieldnull means
metric_definition.base_forwardNot stored as a forward-framed metric
metric_definition.growth_periodNot a growth row (view is value)
measurement.custom_start_dateNo explicit custom window start
measurement.comparison_window_end_dateFor value rows: not applicable. For growth rows: unexpected — this field is required
measurement.comparison_window_custom_start_dateComparison window is not custom
measurement.scope_name / scope_typeUnscoped — datapoint applies to the whole company
citations.sources[].quoteNo extracted quote available — the source URL may still be valid evidence