August 14, 2026 · 7 min read

TikTok Post Scraper Integration Guide and Operating Playbooks

By Crawlerbros Engineering Team

Direct Answer: Quick Integration Summary

The Apify TikTok Post Scraper extracts complete metadata from public TikTok video and slideshow posts using post URLs or numeric post IDs without requiring user authentication or browser cookies. This automated retrieval delivers precise engagement metrics via statsV2, deep creator profile metrics, audio details, hashtags, user mentions, and signed stream links with explicit expiration timestamps. Social data teams deploy this tool to feed structured information directly into influencer campaign evaluations, competitive benchmarking dashboards, and real-time social trend tracking systems.

Field Configuration and Input Customization

To optimize high-volume collection runs, data engineers should map specific input parameters in the JSON configuration to match downstream pipeline requirements.

For basic performance monitoring where detailed creative elements or subtitle files are unnecessary, parameters can be customized to focus solely on engagement counters. The scraper retrieves precise performance values from the statsV2 object, including playCount, likeCount, commentCount, shareCount, collectCount, and repostCount. Because the statsV2 dataset delivers viral counts as string values rather than 32-bit integers, your processing pipeline will not experience numerical clipping or truncation errors when tracking posts with billions of views.

For auditing creator channels or validating marketing campaigns, setting includeAuthorStats to true adds complete channel statistics directly inside the author object. This populates author metrics like followerCount, followingCount, heartCount, and videoCount.

When digital asset preservation is necessary, enabling includeMediaUrls retrieves temporary signed play and download addresses for video files (video.playUrl, video.downloadAddr), audio streams (music.playUrl), and static or dynamic covers (video.cover, video.dynamicCover). Because these signed links expire within approximately 24 hours, ingestion pipelines should download files immediately to persistent storage. The exact expiry window is specified in the mediaUrlExpiresAt ISO 8601 timestamp. Enabling validateMediaUrls probes each video URL with a HEAD request to verify it is accessible, which adds latency per post.

Step-by-Step Extraction Workflow

Follow this structured four-step implementation process to establish a resilient social data pipeline:

  1. Assemble Target Identifiers: Gather standard TikTok post URLs in the /@user/video/ID or /@user/photo/ID format, or collect 15 to 20 digit numeric post IDs. These identifiers can be provided in the postUrls and postIds arrays separately or combined in the same scraper run.

  2. Define JSON Input Parameters: Configure the required scraper options based on your workflow. For example, toggle includeAuthorStats to true if you are auditing influencer profiles, and select includeMediaUrls to true if you need to fetch signed video stream links. Set validateMediaUrls to true only when you must confirm live URL availability during the scrape, keeping in mind this adds latency per post.

  3. Run the Scraper and Capture Metadata: Execute the scraper. Verify that the output includes essential metadata keys such as postId, postType (displaying "video" or "slideshow"), and scrapedAt.

  4. Ingest and Manage Expiring Media: Configure downstream storage systems to immediately download and persist files from the signed play and download URLs. These temporary links expire within roughly 24 hours, with the exact expiration given by mediaUrlExpiresAt. Build error-handling logic to manage private or deleted videos, which are automatically skipped.

Practical use cases

These use cases come from the Actor's published documentation. Each is expanded into an operating pattern so the output has a purpose beyond collection.

Use case 1: Influencer marketing

Outcome: pull full post metrics, author stats, and music details for campaign reporting and ROI measurement.

Question to answer: Once records are grouped fairly, which comparisons actually hold up and which were an artifact of the grouping?

Configure: Start with includeAuthorStats (Include author follower/following/heart/video counts in the author object.), postUrls (List of TikTok post URLs to scrape. Accepts standard /@user/video/ID format.), postIds (TikTok post IDs as strings (15-20 digit numbers). Alternative to postUrls.). Use the narrowest values that represent the real task, keep the first result set small, and record why each selected input matters to the outcome.

Working method: Set the comparison rule before seeing the results, group records against that rule rather than after the fact, and treat any record that resists grouping as information, not noise to discard.

