TikTok Hashtag Scraper avatar

TikTok Hashtag Scraper

Pricing

from $0.40 / 1,000 tiktok video saveds

Go to Apify Store
TikTok Hashtag Scraper

TikTok Hashtag Scraper

Scrape public TikTok hashtag videos, captions, creators, and engagement metrics.

Pricing

from $0.40 / 1,000 tiktok video saveds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

13 days ago

Last modified

Security

Limited permissions

Share

Export public TikTok hashtag data with video captions, creators, engagement metrics, music, covers and video URLs. TikTok Hashtag Scraper turns public hashtag feeds into datasets for campaign research, social listening and creator discovery.

It returns video metadata, not downloaded video files or full comment threads. Availability and result counts depend on the public feed TikTok exposes.

Quick start

  1. Add one or more hashtags, with or without #, or use a TikTok tag URL.
  2. Start with a small maxItemsPerHashtag limit. The usual input form sets 20.
  3. Keep the existing proxy settings unless you have a working alternative.
  4. Start the run, open its dataset and export the results.
{
"hashtags": ["booktok"],
"maxItemsPerHashtag": 10,
"includeVideoDetails": false
}

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose an existing public example, then adjust the hashtags and limits:

What you get

  • Multiple hashtag feeds: Save one dataset row per video encountered for each hashtag.
  • Creator context: Collect public usernames, profile links, display names and captions.
  • Engagement metrics: Read public play, like, comment, share and save counts when exposed.
  • Music and media metadata: Collect music titles and identifiers, cover links and optional technical video details.
  • Partial-work recovery: Saved rows remain available. Inspect RUN_SUMMARY and pass PENDING_HASHTAGS back as resumeHashtags to retry unfinished tags.

Who is it for?

Social media marketers can build campaign reports. Creator teams can research niche communities, and analysts can compare captions, music choices and engagement across topics. Developers can send the returned rows to dashboards or other tools.

Input settings

SettingJSON keyUse it forExample
TikTok hashtagshashtagsRequired list of hashtags to scrape, with or without #.["booktok", "skincare"]
Maximum videos per hashtagmaxItemsPerHashtagCap saved rows per hashtag and control spend.20
Public feedsortModeOnly top is accepted. This does not sort the returned rows.top
Include video technical detailsincludeVideoDetailsAdd optional width, height, and bitrate fields when TikTok returns them.false
Maximum run timemaxRunSecondsSave completed work and checkpoint remaining hashtags before the platform timeout.540
Pagination delayminDelayMs, maxDelayMsSet a randomized polite pause between page actions.750, 1500
Residential proxy countrycountryCodeCountry for the default residential proxy with US as the default.US
Resume partial workresumeHashtagsAdvanced input copied from PENDING_HASHTAGS.[{"hashtag":"booktok"}]
Proxy configurationproxyConfigurationConfigure Apify Proxy for TikTok public pages. Residential US proxy is the default.{"useApifyProxy":true}

The proxy-first strategy is unchanged. Detailed choices, precedence and limitations are in the proxy input help.

resumeHashtags takes precedence over hashtags. Supply at least one valid hashtag through either input. The form sets 20 videos per hashtag and a 540-second time limit. Raw API input that omits those keys uses runtime limits of 50 videos and 570 seconds. Set explicit limits for repeatable runs.

Optional videoWidth, videoHeight and bitrate are included only with includeVideoDetails: true.

Output data

The Actor returns one dataset row per public TikTok hashtag video.

FieldDescription
hashtagSource hashtag
videoIdTikTok video ID
videoUrlPublic video URL
captionVideo caption text
authorUsernameCreator username
authorProfileUrlCreator profile URL
authorDisplayNameCreator display name
createTimePublished timestamp when available
durationVideo duration in seconds
playCountView or play count
diggCountLike count
commentCountComment count
shareCountShare count
coverUrlCover image URL
musicTitleMusic or sound title
musicIdTikTok music identifier when exposed
authorId / verifiedPublic creator identifier and verification flag when exposed
collectCountPublic save/favorite count when exposed
scrapedAtTime the row was collected

