

# Chronometrica vs Apify Facebook Posts: Can You Keep Views and Plays in One Row?

Choose Chronometrica when your public Facebook video report needs separate views and plays fields in one content row, with status and precision for each metric. Its published contract supports that format, but both counts are best effort. Choose Apify Facebook Posts Scraper with its documented Facebook Reels Scraper route when you need richer post output and can join separate datasets. Neither checked contract promises both exact counters for every URL. See the published [Chronometrica](https://apify.com/chronometrica/facebook-metrics-scraper), [Posts](https://apify.com/apify/facebook-posts-scraper), and [Reels](https://apify.com/apify/facebook-reels-scraper) contracts.

Chronometrica publishes the Facebook Metrics Scraper Actor compared here. An Actor is a hosted collection program. This is an owned-product comparison. The recommendation rests on a specific fit: a declared metrics row with separate counters and information that helps you decide whether to use them.

The main choice is therefore about your required output. Do you need a metrics row that your report can accept directly, or does your report need enough other post data to justify a dataset join?

## What the published contracts support

Chronometrica explicitly publishes separate `views` and `plays` fields. Its `contentMetricStatus` information records metric status, precision, and source. This lets you assess each counter within the same content row. A row can still be useful when only one counter is available. The contract does not turn that partial row into a complete pair. [Chronometrica Facebook Metrics Scraper](https://apify.com/chronometrica/facebook-metrics-scraper)

Apify Facebook Posts Scraper publishes `viewsCount`. In a historical issue, its maintainer described using a separate Reels dataset and joining the results for the other count. The current Reels README documents exact play count for direct Reel input. The old concern about rounded-only output must therefore not be presented as its current contract. [Posts contract](https://apify.com/apify/facebook-posts-scraper), [historical issue](https://apify.com/apify/facebook-posts-scraper/issues/is-there-a-way-to-ge-yltOBpoPbuNyl0SBy), [Reels contract](https://apify.com/apify/facebook-reels-scraper)

The public issue is closed. It records a reader need for both numbers from one run. It does not prove a present fault. This comparison uses public contracts checked on 20 October 2026. It includes no new collection run or matched result check.

The supported distinction is the declared output format. It is not a claim about every field that an undocumented response might contain.

## Make the decision at the report level

Start with the report that will use the data. A field name alone does not tell you whether a value meets that report’s needs.

For example, a report may accept a rounded views value for a broad content summary. The same report may require an exact plays value for a separate calculation. Those are two requirements, even when both values belong to one video.

Use this compact decision table before you collect data:

| Decision item | What to define or check |
| --- | --- |
| Required input | The intended public content URLs, including direct Reel URLs where needed. |
| Output unit | One content row, or separate datasets that you will join by content identity. |
| Acceptance rule | Each required counter must be present at the precision your report accepts. |
| Missing-value rule | Keep an unknown value empty and retain its status. Do not replace it with zero. |
| Switch condition | Use the joined route when required post detail justifies it; reject either route for a requirement it does not meet. |

A one-row format reduces the need to combine counter records yourself. It does not remove the need to check the fields. A successful collection step and an acceptable report row are separate things.

Likewise, a join can be a reasonable choice when it supplies data your report needs. Its value depends on the final record you can build and verify, not on the number of collection steps alone.

## Write separate requirements for views and plays

Views and plays can differ. Treat them as separate measures throughout collection, review, and reporting. Neither counter should be presented as unique viewers or reach. They are also not interchangeable denominators in a rate calculation.

The owned contract describes views as public video views and plays as a broader public counter. Do not assign a one-second or three-second viewing threshold without source evidence. For the meaning of the labels, see [Facebook Video Views, Plays, and Reach](/en/articles/facebook-video-views-plays-reach/).

Write a short requirement for each report column:

1. Name the counter the column needs.
2. State whether the column is required or optional.
3. State which precision the report accepts.
4. State what happens when the value is unavailable.
5. State whether any calculation depends on that value.

These rules make partial results easier to handle. If plays is optional, a row with views alone may still qualify for the report. If both counters are required, that same row fails the dual-counter requirement.

Keep those outcomes distinct. You do not need to discard a useful views value because plays is missing. You do need to prevent the partial row from entering a calculation that requires both.

Set the rules before you inspect results. Otherwise, a convenient value can lead you to change the requirement without making that change clear to the report reader.

## Start with a known public content URL

Use a known public content URL for the first check. This keeps the decision focused on counter collection and acceptance. A broader search for posts introduces another question: whether you found the intended content at all.

The public [Facebook Engagement Metrics Tracker Task](https://apify.com/chronometrica/facebook-metrics-scraper/examples/facebook-engagement-metrics-tracker) can serve as a starting preset. A Task is a saved input preset for an Actor. The page was available during the source check, but its saved input was not read. Apply the settings below rather than assuming that the preset already contains them.

```json
{
  "mode": "knownUrls",
  "startUrls": [
    "https://www.facebook.com/reel/3809524072644232/"
  ]
}
```

Start with a known public content URL

This minimal input was checked against the current public input schema. It was not run. The example URL does not prove that both counters are publicly available there now. Replace it with the public content URL that your report needs. [Chronometrica Actor and input contract](https://apify.com/chronometrica/facebook-metrics-scraper)

For your own check, choose content that represents the intended work. A public Reel is relevant when the report covers Reels. A convenient example from a product page cannot establish whether your actual content qualifies.

Keep a record of the intended URL with the result you inspect. You need that link to confirm that the row describes the content you meant to collect.

## Inspect the values and their status together

Once you have a result, review the full metric information before you copy values into a report. Chronometrica’s declared fields support this review within the content row. [Published output contract](https://apify.com/chronometrica/facebook-metrics-scraper)

Use this sequence:

1. Confirm that the row refers to the intended content.
2. Check `views` and its associated `contentMetricStatus` information.
3. Check `plays` and its associated `contentMetricStatus` information.
4. Compare each value’s precision with the report requirement.
5. Mark the row as accepted, partial, or unsuitable for the intended use.

Those last three labels are review choices for your workflow. They are not presented here as Actor output values.

Keep precision with the number when you export or transform it. In particular, retain `compact_rounded` when a compact display count has been expanded into a numeric value. Expansion changes the form of the value. It does not make the source count exact.

For a readable report, you can show the main count in one column and keep its precision in a nearby column or supporting record. What matters is that a later user can recover the qualification. A number detached from its precision can appear more exact than the evidence supports.

Keep missing values empty. Zero is a count. An unknown value is a lack of evidence for a count. Replacing one with the other changes the meaning of the data.

Also avoid filling a missing plays field with views. That creates a second number without a second observation. The row may look complete, but it no longer represents the collected evidence.

## A fictional three-URL acceptance check

The following example is fictional. It is not a product test, a customer result, or a measured collection rate.

An analyst prepares a client report with separate Views and Plays columns. The report accepts either counter only when its precision meets the rule set for that column. It requires both acceptable counters for its dual-counter comparison.

The analyst checks three intended public content URLs. Two rows contain both required counters at an accepted precision. The third contains an acceptable views value, but plays is unavailable.

For this invented check, dual-counter eligibility is:

2 / 3 × 100 = 66.67% of the intended URLs.

The denominator includes all three intended URLs. It does not include only the rows that happened to contain both values. That choice matters because the report needs to know how much of its intended content supports the comparison.

The analyst keeps the third row for a views-only use. The analyst labels plays unavailable and checks a separate Reels source if that counter remains necessary. The analyst does not copy views into plays.

Now suppose the same fictional report also requires full post attachments. That requirement can justify the richer Posts route and a join. The decision changes because the required output changed, not because the fictional fraction proved one tool better.

The example shows how to apply an acceptance rule. Its 66.67% value says nothing about either Actor’s real collection performance.

## Use a join when the required output justifies it

The main switch condition is a need for richer post output. If that need outweighs the benefit of a single declared metrics row, use the Posts/Reels route and plan the join. [Apify Facebook Posts Scraper](https://apify.com/apify/facebook-posts-scraper)

A join combines records that describe the same content. Before you combine them, confirm the content identity. Do not match two records only because their text looks similar or their counts are close.

Use a stable content identifier when your available output provides one. If you use URLs, confirm that they refer to the same content. Keep uncertain matches separate until you can verify them.

Retain the source of each counter after the join. This helps you explain where a value came from and review it later. It also prevents a combined record from hiding which source supplied which field.

Do not require two counters to match as proof of a correct join. They measure different things. Check content identity first, then assess each counter against its own acceptance rule.

A joined record still needs the same review as a single collected row. Combining datasets does not establish that every required value is present, exact, or suitable for a calculation.

## Check the complete intended set before you choose

Use the first URL to learn how to inspect the output. Then apply the same rules to the intended set of content URLs. One acceptable row supports a decision about that row. It does not establish complete coverage for the rest.

Keep the method small and repeatable:

1. List the intended content URLs and remove unintended duplicates.
2. Record the required counters and accepted precision.
3. Collect through the route you are assessing.
4. Review content identity, values, status, and precision.
5. Count the rows that meet each stated requirement.
6. Record unresolved fields and the next action for each.

Choose the unit before you count eligibility. If the report concerns distinct videos, count each intended video once. Repeated copies of an acceptable URL should not increase the apparent share of content that meets the requirement.

Report separate outcomes when the uses differ. A row can qualify for views-only reporting while failing a dual-counter comparison. That distinction gives a more useful account of the available data than one broad pass or fail label.

If every URL must have both exact counters, treat any missing or insufficiently precise counter as an unmet requirement. Neither checked contract promises that strict result across every URL.

This method supports a decision without a fabricated benchmark. The published contracts establish what each route declares. Your own checks establish whether the returned values meet your report’s rules for its intended content.

## Start with the metrics row your report needs

For a public Facebook video report that needs separate views and plays fields with status and precision, start with the [Facebook Engagement Metrics Tracker Task](https://apify.com/chronometrica/facebook-metrics-scraper/examples/facebook-engagement-metrics-tracker). Set the known-URL input, use your intended public content, and inspect both counters before accepting the row.

Keep the switch condition clear. Choose the joined route when required post detail justifies the extra work. Keep partial values useful where the report permits them, and leave unknown counters empty.

Open Chronometrica’s [Facebook Metrics Scraper Actor](https://apify.com/chronometrica/facebook-metrics-scraper) to review its current contract and start your check against the report requirements.

## Sources

- [Chronometrica Facebook Metrics Scraper](https://apify.com/chronometrica/facebook-metrics-scraper)
- [Apify Facebook Posts Scraper](https://apify.com/apify/facebook-posts-scraper)
- [Apify Facebook Reels Scraper](https://apify.com/apify/facebook-reels-scraper)
- [Historical request for both counters](https://apify.com/apify/facebook-posts-scraper/issues/is-there-a-way-to-ge-yltOBpoPbuNyl0SBy)
- [Facebook Engagement Metrics Tracker Task](https://apify.com/chronometrica/facebook-metrics-scraper/examples/facebook-engagement-metrics-tracker)
- [Facebook Video Views, Plays, and Reach](https://chronometrica.com/en/articles/facebook-video-views-plays-reach/)