

# Chronometrica vs Clockworks: Choose a TikTok Comment Dataset You Can Check

Choose Chronometrica for a known TikTok post list when you need requested-post checks, unique comment rows, linked replies, and run totals you can check. Choose Clockworks when you must first turn profile usernames into a video list. Both support replies and separate collection caps. Neither choice proves that you collected every comment: public availability and collection limits still bound the result. These choices follow the checked public contracts, not a controlled performance test. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper), [Clockworks contract](https://apify.com/clockworks/tiktok-comments-scraper).

An Actor is a hosted data collection program. This comparison covers the Chronometrica TikTok Comments Scraper and the Clockworks TikTok Comments Scraper. The main question is where your work starts and how you will check the collected rows.

The public contracts were checked on October 20, 2026. The example below uses the documented input format. It is a setup example, not a paid run or verified live output.

## Start with the post list you need to study

A researcher asked, “How to get data for ALL TikTok Comments?” Their post described a tool that collected top-level comments but could not open more replies. That makes reply collection a real part of the need. The word “ALL” describes the desired result; it does not establish what a collection tool can return. [Public research question](https://www.reddit.com/r/Octoparse_ideas/comments/14svecf/how_to_get_data_for_all_tiktok_comments/).

A top-level comment responds directly to a post. A reply responds within a comment thread. If your question concerns discussion, collecting only top-level comments can leave out the exchanges you want to study.

But reply support alone does not decide this comparison. First decide whether you already know the posts. A fixed list gives you a clear input boundary. You can compare each collected row with the posts you requested.

If you start with profiles, selecting the videos is part of the collection job. Clockworks documents profile-username expansion into videos. That input workflow can change the choice before any comment checks begin. [Clockworks contract](https://apify.com/clockworks/tiktok-comments-scraper).

Write down that starting point before you compare output fields. “Comments from these posts” and “comments from videos found through these profiles” are different collection requests.

## Compare the documented fit

Chronometrica documents strict requested-post identity checks and run-wide comment-ID deduplication. Deduplication means that repeated sightings of the same comment ID do not become separate accepted comments. It also documents replies as separate rows and per-post summaries that distinguish cap conditions from source-exhaustion conditions. These features fit a fixed post list that needs careful checking. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper).

| Decision point | Chronometrica | Clockworks |
| --- | --- | --- |
| Documented fit highlighted here | Known-post checks and unique comment rows | Profile usernames expanded into videos |
| Replies | Separate reply rows | Reply support |
| Collection limits | Top-level cap and separate reply cap | Per-post and per-parent reply caps |
| Main reason to choose | Check collected rows against requested posts | Find videos from supplied profiles first |

The table summarizes the checked contracts. It does not rank speed or measured accuracy. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper), [Clockworks contract](https://apify.com/clockworks/tiktok-comments-scraper), [Clockworks input schema](https://apify.com/clockworks/tiktok-comments-scraper/input-schema).

Chronometrica also documents comments from public video and photo/carousel posts. Its reply fields include `parentCommentId`, `replyToCommentId`, `isReply`, `replyDepth`, and `replyCount`. These fields help retain thread structure. They do not establish that every part of a thread was available. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper).

This is a comparison of documented fit. It does not establish that a feature omitted from this table is absent from a product. No controlled run supplied for this article establishes an accuracy or reliability advantage. There is also no price comparison: the saved Clockworks Store header and README disagree on pricing. [Clockworks Store page and README](https://apify.com/clockworks/tiktok-comments-scraper).

## Set comment and reply caps separately

A cap is the maximum number you ask a collection to return within a stated limit. It is not a promised row count.

For Chronometrica, `maxCommentsPerVideo` sets the top-level comment cap from 1 to 1,000. The `includeReplies` switch controls reply collection. When replies are included, `maxRepliesPerComment` sets a separate cap from 1 to 100 replies per comment. [Chronometrica input schema](https://apify.com/chronometrica/tiktok-comments-scraper/input-schema).

This separation matters when you plan the size of a dataset. A request for three top-level comments can produce more than three rows if you also request replies. It can also produce fewer rows than the configured limits allow.

The following setup example uses documented fields and valid bounds. The public URL shows the input format only. Replace it with a relevant public post before use.

```json
{
  "startUrls": [
    "https://www.tiktok.com/@zachking/video/7631200623693729038"
  ],
  "maxCommentsPerVideo": 3,
  "includeReplies": true,
  "maxRepliesPerComment": 2
}
```

Set comment and reply caps separately

With these settings, three top-level comments could each have two collected replies. That gives a possible volume of three top-level rows plus six reply rows: nine rows for this simple case. It is a planning calculation, not an expected result. Available comments and replies can leave either count below its cap.

A Task is a saved input preset. The checked [TikTok comments and replies export Task](https://apify.com/chronometrica/tiktok-comments-scraper/examples/tiktok-comments-and-replies-export) provides a public starting point. Check its inputs against your study before you use it.

Choose caps that let you inspect a small collection fully. Increase them after you understand the output and its limits.

## Keep enough information to check each row

Comment text alone is not enough for a dataset you can check. You need to connect each row to its source and, where relevant, to its parent comment.

Keep your original requested post list with the exported data. Retain the input identity, returned post identity, comment ID, and available reply links. The requested list records what you asked for. The row identities let you check what you accepted.

Use a stable post ID for the membership check where the data provides it. The check asks a simple question: does this row belong to one of the requested posts? A similar caption or creator name does not answer that question.

A comment ID identifies a comment for duplicate checks. Compare IDs across the full run, rather than only within separate export files. Splitting a collection into files should not turn repeated sightings into extra accepted comments.

Retain the documented reply fields in your export. Use `isReply` to distinguish row types and the available parent links to retain relationships. Keep `replyDepth` and `replyCount` as source context. Do not treat a reply count as proof that you collected that many reply rows. [Chronometrica output contract](https://apify.com/chronometrica/tiktok-comments-scraper).

If a required identity or relationship value is missing, keep it missing. Do not replace it with zero or infer a parent from nearby text. Mark the row for review if the missing value prevents the check you need.

## Reconcile the collected rows with the run summary

Reconciliation means checking that the counts and records agree. Read the actual run summary before you calculate your final dataset totals.

Chronometrica documents summaries that distinguish cap conditions from source-exhaustion conditions. Use the labels and definitions in the returned summary. Do not create a new native summary field to fit your report. A source-exhaustion label also does not prove a complete archive of a post's comment history. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper).

Use this small checking method:

1. Save the requested post IDs and the collection settings.
2. Read each post's documented summary and stopping condition.
3. Check each row against the requested post list.
4. Check comment IDs for repeated sightings across the run.
5. Count accepted top-level rows and accepted reply rows separately.
6. Compare your accepted totals with the export and summary.
7. Record any difference that you cannot resolve.

Keep a reader-side checking record for these decisions. This is your own record, not an Actor output field. It can show the imported observation count, rejected observations, accepted unique rows, and unresolved checks.

An observation is one sighting in the imported file. A unique comment is a distinct comment after the required checks. Those terms should not share one total. If the numbers differ, preserve both and explain the reason.

Also keep results at post level. A batch total can hide an unreviewed post. Separate post totals let you see where a cap applied or where a required check remains open.

## Work through a fictional eight-observation file

The following exercise is fictional. It is a reader-side checking example, not output from either current Actor, a benchmark, or a customer result.

Suppose an imported file contains eight observations. Two observations repeat comment IDs already seen. One other observation belongs to a post outside the requested list. Rejecting those three observations leaves five accepted unique rows:

`8 − 2 − 1 = 5 accepted unique rows`

Of those five rows, three are top-level comments and two are replies. The accepted reply fraction is:

`2 ÷ 5 × 100 = 40% of accepted rows`

The denominator matters. Forty percent describes the accepted file after the stated checks. It does not describe all comments on the source posts, the share of people who replied, or the share of all available replies that the collection captured.

The eight-observation total answers how much you imported. The five-row total answers how many unique rows passed the checks. The three-and-two split shows the accepted row types. Each number serves a different purpose.

Keep the rejected observations and reasons in your checking record where appropriate. That lets another reviewer follow the arithmetic without treating rejected rows as part of the accepted dataset.

This example explains why identity and duplicate checks matter. It does not imply that either current Actor produced the fictional problems. Chronometrica's documented checks are the product reason to inspect its contract for this fixed-post use case. [Chronometrica contract](https://apify.com/chronometrica/tiktok-comments-scraper).

## Preserve reply context without filling gaps

Group accepted replies under their parent comments using the available links. This makes the dataset useful for thread review while keeping the source relationships visible.

Check whether each referenced parent exists among the accepted rows. If it does, retain the link. If it does not, keep the reference and mark the context as unresolved. A missing parent does not tell you why the parent is absent.

Do not attach a reply to the nearest row in a spreadsheet. Row order is not a substitute for a parent link. Do not infer the missing parent's text from the reply either.

An accepted reply can still have incomplete context. Keep that distinction clear in any later analysis. For example, you may be able to count the reply as a row while lacking enough context to interpret the full exchange.

If you later prepare the data for qualitative coding, keep these checks with the export. The [TikTok comments for NVivo guide](/en/articles/tiktok-comments-nvivo/) covers the next stage. Here, the decision concerns post selection, reply structure, and batch totals.

## Report the dataset boundary before expanding

A useful report states what the accepted file contains and what the collection request allowed. Give the requested posts, collection settings, accepted unique row count, top-level count, reply count, and unresolved context.

Keep observed totals separate from configured caps. A cap describes the request. An accepted count describes the checked file. Neither value should replace the other.

For the fictional exercise, a clear statement would be: “The checked file contains five accepted unique rows from the requested posts: three top-level comments and two replies.” Add the relevant settings and recorded stopping conditions. Do not change this into a claim that the posts contain only five comments.

Also state when a required check remains incomplete. Unknown values should stay unknown. A zero means that the measured count is zero; it should not stand for a missing count.

Expand the work only after the small collection gives you usable identities, clear row types, and enough thread context for your question. If a required relationship is unresolved, decide whether your analysis can still use the row. Record that decision before collecting more data.

## Start with one small collection

Use the [Chronometrica TikTok Comments Scraper](https://apify.com/chronometrica/tiktok-comments-scraper) for one small, relevant public post collection when your post list is fixed and checked comment rows are the priority. Set separate top-level and reply caps. Inspect post identity, comment IDs, row types, reply links, and the actual summary before you expand.

Aim for an accepted unique dataset with separate top-level and reply totals, clear source links, and visible collection limits. If your work must first turn profile usernames into videos, choose the Clockworks profile-expansion workflow at that input stage. [Clockworks contract](https://apify.com/clockworks/tiktok-comments-scraper).

## Sources

- [Chronometrica TikTok Comments Scraper: public contract](https://apify.com/chronometrica/tiktok-comments-scraper)
- [Chronometrica input schema](https://apify.com/chronometrica/tiktok-comments-scraper/input-schema)
- [Clockworks TikTok Comments Scraper: public contract](https://apify.com/clockworks/tiktok-comments-scraper)
- [Clockworks input schema](https://apify.com/clockworks/tiktok-comments-scraper/input-schema)
- [Checked comments and replies export Task](https://apify.com/chronometrica/tiktok-comments-scraper/examples/tiktok-comments-and-replies-export)
- [Public question about collecting TikTok comments and replies](https://www.reddit.com/r/Octoparse_ideas/comments/14svecf/how_to_get_data_for_all_tiktok_comments/)