Deliverable: Create a cohort-by-cohort summary with the raw and normalized figures, the outliers, and what each gap would mean for the decision. Include the source identifier and the collected fields behind every decision.

Stop condition: Pause when the comparison axis was chosen after seeing the results, or two cohorts turn out not to be comparable once the raw fields are inspected. Fix the question, comparison rule, or configuration before expanding the run.

Use case 2: Trend research

Outcome: monitor engagement velocity on viral posts to identify emerging trends before they peak.

Question to answer: Which of today's differences are real signal, and which are just noise from how the source renders data?

Configure: Start with postUrls (List of TikTok post URLs to scrape. Accepts standard /@user/video/ID format.), postIds (TikTok post IDs as strings (15-20 digit numbers). Alternative to postUrls.), validateMediaUrls (Probe each video URL with a HEAD request to verify it is accessible. Adds latency per post.). Use the narrowest values that represent the real task, keep the first result set small, and record why each selected input matters to the outcome.

Working method: Store every run under its collection date, key records by a durable identifier rather than position or display text, and only escalate a difference once it has been confirmed against two consecutive runs.

Deliverable: Create a run-over-run diff report that separates confirmed changes from single-run anomalies. Include the source identifier and the collected fields behind every decision.

Stop condition: Pause when a single run produces a spike with no second-run confirmation, or the source itself changed structure between collections. Fix the question, comparison rule, or configuration before expanding the run.

Use case 3: Content competitive analysis

Outcome: benchmark your own posts against competitors by extracting their engagement stats and content metadata.

Question to answer: Applying the acceptance rule as written, which records clearly pass, clearly fail, and genuinely need a human call?

Configure: Start with includeAuthorStats (Include author follower/following/heart/video counts in the author object.), includeSubtitles (Include subtitleInfos, bitrateInfo, and volumeInfo arrays (requires video-detail interception).), includeEffectStickers (Include effectStickers and stickersOnItem arrays from video-detail.). Use the narrowest values that represent the real task, keep the first result set small, and record why each selected input matters to the outcome.

Working method: Write the acceptance rule down before the first record is reviewed, apply it consistently across the batch, and change only one rule or input between batches so any shift in the result has a clear cause.

Deliverable: Create a classified queue where every record is traceable back to the exact rule and field that decided its status. Include the source identifier and the collected fields behind every decision.

Stop condition: Pause when the same record gets a different classification on a second pass, or a required field is missing often enough to change the outcome. Fix the question, comparison rule, or configuration before expanding the run.

Frequently asked questions

Do I need a TikTok account or cookies to run this scraper?

No. The scraper operates without user accounts, login credentials, or stored browser cookies by querying public TikTok embed and item detail endpoints directly.

What is the difference between postUrls and postIds?

postUrls accepts standard TikTok URLs formatted as /@user/video/ID or /@user/photo/ID. postIds accepts 15 to 20 digit numeric ID strings directly. Both options extract identical metadata objects and can be supplied together in a single run.

Why does the scraper deliver engagement metrics from statsV2?

Standard social counters can experience 32-bit integer overflow when tracking viral videos exceeding two billion views or likes. The statsV2 object returns engagement counts as string values to prevent numerical clipping and truncation errors.

How long remain signed media links valid for downloading?

Signed stream and download URLs for video, audio, and cover images are temporary and expire within approximately 24 hours. The exact expiration time is provided in the mediaUrlExpiresAt ISO timestamp field.

Can I extract private or deleted video posts?

No. Private videos and deleted posts return an error from TikTok's API and are skipped by the extractor.

Does the scraper support photo carousel slideshow posts?

Yes. Photo carousel posts are detected automatically, assigned postType: "slideshow", and deliver individual image media objects within the slideshow output array.

Resources

Access official technical documentation, input schema definitions, and run configurations directly on the Actor page:

● Featured actors

Tiktok Post Scraper

Scrape TikTok posts by URL and extract comprehensive video metadata including engagement stats, author information, music details, and hashtags.

Run on Apify ↗