TikTok Content Discovery Scraper · Hashtags & Sounds
Pricing
from $1.00 / 1,000 content rows
TikTok Content Discovery Scraper · Hashtags & Sounds
Discover public TikTok videos by exact hashtag/challenge or sound/music. Get one typed row per unique video with creator, engagement, music, hashtag, and timestamp fields, with bounded depth and clear empty or partial outcomes.
Pricing
from $1.00 / 1,000 content rows
Rating
0.0
(0)
Developer
Data Slayer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Discover public TikTok videos tied to an exact hashtag/challenge or an exact sound/music ID. Choose one discovery mode, supply exact targets, and receive one typed row per unique public video with creator, engagement, music, hashtag, and timestamp fields.
What this Actor does
Use this Actor when you know the exact hashtag/challenge or sound/music you care about and want the public videos associated with it. It is intentionally different from keyword video search and from region/window trend research:
- Hashtag mode resolves an exact hashtag or challenge name (for example
fyp,#fyp, or atiktok.com/tag/...URL) and returns the public videos for that entity. - Sound mode resolves an exact numeric sound/music ID (or a
tiktok.com/music/...URL) and returns the public videos that use that sound.
Each run uses exactly one mode, so every dataset row has an explicit, predictable type: hashtagContent or soundContent. The Actor does not mix different entity types into one undifferentiated dataset.
For every unique public video the default dataset receives one normalized row with:
- the source entity the row was discovered through (hashtag/challenge or sound);
- video ID, canonical public URL, caption/description, and publication time;
- views, likes, comments, shares, and saves when available;
- creator ID, username, display name, and verification state;
- music ID, title, author, duration, and original-sound flag;
- hashtags referenced by the video, video dimensions, and cover URL; and
- an observation timestamp for repeatable tracking.
This product does not download video or audio files and does not return transcript text.
Input
| Field | Type | Required | Default | Limits | Purpose |
|---|---|---|---|---|---|
mode | string | yes | hashtag | hashtag or sound | Which entity type to discover content for. |
targets | array of strings | yes | — | 1–20 entries; each ≤300 characters | Exact hashtag names / tiktok.com/tag/... URLs, or exact numeric sound IDs / tiktok.com/music/... URLs. Duplicates are processed once. |
maxItems | integer | no | 1000 | 1–10,000 | Hard cap on unique rows written across all targets. |
maxItemsPerTarget | integer | no | 100 | 1–1,000 | Hard cap on unique rows per individual target. |
maxRequests | integer | no | derived | 1–300 | Hard cap on total upstream requests. Leave empty for a safe derived default. |
timeBudgetSecs | integer | no | 300 | 1–3,300 | Soft wall-clock budget; the run stops safely and reports a partial outcome. |
Valid hashtag input:
{"mode": "hashtag","targets": ["fyp", "https://www.tiktok.com/tag/research"],"maxItems": 200,"maxItemsPerTarget": 100}
Valid sound input:
{"mode": "sound","targets": ["7224128604890990593"],"maxItems": 100,"maxItemsPerTarget": 50}
Targets that do not match the selected mode (for example a music URL in hashtag mode) are rejected before any request, so the Actor never follows an unverified redirect or guesses an entity type.
Output
Each unique public video creates one paid row in the default dataset. Hashtag mode writes hashtagContent rows and sound mode writes soundContent rows.
| Field | Type | Nullable | Description |
|---|---|---|---|
recordType | string | no | hashtagContent or soundContent. |
discoveryMode | string | no | The requested mode: hashtag or sound. |
query | string | no | The exact normalized target this row was discovered for. |
source | object | no | The hashtag/challenge or sound/music entity (id, name, description, author, duration, and counts when available). |
videoId | string | no | Stable numeric video ID and dataset identity. |
description | string | yes | Public video caption or description. |
createdAt | string | yes | ISO 8601 publication time when available. |
webVideoUrl | string | yes | Canonical public TikTok video URL when the creator handle is known. |
author | object | no | Creator ID, username, display name, and verification state. |
metrics | object | no | Nullable integer counts for views, likes, comments, shares, and saves. |
music | object | no | Music ID, title, author, duration, and original-sound flag. |
hashtags | array | no | Hashtags referenced by the video. |
video | object | no | Duration, width, height, and cover URL. |
isAd | boolean | yes | Public paid-partnership flag when available. |
observedAt | string | no | UTC time when the row was normalized. |
See customer/examples/result.json and customer/examples/result.csv for valid illustrative records. The examples validate the schema; they are not live result claims.
Empty, partial, unavailable, and failed runs
Invalid input stops before any request. Hashtags or sounds that cannot be resolved, and public content that is unavailable, do not become dataset rows and are not charged as content rows. Their safe per-target outcomes remain in the free RUN_SUMMARY key-value record.
The summary distinguishes succeeded, partial, empty, failed, charge_limit_reached, billing_uncertain, and cancelled, and reconciles delivered versus charged rows:
- If the billing limit prevents a dataset push, no delivered row is counted.
- If a storage or billing response leaves the write outcome uncertain, the Actor stops, does not retry the row, and makes no delivery claim for that write.
- Pagination terminates safely on an absent or repeated cursor instead of looping.
Pricing
Pay per event. The Actor-start event is charged per GB of run memory, with a minimum of one event; the proposed 256 MB default therefore incurs one start event. A content-result event is charged for each unique row successfully delivered to the dataset. Duplicate, empty, unavailable, invalid, and failed results are not charged as content rows.
| Plan | Actor start | Per content row | 1 row | 100 rows |
|---|---|---|---|---|
| Free | $0.0025 | $0.0030 | $0.0055 | $0.3025 |
| Bronze | $0.0023 | $0.0020 | $0.0043 | $0.2023 |
| Silver | $0.0021 | $0.0015 | $0.0036 | $0.1521 |
| Gold | $0.0020 | $0.0010 | $0.0030 | $0.1020 |
| Platinum | $0.0020 | $0.0010 | $0.0030 | $0.1020 |
| Diamond | $0.0020 | $0.0010 | $0.0030 | $0.1020 |
Platform compute usage, if any, is shown separately by Apify.
Reliability and limits
- Transient rate-limit, server, and timeout failures use bounded retries and honor a short
Retry-Aftervalue when provided. - Requests are paced conservatively within a run. This does not claim an account-wide distributed rate limit.
- Duplicate targets and duplicate videos are removed by stable ID before delivery.
- Media download URLs, audio download URLs, and private supplier identifiers are intentionally excluded from every row.
- Engagement counts can change after retrieval. Store
videoIdas the stable join key andobservedAtas the observation time.
Use from the API
After publication, call the Actor with your Apify token:
curl "https://api.apify.com/v2/acts/data-slayer~tiktok-content-discovery/runs?token=<YOUR_APIFY_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"mode":"hashtag","targets":["fyp"],"maxItems":100,"maxItemsPerTarget":50}'
The proposed slug is not live yet. This endpoint becomes valid only after an authorized release.
FAQ
How much does it cost to run this Actor? Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows the Actor actually produces, so a small test run costs cents.
Do I need cookies or a login? No. This Actor reads public data only - no cookies, no account, no browser automation.
Can I schedule it? Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.
What if I need a slightly different output? Open an issue on the Actor's Issues tab describing the shape you need.
Related actors
More Tiktok actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours: