TikTok Scraper
Pricing
from $1.00 / 1,000 results
Go to Apify Store
TikTok Scraper
Scrape TikTok videos by hashtag or profile: captions, views, likes, comments, shares, music, and author stats. No login needed. Export to JSON, CSV, or Excel.
TikTok Scraper
Pricing
from $1.00 / 1,000 results
Scrape TikTok videos by hashtag or profile: captions, views, likes, comments, shares, music, and author stats. No login needed. Export to JSON, CSV, or Excel.
You can access the TikTok 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.0", "x-build-id": "Hox97lKN0TPlBCgLz" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/donjuan_mime~tiktok-parser/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-donjuan_mime-tiktok-parser", "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/donjuan_mime~tiktok-parser/runs": { "post": { "operationId": "runs-sync-donjuan_mime-tiktok-parser", "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/donjuan_mime~tiktok-parser/run-sync": { "post": { "operationId": "run-sync-donjuan_mime-tiktok-parser", "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": "Hashtags", "type": "array", "description": "Hashtags to scrape, with or without #. Full https://www.tiktok.com/tag/... URLs work too. Add hashtags, profiles, or both.", "items": { "type": "string" } }, "profiles": { "title": "Profiles", "type": "array", "description": "Profiles to scrape: a username (nasa), an @username (@nasa), or a full https://www.tiktok.com/@nasa URL.", "items": { "type": "string" } }, "profileScrapeSections": { "title": "Profile sections", "type": "array", "description": "Which posts to take from each profile: its own videos, the posts it reposted, or both.", "items": { "type": "string", "enum": [ "videos", "reposts" ], "enumTitles": [ "Videos", "Reposts" ] }, "default": [ "videos" ] }, "profileSorting": { "title": "Profile video order", "enum": [ "latest", "popular", "oldest" ], "type": "string", "description": "The order TikTok lists a profile's videos in: newest first, most viewed first, or oldest first. Reposts always come newest first.", "default": "latest" }, "resultsPerPage": { "title": "Posts per hashtag or profile", "minimum": 1, "type": "integer", "description": "The maximum number of posts to scrape from each hashtag and from each profile, counting all of the profile's sections together. Without a logged-in session TikTok serves roughly 60–90 posts per hashtag and about 25 per profile section." }, "excludePinnedPosts": { "title": "Exclude pinned posts", "type": "boolean", "description": "Skip posts the author pinned.", "default": false }, "shouldDownloadCovers": { "title": "Download covers", "type": "boolean", "description": "Store video covers in the key-value store and link them from videoMeta.coverUrl.", "default": false }, "shouldDownloadSlideshowImages": { "title": "Download slideshow images", "type": "boolean", "description": "Store slideshow images and link them from slideshowImageLinks[].downloadLink.", "default": false }, "shouldDownloadAvatars": { "title": "Download avatars", "type": "boolean", "description": "Store author avatars and link them from authorMeta.avatar.", "default": false }, "shouldDownloadMusicCovers": { "title": "Download music covers", "type": "boolean", "description": "Store sound covers and link them from musicMeta.coverMediumUrl.", "default": false }, "downloadSubtitlesOptions": { "title": "Subtitles", "enum": [ "NEVER_DOWNLOAD_SUBTITLES", "DOWNLOAD_SUBTITLES" ], "type": "string", "description": "Store subtitle files and link them from videoMeta.subtitleLinks[].downloadLink.", "default": "NEVER_DOWNLOAD_SUBTITLES" }, "proxyCountryCode": { "title": "Proxy country", "type": "string", "description": "Two-letter country code (US, DE, ...) to route the browser through Apify residential proxy in that country. \"None\" uses Apify datacenter proxy.", "default": "None" } } }, "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 }, "PROXY_UNBLOCKER_UNITS": { "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 }, "PROXY_UNBLOCKER_UNITS": { "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 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: