{"uid":"cap_mZbhZ52Zutrn157JG0NW8","slug":"apify-tiktok-profile-scraper-stableapify-dev-57aa8f09","name":"Apify TikTok Profile Scraper (stableapify.dev)","description":"Search Apify Store actors, start actor runs, and fetch results over x402 and MPP.","url":"https://stableapify.dev/api/actors/clockworks/tiktok-profile-scraper/call","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"input":{"type":"object","required":["profiles","profileScrapeSections","profileSorting","resultsPerPage","excludePinnedPosts","shouldDownloadVideos","shouldDownloadCovers","downloadSubtitlesOptions","shouldDownloadSlideshowImages","shouldDownloadAvatars"],"properties":{"profiles":{"type":"array","items":{"type":"string"},"description":"Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list."},"mostDiggs":{"type":"integer","maximum":9007199254740991,"minimum":1,"description":"Scrapes only videos with less hearts than the number you add. Doesn't work with date filters"},"leastDiggs":{"type":"integer","maximum":9007199254740991,"minimum":1,"description":"Scrapes only videos with no less hearts than the number you add. Doesn't work with date filters"},"newestPostDate":{"type":"string","description":"Optional filter. Only videos uploaded before or on this date will be scraped."},"profileSorting":{"enum":["latest","popular","oldest"],"type":"string","default":"latest","description":"Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section"},"resultsPerPage":{"type":"integer","default":100,"maximum":9007199254740991,"minimum":1,"description":"The number of posts that will be scraped from every profile."},"excludePinnedPosts":{"type":"boolean","default":false,"description":"Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page."},"shouldDownloadCovers":{"type":"boolean","default":false,"description":"Tick to download TikTok video cover images (thumbnails). Note that this will increase time and costs needed to extract the data."},"shouldDownloadVideos":{"type":"boolean","default":false,"description":"Tick to download TikTok videos. Note that this will increase time and costs needed to extract the data."},"videoKvStoreIdOrName":{"type":"string","pattern":"^[a-zA-Z0-9-]+$","description":"Name (or ID) of the Key Value Store where the videos and other media like thumbnails will be stored. Omit to store in the default one. Using this option will provide a named Key-Value store can help bypass data retention and store the content forever until the store is manually deleted. The Key-Value store's name can consist of a versatile combination of uppercase letters, lowercase letters, digits, or hyphens, all without any spaces."},"oldestPostDateUnified":{"type":"string","pattern":"^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?Z?)?$|^(\\d+)\\s*(minute|hour|day|week|month|year)s?$","description":"Optional filter. Only videos uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 - yesterday's and today's, and so on."},"profileScrapeSections":{"type":"array","items":{"enum":["videos","reposts"],"type":"string"},"default":["videos"],"description":"If a profile has reposted videos, you can scrape them by selecting 'Reposts'"},"shouldDownloadAvatars":{"type":"boolean","default":false,"description":"Tick to download authors' profile pictures. Note that this will increase time and costs needed to extract the data."},"maxFollowersPerProfile":{"type":"integer","maximum":9007199254740991,"minimum":0,"description":"Optional charged filter. Scrapes only profiles with less followers than the number you add."},"maxFollowingPerProfile":{"type":"integer","maximum":9007199254740991,"minimum":0,"description":"Optional charged filter. Scrapes only profiles with less following profiles than the number you add."},"downloadSubtitlesOptions":{"enum":["NEVER_DOWNLOAD_SUBTITLES","DOWNLOAD_SUBTITLES","DOWNLOAD_AND_TRANSCRIBE_VIDEOS_WITHOUT_SUBTITLES","TRANSCRIBE_ALL_VIDEOS"],"type":"string","default":"NEVER_DOWNLOAD_SUBTITLES","description":"Choose how to handle subtitles and audio transcription for input videos. Subtitles are provided by TikTok for some videos, and transcription means that this Actor will use speech-to-text AI to generate video transcript. Transcripts are charged as an extra event according to your plan."},"shouldDownloadSlideshowImages":{"type":"boolean","default":false,"description":"Tick to download TikTok slideshow images. Note that this will increase costs and time required for scraping."}},"description":"Normalized actor input. See field descriptions for the simplified shape; native Apify input also accepted (passed through).","additionalProperties":{}},"options":{"type":"object","properties":{"build":{"type":"string","maxLength":100,"minLength":1},"memory":{"type":"integer","maximum":32768,"minimum":128},"maxItems":{"type":"integer","maximum":100000,"minimum":1}},"description":"Optional Apify run options.","additionalProperties":false}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_HvgT8JHkTwpewwAsqF7FU","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Scrapes TikTok user profiles and their video posts (with metadata, stats, and optional media downloads) given one or more TikTok usernames or user IDs, paid per-call via x402/USDC.","exampleAgentPrompt":"Scrape the TikTok profile @charlidamelio and get me the latest 50 videos sorted by newest first, excluding any pinned posts — just the metadata, no video downloads needed.","exampleUseCases":[{"title":"Influencer vetting for brand campaign","prompt":"Pull the last 100 posts from TikTok accounts @baddiewinkle and @khaby.lame sorted by most popular, and give me the video titles, like counts, and share counts so I can compare their engagement."},{"title":"Competitor content research","prompt":"Scrape TikTok profile @gymshark and get me their 200 most recent videos sorted by latest — I only want posts with at least 10,000 likes, and skip any pinned posts."},{"title":"Historical content audit","prompt":"Get me the oldest 50 videos from TikTok user @nba sorted oldest first, including video cover thumbnails — I'm doing an archive analysis of how their content style has changed over time."}],"resultDescription":"Returns structured JSON data for each scraped TikTok profile including per-video metadata (title, description, creation date, like/comment/share/play counts, video URL, hashtags, music info) and optionally downloaded media files (video files, cover images, subtitles, avatars). Results are paginated per the resultsPerPage setting.","failureModes":["Invalid or private TikTok username returns empty results or an error","TikTok rate limiting or anti-scraping measures may cause partial results","Date filters only work with 'latest' and 'oldest' sorting modes — using them with 'popular' sorting silently ignores the filter","Heart/digg count filters are incompatible with date filters","Requesting video/media downloads significantly increases run time and cost","Actor run timeout for very large result sets may truncate output","Payment failure via x402 if insufficient USDC balance"],"whenToPreferThis":"Choose this endpoint when you need structured TikTok profile and video data at scale without managing a scraping infrastructure. Ideal for influencer research, competitive analysis, or content audits where you need post-level metrics. Prefer over manual scraping or unofficial TikTok APIs when you need reliable, paginated data across multiple profiles with optional media downloads, and when per-call USDC micropayment billing fits your cost model.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T06:41:00.369Z","isFirstParty":false}