TikTok Hashtag Stats — Public Counts & Metadata
Pricing
from $0.50 / 1,000 results
TikTok Hashtag Stats — Public Counts & Metadata
Look up public TikTok hashtag counters, challenge IDs, descriptions and commerce flags through lightweight HTTP. Up to 1,000 input entries; source values may be missing or approximate.
Pricing
from $0.50 / 1,000 results
Rating
5.0
(1)
Developer
Coor Yu
Maintained by CommunityActor stats
2
Bookmarked
40
Total users
20
Monthly active users
5 days ago
Last modified
Categories
Share
TikTok Hashtag Stats collects public aggregate counters and metadata from TikWM's hashtag-info endpoint: challenge IDs, video/view counters, descriptions and commerce flags. Use it for hashtag research and repeated snapshots, not individual video exports.
Precision matters: integer output is not proof of exact or complete TikTok totals. The Actor converts upstream values to integers; it does not independently verify them. In particular, video_count is mapped from the provider's user_count field, so its underlying meaning and accuracy depend on that provider.
Limits: The input schema accepts at most 1,000 hashtag entries per run. Apify Free-plan runs process only the first 50 normalized unique hashtags, producing at most 50 result rows. A run with no successful lookup rows finishes as
FAILED.
Quick start
Example input, not a guarantee that these tags currently return data:
{"hashtags": ["roblox", "minecraft", "skincare"],"maxConcurrency": 4,"requestTimeoutSecs": 10,"maxRequestRetries": 2}
Supply an array of tag names, not hashtag URLs. Empty entries are ignored, leading # characters are stripped, and case-insensitive duplicates are removed. Use the schema's array format rather than the internal comma-separated-string compatibility path.
The Actor uses lightweight HTTP only: no Chromium, TikTok account login, user cookies or configured proxy is used. No user-supplied upstream API key is required. Running it on Apify requires an Apify account, and API access requires appropriate Apify authentication.
Input fields
| Field | Default | Supported behavior |
|---|---|---|
hashtags | required | Array of names, schema maximum 1,000 entries. Normalized and deduplicated before lookup. |
maxConcurrency | 4 | 1–12 in-flight workers. Request starts remain spaced by the shared gate. |
requestTimeoutSecs | 10 | 3–30 seconds per HTTP attempt. |
maxRequestRetries | 2 | 0–3 retries after the initial attempt; temporary failures rotate between the two TikWM host variants. |
proxyConfiguration | disabled | Legacy compatibility field, ignored even if proxy settings are supplied. |
Paid plans have no developer-set 50-row restriction, but the 1,000-entry input limit and runtime/budget limits still apply. The runtime also rejects more than 1,000 normalized unique tags on paid runs. Free-plan truncation occurs before that runtime check; it does not remove the schema's input limit.
Output and numeric semantics
One default-dataset row represents a successful upstream response. Export results as JSON, CSV or Excel in Apify.
| Output field | Actual mapping and interpretation |
|---|---|
hashtag | Provider cha_name, falling back to the requested tag. |
platform | Always tiktok. |
challenge_id | Provider id, stringified; empty if missing. |
video_count | Integer conversion of upstream user_count. This is the Actor's field name, not independent confirmation of the metric's definition. |
view_count | Integer conversion of upstream view_count, intended as the provider's hashtag view total. Not independently verified. |
description | Provider desc, or an empty string. |
is_commerce_hashtag | Boolean conversion of provider is_commerce; missing values become false, not confirmed non-commerce status. |
share_meta_desc | Currently always an empty string; no share description is extracted. |
_source | Currently the fixed legacy text Lightweight public hashtag API (exact integers). This label is not an accuracy test. |
error | null on dataset result rows. Lookup errors are stored separately. |
The mapper does not expand K, M, B or T strings. Missing or unparseable counters become null; integer conversion may truncate a numeric non-integer value. A successful response can still be saved and billed when one or both counters are missing. There is no per-row scrape timestamp, so record the run time when comparing snapshots. These rows are third-party-source observations, not audited complete populations.
ERRORS in the run's Key-Value Store contains failed lookups with their requested tag and error text. They are not default-dataset result rows. RUN_SUMMARY records requested/completed/succeeded/failed counts and interruption status. A batch with at least one successful response can finish successfully while retaining errors for other tags; if every lookup fails, the run fails. Neither a successful run nor a non-null counter proves the statistic is current or complete.
Current pricing
Current effective event prices in USD:
| Apify plan | Per saved result row | Per 1,000 result rows |
|---|---|---|
| FREE | $0.00250 | $2.50 |
| BRONZE, SILVER, GOLD, PLATINUM, DIAMOND | $0.00050 | $0.50 |
The FREE plan is not a zero-priced event tier. Result billing uses apify-default-dataset-item, automatically attached to saved default-dataset rows. Duplicate inputs and failed lookups stored in ERRORS do not create result events. Successful rows with missing counters still count as results.
apify-actor-start costs $0.005 per GB of allocated memory, minimum one event per run. The current default allocation is 256 MB, so the minimum startup event applies; higher memory can require more startup events. Startup can be charged even if no results are produced.
Apify platform usage is billed separately to the running user, including compute, transfer and storage—even for empty or failed runs. Result-fee figures are not all-inclusive run totals. There is no downstream Apify Actor call in this implementation, but it depends on an independent HTTP service. Check the Pricing tab for your effective plan price and use a budget appropriate to your workload.
Reliability and batch size
- There is one aggregate lookup per tag, not video pagination or a date/region-filtered history mode.
- Request starts are spaced by about 3.1 seconds within a run. Default workers overlap latency; increasing concurrency does not remove the gate. Independent runs can share an outbound IP and still trigger rate limits.
- The configured no-retry estimate for 1,000 tags is about 52 minutes before startup. Retries can extend it; use smaller batches and adequate timeout. This is not a performance guarantee.
- Temporary failures use bounded retries/backoff; recognized permanent missing-tag responses stop retrying. Endpoint changes, access blocks, malformed responses and rate limits can still prevent delivery.
- Saved partial results are billable even if the run is later interrupted or fails. Graceful abort handling attempts to flush buffered rows, but abrupt termination can leave a partial dataset.
- Only public endpoint data is collected. No private-content access or access-control bypass is offered. Follow applicable laws and platform terms.
FAQs
Are these exact counts? They are integer-converted provider values, not independently verified totals. video_count specifically comes from user_count; inspect that provenance before treating it as a count of videos.
Does this return hashtag videos? No. It returns aggregate lookup rows. Use the TikTok Scraper for individual public videos and their metadata.
Why are some counters blank? Missing or unparseable upstream values become null, while the successful lookup can still produce a result row. Review both the dataset and ERRORS.
Related Actors from funny_ground
- TikTok Scraper — public videos from hashtag feeds, profiles, searches and URLs.
- TikTok Creator Videos — available public videos from known creator profiles.
- TikTok Sound Scraper — sound metadata and available videos using a sound.