

# Chronometrica vs Novi: TikTok Profile Fields and Actor Event Fees

Choose Chronometrica when its flat public profile fields meet your needs and its lower listed Free-tier Actor event fees matter. Choose Novi when its larger raw user object supplies a required field that Chronometrica's contract cannot supply. Check the required fields first. A lower event fee cannot replace a required fact. See the [Chronometrica contract](https://apify.com/chronometrica/tiktok-channel-scraper) and [Novi contract](https://apify.com/novi/tiktok-user-info-api).

Chronometrica publishes this comparison and makes the Chronometrica Actor. An Actor is a hosted data collection program. This guide uses public contracts and API pricing records checked on 20 October 2026. The recommendation uses the listed Free-tier rates. These rates do not establish a total bill or a performance advantage. See the [Chronometrica pricing record](https://api.apify.com/v2/acts/chronometrica~tiktok-channel-scraper) and [Novi pricing record](https://api.apify.com/v2/acts/novi~tiktok-user-info-api).

The public question behind this guide concerns the choice between a self-built scraper and a public TikTok profile service. It also raises service stability. It does not ask for the cheapest service. We treat event fees as one part of that service decision. This comparison does not measure stability. [Public discussion](https://www.reddit.com/r/DevOpsLinks/comments/1vgwqze/what_do_you_think_works_for_pulling_public_tiktok/)

For a developer with a known public profile list, the useful order is simple. Define the required data, check each output contract, and then calculate a dated fee model. An output contract describes the fields a service supplies and what those fields mean.

## Start with the fields your application needs

Write down what the application must do with each profile. Then name the fields that make that action possible. This keeps the comparison tied to a clear requirement.

In a fictional profile directory, the required fields might be a handle, display name, profile URL, description, and follower count. A process that updates stored records might also need identity fields, an observation time, and a clear status. These are example requirements. They do not establish that both services supply the same values.

Separate required fields from useful extras. A required field prevents a necessary action when it is absent. An extra field adds context but does not prevent that action. Make this distinction before looking at the fee difference. Otherwise, a low price can make an incomplete result seem sufficient.

For each required field, record three things:

1. Meaning: What fact must the field represent?
2. Acceptance rule: Which values can the application use?
3. Missing-value rule: What must happen when the fact is unknown?

Do not rely on field names alone. Two fields with similar names can represent different facts or use different formats. Check the documented meaning before you map either field into a stored record.

Also define what counts as one useful result. Your application might require a confirmed profile identity and every required field. It might instead accept a partial record when its status explains the missing information. Either rule can be valid. Set the rule before you compare result counts.

Keep the requirement tied to its purpose. If the application needs to match an existing record, identify the field it uses for that match. If it needs to display a count, define how it will show an unknown or limited-precision value. This makes the later check clear enough to repeat.

## Check both output contracts against the required fields

Chronometrica's documented profile output includes `input`, `channelId`, `secUid`, `shortId`, `channelUrl`, `handle`, `displayName`, `description`, `bioLink`, public counts, `countPrecision`, `status`, `statusReason`, and `observedAt`. It collects profiles. It does not collect post history or follower lists. [Chronometrica output contract](https://apify.com/chronometrica/tiktok-channel-scraper)

This flat output is a good fit when those profile facts and their context meet your requirements. A flat output gives the named fields directly. Check whether each required fact has a documented place in that output. The number of available fields alone does not answer that question.

Novi accepts username, user-ID, and URL inputs and returns a larger raw user object. A raw object retains a broader source structure. Verify the exact required field and its meaning. [Novi contract](https://apify.com/novi/tiktok-user-info-api), [Novi input schema](https://apify.com/novi/tiktok-user-info-api/input-schema)

A broader output can be necessary for a particular requirement. It also requires you to identify which parts the application will use. Output size alone does not establish better results for your list.

If the documentation leaves a required field unclear, record it as unresolved. An undocumented field is not proof that the service lacks it. A similar field name is not proof of a match. Resolve that question before using fees to choose the service.

Keep a short field map. Put your application field beside the documented source field, its meaning, and its acceptance rule. Use this map when you inspect a small result. It gives you a clear basis for accepting the output or investigating a gap.

## Keep the context that makes a profile useful

A profile value needs context. Store when it was observed and whether the result was complete enough for your use. Chronometrica exposes `observedAt`, `status`, `statusReason`, and `countPrecision`. Apply their documented meanings when loading profile facts. [Chronometrica contract](https://apify.com/chronometrica/tiktok-channel-scraper)

Keep a missing count separate from a count of zero. Zero states that the count is zero. A missing value states that the count is unknown. Replacing an unknown value with zero can change a report, filter, or alert without evidence.

Retain count precision as well. Precision describes how exact a value is. If a count has limited precision, do not display it as an exact measurement. Keep the precision information available to the part of the application that displays or compares the count.

Decide how partial results affect stored records. One possible application rule is to keep an earlier known value when the latest attempt does not confirm it. If you use that rule, retain the earlier value's observation time. Do not make an old fact appear newly observed.

Also keep the latest attempt's status separate from the earlier observation. This lets the application distinguish a known past value from a value confirmed by the latest collection. Your missing-value rule should explain which one the application can use.

An account-region value, if you use one, does not establish where a person lives. Define the fact your application needs before deciding whether a source field supports it.

These rules affect whether a result is useful. The right field names are not sufficient if the application cannot distinguish a fresh fact from an unresolved value. The related guide on [TikTok profile access status and missing values](/en/articles/tiktok-profile-access-status/) explains that issue in more detail.

## Use the latest effective Actor event fees

Both checked public API records use `PAY_PER_EVENT`. This pricing model lists fees for named events. An event is a chargeable action identified in the pricing record. Select the latest effective `startedAt` record, rather than the first historical entry. Use the same plan tier for both Actors.

Chronometrica's current checked record started at `2026-07-16T22:51:35.105Z`. On Free, it lists $0.0015 per useful profile. Its current event list contains no Actor-start event. [Chronometrica public API pricing](https://api.apify.com/v2/acts/chronometrica~tiktok-channel-scraper)

Novi's current checked record started at `2026-08-16T17:08:03.534Z`. On Free, it lists $0.0055 per result plus $0.001 per start. [Novi public API pricing](https://api.apify.com/v2/acts/novi~tiktok-user-info-api)

These records were checked on 20 October 2026. Chronometrica's README contains older prices that differ from its API record. This comparison uses the dated API rates above. Do not mix historical entries with current rates.

Call the calculated amount Actor event fees. Exclude platform usage from this narrow calculation. The result must not be labeled a total bill.

Record the event name, unit, rate, plan tier, effective time, and check date. This makes the calculation possible to review. Before using it for a current decision, check the latest effective records again. If a rate changes, update the calculation.

## A fictional example with checked arithmetic

This is a fictional fee model. It is not an observed bill, a benchmark, or a customer result. Assume each Actor returns exactly 100 useful matching profiles on the Free tier. Assume there are no other result events. Only the run count changes between the two rows.

| Fictional workload | Chronometrica Actor event fees | Novi Actor event fees | Difference |
| --- | --- | --- | --- |
| 100 useful results, one run | 100 × $0.0015 = $0.150 | (100 × $0.0055) + (1 × $0.001) = $0.551 | $0.401 |
| 100 useful results, five runs | 100 × $0.0015 = $0.150 | (100 × $0.0055) + (5 × $0.001) = $0.555 | $0.405 |

The table uses the dated [Chronometrica API rates](https://api.apify.com/v2/acts/chronometrica~tiktok-channel-scraper) and [Novi API rates](https://api.apify.com/v2/acts/novi~tiktok-user-info-api). It includes the listed start event. Three decimal places keep that charge visible.

For one run, $0.551 − $0.150 = $0.401. For five runs, $0.555 − $0.150 = $0.405. Both differences describe Actor event fees only.

The equal useful-result count is an assumption. It is not a measured outcome. Entering 100 profiles does not establish that either service will return 100 useful records under your acceptance rules. The table therefore does not prove an actual saving for an untested list.

Apply the field decision before using the difference. If both contracts meet the requirements, this model supplies a valid, narrow fee input. If only one meets a required field, choose based on that requirement first.

Run count also belongs in the model. The same useful-result count can be spread across a different number of runs. State both quantities so another developer can reproduce the calculation without having to guess how you collected the profiles.

## Check one required field with a small public input

Start with the field most likely to change your choice. It might be the identity value used to match a profile to your database. It might be a count whose missing-value behavior affects a report. Define the pass condition before collecting anything.

Chronometrica's documented schema accepts `startUrls`. A schema describes the accepted input fields. The following is a current-schema example, not a paid run or a verified live result. Replace the URL with a relevant public profile before use. This example does not establish that the source is currently available. [Chronometrica input schema](https://apify.com/chronometrica/tiktok-channel-scraper/input-schema)

```json
{
  "startUrls": [
    "https://www.tiktok.com/@mrbeast"
  ]
}
```

Check one required field with a small public input

A Task is a saved input preset. The checked public [TikTok profile data API Task](https://apify.com/chronometrica/tiktok-channel-scraper/examples/tiktok-profile-data-api-dataset) provides an input reference. A saved preset does not establish the result your chosen profile will produce.

When you inspect a small result, use the field map you prepared:

1. Confirm that the result refers to the intended profile.
2. Check the required field's meaning, format, and usable value.
3. Inspect status and observation time.
4. Retain count precision where it applies.
5. Record unknown values as unknown.

If the field is unresolved, identify what remains unclear. It could be the documented meaning, the returned value, or your application's acceptance rule. Keep that distinction in the decision record. It prevents an unclear requirement from becoming a claim about the service.

One successful check supports the next small step. It does not establish success for every profile. Expand the list after the result supplies the evidence your application needs. Keep the accepted field map so later changes can be reviewed against the same requirements.

## Make the decision in six steps

1. Define the required facts. List required profile fields, acceptable formats, and missing-value rules. State what makes a result useful.
2. Map both contracts. Match each required fact to documented output. Resolve differences in meaning before comparing quantities.
3. Set the model inputs. Record useful-result count, run count, and matching plan tier. Label assumed quantities as fictional.
4. Check current pricing. Select the latest effective API record. List every applicable result and start event with its rate, unit, and check date.
5. Calculate Actor event fees. Multiply each event count by its rate, then add the amounts. Keep platform usage outside the claimed number.
6. Verify the required field. Inspect a small relevant result. Preserve unknown values and observation context before expanding the list.

The decision record can stay short. It needs the required fields, unresolved questions, evidence links, dated rates, assumptions, and calculation. Another developer should be able to review the choice and update it without reconstructing your reasoning.

Choose the contract that supplies the required fields first. Then use the fee calculation as one decision factor. Keep stability, runtime, and extraction success unresolved unless separate evidence answers those questions.

## Start with Chronometrica when its fields fit

For a known public profile list that fits its flat output, choose the [Chronometrica TikTok Channel Scraper](https://apify.com/chronometrica/tiktok-channel-scraper). Its checked contract and lower listed Free-tier Actor event fees support that choice. Verify one required output field with a small relevant public input before expanding the list.

Choose Novi if its larger raw user object supplies a required field that Chronometrica's contract cannot supply. Resolve unclear field support before making that decision. A lower listed Actor event fee cannot replace a required fact.

## Sources

- [Chronometrica TikTok Channel Scraper — public profile output contract; checked 20 October 2026, build 0.1.27; documents profile fields and observation context, not post history or follower-list collection.](https://apify.com/chronometrica/tiktok-channel-scraper)
- [Chronometrica TikTok Channel Scraper input schema — checked 20 October 2026; documents startUrls; the article's input illustrates the current schema and does not establish source availability or a verified live result.](https://apify.com/chronometrica/tiktok-channel-scraper/input-schema)
- [Chronometrica public API pricing record — checked 20 October 2026; latest effective record began 2026-07-16T22:51:35.105Z; Free lists $0.0015 per useful profile and no Actor-start event; API rates differ from older README prices; Actor event fees only, excluding platform usage.](https://api.apify.com/v2/acts/chronometrica~tiktok-channel-scraper)
- [Novi TikTok User Info API — public contract checked 20 October 2026, build 0.1.90; returns a larger raw user object; specific required fields need verification, and undocumented support remains unresolved.](https://apify.com/novi/tiktok-user-info-api)
- [Novi TikTok User Info API input schema — checked 20 October 2026; accepts username, user-ID, and URL input forms; input support does not establish matching useful outputs.](https://apify.com/novi/tiktok-user-info-api/input-schema)
- [Novi public API pricing record — checked 20 October 2026; latest effective record began 2026-08-16T17:08:03.534Z; Free lists $0.0055 per result plus $0.001 per start; Actor event fees only, excluding platform usage.](https://api.apify.com/v2/acts/novi~tiktok-user-info-api)
- [Public TikTok profile data API Task — checked in the supplied public evidence on 20 October 2026; saved input preset used as an input reference, not proof of current profile availability or returned data.](https://apify.com/chronometrica/tiktok-channel-scraper/examples/tiktok-profile-data-api-dataset)
- [Public discussion about TikTok profile collection services — source evidence reviewed for this comparison dated 20 October 2026; asks about collection services and stability, not the cheapest service; supports the reader question, not a measured price preference or stability claim.](https://www.reddit.com/r/DevOpsLinks/comments/1vgwqze/what_do_you_think_works_for_pulling_public_tiktok/)