# Metrics

Use metrics to read captured results for a publication or channel. Each snapshot has a capture time, letting you compare early results with later ones. The newest stored snapshot may be older than the network’s current figures.

Metric tools read stored data without making a network request. These reads are free; the scheduled collection process makes the metered network reads.

## Post series

`content_metrics_post_series` takes a **publication** id and returns:

| Field | What it is |
|---|---|
| `publicationId` | The publication these snapshots belong to |
| `channelId` | The channel it was published to |
| `network` | The network, or `unknown` when the channel behind it can no longer be read |
| `analytics` | `full`, `basic` or `none` |
| `points[]` | Snapshots oldest first: `capturedAt` plus the metric record as the adapter recorded it |
| `latest` | The newest snapshot as flat, named numbers, or `null` when nothing has been captured |

Read `latest` for the newest captured `impressions`, `views`, `likes`, `comments`, `shares` and `clicks`. Use `points` when you need to compare capture times.

Filter by inclusive ISO-8601 `from` and `to` timestamps. `limit` accepts 1 to 500 points and defaults to 200.

## Channel series

For follower count and channel-level reach, call `content_metrics_channel_series` with a channel id. It returns daily snapshots and an `analytics` level. Filter and limit the results with the same `from`, `to` and `limit` parameters as the post series.

## Null is not zero

Keep `null` values when displaying or analyzing metrics: they mean the network does not report that figure. For example, a LinkedIn member post has no impression count. Converting it to zero would incorrectly report that nobody saw the post.

Use `analytics` to determine which results are available:

- `full` — the network reports the whole cross-network set.
- `basic` — a limited set of figures; unavailable metrics remain `null`.
- `none` — collection is disabled and the series stays empty. Personal Instagram profiles, for example, have no analytics API available here.

See [Channels](/acquire/content/channels) for network defaults. An explicit channel override takes precedence. If that override cannot be read, Content uses `none` and makes no metered analytics request.

## When snapshots are taken

Content collects less often as a publication ages, then stops after 30 days. This limits metered network reads.

A **published post** is sampled from the moment it was published:

| Post age | Captured |
|---|---|
| First day | Hourly |
| Days 1 to 7 | Daily |
| Days 7 to 30 | Weekly |
| After 30 days | Never again |

A capture scheduled beyond the 30-day boundary is skipped.

Channel collection runs daily while the channel has published within the last 30 days. It stops when the channel has not published during that window. Channels with `analytics: "none"` are never sampled.

An empty series can mean that the first capture has not run yet. Check `analytics` before waiting for data: `none` means no capture will run.

Network reads are metered per read, so the cost of measurement is visible alongside the cost of publishing.

## Tools

| Tool | What it does |
|---|---|
| `content_metrics_post_series` | Snapshots of one published post over time |
| `content_metrics_channel_series` | Daily snapshots of a channel itself |

## Next steps

- [Channels](/acquire/content/channels): the `analytics` value each network starts with.
- [Publications](/acquire/content/publications): where the publication id comes from.