Missing values may be null. Technical video fields are optional. The same video may appear under more than one hashtag.

Shape-only example, not an observed extraction result:

{
"hashtag": "example",
"videoId": "example-video-id",
"videoUrl": "https://www.tiktok.com/@example/video/example-video-id",
"caption": "Example caption",
"authorUsername": "example",
"playCount": 100,
"musicTitle": null
}

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

This Actor uses pay-per-event pricing. The start event is charged once after browser startup.

The result event is charged for each saved video row. Empty targets and failed items do not create paid result rows. Already saved rows can be charged even if the run later fails or stops.

See the live Pricing tab for current rates and discounts. Platform usage such as compute, storage and proxies may also apply under your account plan.

Tips for best results

  • Start small. Try 10–20 videos from a specific hashtag before a larger batch.
  • Compare related tags. Use the source hashtag and creator fields to group your analysis.
  • Review partial work. Check the summary and existing rows before retrying unfinished tags. A retry can return previously saved videos.
  • Keep expectations bounded. Public counts can vary by region, caching and when you collect them.

Limits and caveats

  • Public TikTok hashtag video metadata only. No login, private videos, downloaded media or full comment threads.
  • TikTok can return fewer videos than requested or serve a verification page. A requested maximum is not a completeness guarantee.
  • The only supported feed value is top. The Actor does not reorder rows or provide recent sorting.
  • In the current implementation, a run with no saved videos fails. Mixed runs retain saved rows and can report PARTIAL in RUN_SUMMARY. This summary is separate from the platform run status.
  • Optional fields depend on what TikTok exposes. Counts can differ from the app.
  • This scraper is not affiliated with TikTok.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-hashtag-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"hashtags":["booktok"],"maxItemsPerHashtag":10}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tiktok-hashtag-scraper').call({
hashtags: ['booktok', 'skincare'],
maxItemsPerHashtag: 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/tiktok-hashtag-scraper').call(run_input={
'hashtags': ['booktok', 'skincare'],
'maxItemsPerHashtag': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

MCP and AI agents

You can ask your AI assistant to collect data with TikTok Hashtag Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's TikTok Hashtag Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/tiktok-hashtag-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use TikTok Hashtag Scraper by Fetch Cat, or give it the identifier fetch_cat/tiktok-hashtag-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • "Collect ten public BookTok videos and list their captions and creator links."
  • "Get a small sample of skincare and skincare routine hashtag videos, then compare their engagement counts."
  • "Collect public fitness hashtag videos with available music titles and prepare a spreadsheet from the results."

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Can I scrape multiple TikTok hashtags?

Yes. Add several values to hashtags. Each saved row includes its source hashtag.

Does this scrape comments or download videos?

No. It saves video metadata, URLs and engagement counts, not full comment threads or media files.

Why are there fewer results or missing fields?

TikTok controls what its public feed exposes. Fields can be unavailable and result counts are not guaranteed. Review RUN_SUMMARY and any saved rows when a run is partial.

Is this a TikTok hashtag API alternative for AI assistants?

Yes. Use the Apify clients or MCP setup above. Your assistant can summarize the extracted data afterward. Normal charges apply.

Can I schedule campaign monitoring?

You can schedule repeat runs on Apify. This Actor collects each snapshot. Comparing snapshots or detecting changes needs a separate workflow.

  • TikTok Profile Scraper — Collect public TikTok profile details, aggregate counts and available recent video summaries.
  • TikTok Video Scraper — Collect public TikTok video metadata and available engagement from known full video URLs.
  • TikTok Trends Scraper — Collect Explore topic categories and basic hashtag, sound or video URL records, rather than measured popularity rankings.
  • TikTok Ads Library Scraper — Collect curated TikTok Creative Center Top Ads and available public performance indicators, rather than a complete ad archive.
  • TikTok User Search Scraper — Collect public TikTok creator-profile search records and available account statistics for supplied keywords.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review from the Actor page to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