TikTok Hashtag Scraper
Pricing
from $0.40 / 1,000 tiktok video saveds
TikTok Hashtag Scraper
Scrape public TikTok hashtag videos, captions, creators, and engagement metrics.
TikTok Hashtag Scraper
Pricing
from $0.40 / 1,000 tiktok video saveds
Scrape public TikTok hashtag videos, captions, creators, and engagement metrics.
You can access the TikTok Hashtag Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "u9USoYNFldHnpJdRJ" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/fetch_cat~tiktok-hashtag-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-fetch_cat-tiktok-hashtag-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/fetch_cat~tiktok-hashtag-scraper/runs": { "post": { "operationId": "runs-sync-fetch_cat-tiktok-hashtag-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/fetch_cat~tiktok-hashtag-scraper/run-sync": { "post": { "operationId": "run-sync-fetch_cat-tiktok-hashtag-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "hashtags": { "title": "TikTok hashtags", "minItems": 1, "type": "array", "description": "Hashtags to scrape. Enter values with or without #, for example booktok or #fitness. Required unless using resumeHashtags.", "items": { "type": "string" } }, "maxItemsPerHashtag": { "title": "Maximum videos per hashtag", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum number of public videos to save for each hashtag.", "default": 20 }, "sortMode": { "title": "Sort mode", "enum": [ "top" ], "type": "string", "description": "TikTok public hashtag pages expose a top/trending feed. Recent sorting is not currently available without login.", "default": "top" }, "includeVideoDetails": { "title": "Include video technical details", "type": "boolean", "description": "Add optional width, height, and bitrate fields when TikTok returns them.", "default": false }, "maxRunSeconds": { "title": "Maximum run time (seconds)", "minimum": 1, "maximum": 540, "type": "integer", "description": "Safety limit for this run. Completed videos are saved and unfinished hashtags are recorded for resume before shutdown.", "default": 540 }, "minDelayMs": { "title": "Minimum pagination delay (ms)", "minimum": 0, "maximum": 10000, "type": "integer", "description": "Minimum randomized wait between TikTok pagination actions. A modest delay reduces rate-limit risk.", "default": 750 }, "maxDelayMs": { "title": "Maximum pagination delay (ms)", "minimum": 0, "maximum": 15000, "type": "integer", "description": "Maximum randomized wait between TikTok pagination actions.", "default": 1500 }, "countryCode": { "title": "Residential proxy country", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Optional two-letter country for the default residential proxy. US is used when omitted for backwards compatibility.", "default": "US" }, "resumeHashtags": { "title": "Resume pending hashtags", "type": "array", "description": "Advanced: paste PENDING_HASHTAGS from a partial run to continue only unfinished hashtags.", "items": { "type": "object", "properties": { "hashtag": { "title": "Hashtag", "description": "The normalized hashtag to continue.", "type": "string" } }, "required": [ "hashtag" ] } }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "TikTok usually requires residential proxy traffic. The default run uses Apify Residential proxy in the United States.", "default": { "useApifyProxy": true, "apifyProxyGroups": [ "RESIDENTIAL" ], "apifyProxyCountry": "US" } } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for TikTok Hashtag Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: