# Segments

> Revenue by product or service, by geography and by business segment, one axis at a time, from the filing's own tags.

```text
GET /v1/companies/{id}/segments
```

Revenue broken down along one axis: product or service, geography, or business segment. These are the dimensional figures the [Statements](/datasets/statements/) route leaves out, taken from the SEC's Financial Statement Data Sets. Newest filing first. Every figure carries its source accession.

```bash
curl -H "X-API-Key: $BELFORT_API_KEY" \
  "https://belfort-data-api.vercel.app/v1/companies/AAPL/segments?axis=ProductOrService&limit=20"
```

## Parameters

| Parameter | Values | Default |
|---|---|---|
| `axis` | `ProductOrService`, `ProductsAndServices`, `Producttype`, `BusinessLine` (product), `Geographical`, `GeographicalAreas`, `GeographicDistribution` (geography), `BusinessSegments`, `Segments`, `Subsegments` (business segment) | All axes |
| `period_end` | A filing's period, `YYYY-MM-DD`, matching the document's `period`. | All periods |
| `limit` | 1–50 documents per page. | 20 |
| `cursor` | The previous page's `meta.next_cursor`. | |

Companies don't agree on axis names, so the same idea can sit under several. Try the axes for the kind you want.

## One document

One document per filing and axis:

| Field | Meaning |
|---|---|
| `accession`, `filing_url` | The filing, and its page on EDGAR. |
| `axis`, `axis_kind` | The axis, and whether it's a product, geographic or business-segment axis. |
| `form`, `amends`, `filed` | The form, whether it's an amendment, and the day it was filed. |
| `fiscal_year`, `fiscal_period`, `period` | The filing's fiscal labels and period. |
| `figures` | The revenue figures on this axis. |

Each figure has `tag`, `taxonomy`, `period_end`, `quarters`, `unit`, `value`, `accession`, `axis`, `member` and `member_label`. The `member` is the slice, such as a product line or a region. `member_label` is the company's own label for it, when the filing has one.

## What's served and what isn't

- **Revenue only, one axis at a time.** A row whose only extra axis is `ConsolidationItems=OperatingSegments` is folded into the single axis, because that member is presentation, not a second fact.
- **Not served:** cross-tabs across two axes, and expense lines whose sign depends on how the company presents them.
- **Coverage is partial.** We serve only the figures we can read cleanly, so a company's segment table can have gaps. Absence is better than a guess, so we don't fill them.
- **`member_label` is often missing.** `member`, the tagged name of the slice, is always there.

The measured check is on [Quality](/quality/#segments).

---
Source: https://docs.belfortagent.xyz/datasets/segments/
