{
  "actorSpecification": 1,
  "fields": {
    "AIGCDescription": {
      "title": "AIGC Description",
      "type": "string"
    },
    "adLabelVersion": {
      "title": "Ad Label Version",
      "type": "integer"
    },
    "author": {
      "description": "Creator snapshot at scrape time (legacy flat stats included)",
      "title": "Author",
      "type": "object"
    },
    "authorStats": {
      "description": "Grouped follower/following/heart/video counts",
      "properties": {
        "followerCount": {
          "type": "integer"
        },
        "followingCount": {
          "type": "integer"
        },
        "heartCount": {
          "type": "integer"
        },
        "videoCount": {
          "type": "integer"
        }
      },
      "title": "Author Stats",
      "type": "object"
    },
    "caption": {
      "description": "Post caption including hashtags and mentions",
      "title": "Caption",
      "type": "string"
    },
    "channelTags": {
      "items": {
        "type": "string"
      },
      "title": "Channel Tags",
      "type": "array"
    },
    "collectCount": {
      "description": "Legacy flat collect count",
      "title": "Collect Count",
      "type": "integer"
    },
    "commentCount": {
      "description": "Legacy flat comment count",
      "title": "Comment Count",
      "type": "integer"
    },
    "commentId": {
      "title": "Comment ID",
      "type": "string"
    },
    "commentStatus": {
      "description": "Legacy flat flag (0=all, 1=friends, 2=none)",
      "title": "Comment Status",
      "type": "integer"
    },
    "comments": {
      "description": "Comments attached to a post row, each optionally carrying a replies array",
      "items": {
        "type": "object"
      },
      "title": "Comments",
      "type": "array"
    },
    "contents": {
      "title": "Contents",
      "type": "array"
    },
    "createTime": {
      "description": "Unix timestamp (seconds) when the post was created",
      "title": "Create Time (Unix)",
      "type": "integer"
    },
    "createdAt": {
      "description": "ISO 8601 UTC datetime when the post was created",
      "title": "Created At",
      "type": "string"
    },
    "diversificationLabels": {
      "items": {
        "type": "string"
      },
      "title": "Diversification Labels",
      "type": "array"
    },
    "duetEnabled": {
      "description": "Legacy flat flag",
      "title": "Duet Enabled",
      "type": "boolean"
    },
    "effectStickers": {
      "title": "Effect Stickers",
      "type": "array"
    },
    "flags": {
      "description": "Grouped visibility, interaction, ad, and AI flags",
      "title": "Post Flags",
      "type": "object"
    },
    "forFriend": {
      "description": "Legacy flat flag",
      "title": "For Friend",
      "type": "boolean"
    },
    "hashtags": {
      "items": {
        "type": "object"
      },
      "title": "Hashtags",
      "type": "array"
    },
    "httpStatus": {
      "description": "Last HTTP status observed for a failed input",
      "title": "HTTP Status",
      "type": "integer"
    },
    "images": {
      "description": "Ordered carousel images with ordinal, dimensions, and signed urls",
      "items": {
        "type": "object"
      },
      "title": "Slideshow Images",
      "type": "array"
    },
    "input": {
      "description": "The original input that produced a status row",
      "title": "Input",
      "type": "string"
    },
    "isAd": {
      "description": "Legacy flat flag",
      "title": "Is Ad",
      "type": "boolean"
    },
    "isAigc": {
      "description": "Legacy flat flag",
      "title": "Is AIGC",
      "type": "boolean"
    },
    "isECVideo": {
      "description": "Legacy flat flag",
      "title": "Is E-Commerce Video",
      "type": "boolean"
    },
    "isLikedByAuthor": {
      "title": "Liked By Author",
      "type": "boolean"
    },
    "isPinned": {
      "description": "Whether the profile has pinned this post",
      "title": "Is Pinned",
      "type": "boolean"
    },
    "isPinnedByAuthor": {
      "title": "Pinned By Author",
      "type": "boolean"
    },
    "isReply": {
      "title": "Is Reply",
      "type": "boolean"
    },
    "item_control": {
      "title": "Item Control",
      "type": "object"
    },
    "language": {
      "title": "Language",
      "type": "string"
    },
    "likeCount": {
      "description": "Legacy flat like count",
      "title": "Like Count",
      "type": "integer"
    },
    "locationCreated": {
      "description": "Creator-set ISO country code",
      "title": "Location Created",
      "type": "string"
    },
    "mediaUrlAccessible": {
      "description": "Result of the Range GET probe when validateMediaUrls is on",
      "title": "Media URL Accessible",
      "type": "boolean"
    },
    "mediaUrlExpiresAt": {
      "description": "ISO 8601 UTC expiry of the signed media URLs (~48 hours)",
      "title": "Media URL Expires At",
      "type": "string"
    },
    "mentions": {
      "items": {
        "type": "object"
      },
      "title": "Mentions",
      "type": "array"
    },
    "message": {
      "description": "Human-readable reason for a status row",
      "title": "Message",
      "type": "string"
    },
    "music": {
      "title": "Music",
      "type": "object"
    },
    "originalItem": {
      "description": "Legacy flat flag",
      "title": "Original Item",
      "type": "boolean"
    },
    "playCount": {
      "description": "Legacy flat play count",
      "title": "Play Count",
      "type": "integer"
    },
    "poi": {
      "title": "Point of Interest",
      "type": "object"
    },
    "position": {
      "description": "1-based position within the profile feed",
      "title": "Position",
      "type": "integer"
    },
    "postId": {
      "description": "TikTok's unique post/video ID (string to preserve 64-bit precision)",
      "title": "Post ID",
      "type": "string"
    },
    "postType": {
      "description": "video or slideshow",
      "title": "Post Type",
      "type": "string"
    },
    "postUrl": {
      "description": "Canonical TikTok post URL",
      "title": "Post URL",
      "type": "string"
    },
    "privateItem": {
      "description": "Legacy flat flag",
      "title": "Private Item",
      "type": "boolean"
    },
    "profileUsername": {
      "description": "Profile that produced this row in profiles mode",
      "title": "Profile Username",
      "type": "string"
    },
    "recordType": {
      "description": "post, comment, reply, or status",
      "title": "Record Type",
      "type": "string"
    },
    "replyCount": {
      "title": "Reply Count",
      "type": "integer"
    },
    "replyToCommentId": {
      "title": "Reply To Comment ID",
      "type": "string"
    },
    "repostCount": {
      "description": "Legacy flat repost count",
      "title": "Repost Count",
      "type": "integer"
    },
    "scrapedAt": {
      "description": "ISO 8601 UTC timestamp when this row was built",
      "title": "Scraped At",
      "type": "string"
    },
    "shareCount": {
      "description": "Legacy flat share count",
      "title": "Share Count",
      "type": "integer"
    },
    "shareEnabled": {
      "description": "Legacy flat flag",
      "title": "Share Enabled",
      "type": "boolean"
    },
    "source": {
      "description": "Extraction path: embed, detail, ssr, profile, comment_api, or short",
      "title": "Source",
      "type": "string"
    },
    "stats": {
      "description": "Grouped engagement counts",
      "properties": {
        "collectCount": {
          "type": "integer"
        },
        "commentCount": {
          "type": "integer"
        },
        "likeCount": {
          "type": "integer"
        },
        "playCount": {
          "type": "integer"
        },
        "repostCount": {
          "type": "integer"
        },
        "shareCount": {
          "type": "integer"
        }
      },
      "title": "Post Stats",
      "type": "object"
    },
    "status": {
      "description": "Diagnostic status for a failed input: not_found, private, region, or blocked",
      "title": "Status",
      "type": "string"
    },
    "stickersOnItem": {
      "title": "Stickers On Item",
      "type": "array"
    },
    "stitchEnabled": {
      "description": "Legacy flat flag",
      "title": "Stitch Enabled",
      "type": "boolean"
    },
    "text": {
      "title": "Comment Text",
      "type": "string"
    },
    "textExtra": {
      "title": "Text Extra",
      "type": "array"
    },
    "textLanguage": {
      "description": "Detected caption language code (detail path)",
      "title": "Text Language",
      "type": "string"
    },
    "threadId": {
      "title": "Thread ID",
      "type": "string"
    },
    "user": {
      "title": "Commenter",
      "type": "object"
    },
    "video": {
      "title": "Video",
      "type": "object"
    },
    "viewerRegion": {
      "description": "Egress region TikTok inferred for the request; not the post's location",
      "title": "Request Region",
      "type": "string"
    },
    "warnInfo": {
      "title": "Warn Info",
      "type": "array"
    }
  },
  "title": "TikTok Posts, Profiles & Comments",
  "views": {
    "comments": {
      "description": "Comment rows emitted by comments mode. Reply rows carry isReply=true.",
      "display": {
        "component": "table",
        "properties": {
          "commentId": {
            "format": "text",
            "label": "Comment ID"
          },
          "createdAt": {
            "format": "text",
            "label": "Created At"
          },
          "isReply": {
            "format": "boolean",
            "label": "Is Reply"
          },
          "language": {
            "format": "text",
            "label": "Language"
          },
          "likeCount": {
            "format": "number",
            "label": "Likes"
          },
          "postId": {
            "format": "text",
            "label": "Post ID"
          },
          "postUrl": {
            "format": "link",
            "label": "Post URL"
          },
          "recordType": {
            "format": "text",
            "label": "Type"
          },
          "replyCount": {
            "format": "number",
            "label": "Replies"
          },
          "scrapedAt": {
            "format": "text",
            "label": "Scraped At"
          },
          "source": {
            "format": "text",
            "label": "Source"
          },
          "text": {
            "format": "text",
            "label": "Text"
          },
          "user": {
            "format": "object",
            "label": "User"
          }
        }
      },
      "title": "Comments & Replies",
      "transformation": {
        "fields": [
          "recordType",
          "postId",
          "postUrl",
          "commentId",
          "text",
          "user",
          "likeCount",
          "replyCount",
          "isReply",
          "createdAt",
          "language",
          "source",
          "scrapedAt"
        ]
      }
    },
    "overview": {
      "description": "One row per post with engagement metrics, author snapshot, and the extraction source.",
      "display": {
        "component": "table",
        "properties": {
          "author": {
            "format": "object",
            "label": "Author"
          },
          "caption": {
            "format": "text",
            "label": "Caption"
          },
          "commentCount": {
            "format": "number",
            "label": "Comments"
          },
          "createdAt": {
            "format": "text",
            "label": "Created At"
          },
          "likeCount": {
            "format": "number",
            "label": "Likes"
          },
          "playCount": {
            "format": "number",
            "label": "Plays"
          },
          "postId": {
            "format": "text",
            "label": "Post ID"
          },
          "postType": {
            "format": "text",
            "label": "Type"
          },
          "postUrl": {
            "format": "link",
            "label": "Post URL"
          },
          "recordType": {
            "format": "text",
            "label": "Record"
          },
          "scrapedAt": {
            "format": "text",
            "label": "Scraped At"
          },
          "shareCount": {
            "format": "number",
            "label": "Shares"
          },
          "source": {
            "format": "text",
            "label": "Source"
          }
        }
      },
      "title": "Posts Overview",
      "transformation": {
        "fields": [
          "postId",
          "postUrl",
          "postType",
          "caption",
          "createdAt",
          "playCount",
          "likeCount",
          "commentCount",
          "shareCount",
          "author",
          "recordType",
          "source",
          "scrapedAt"
        ]
      }
    },
    "status": {
      "description": "Explicit not_found/private/region/blocked status rows. These do not count toward Max rows.",
      "display": {
        "component": "table",
        "properties": {
          "httpStatus": {
            "format": "number",
            "label": "HTTP"
          },
          "input": {
            "format": "text",
            "label": "Input"
          },
          "message": {
            "format": "text",
            "label": "Message"
          },
          "postId": {
            "format": "text",
            "label": "Post ID"
          },
          "recordType": {
            "format": "text",
            "label": "Record"
          },
          "scrapedAt": {
            "format": "text",
            "label": "Scraped At"
          },
          "source": {
            "format": "text",
            "label": "Source"
          },
          "status": {
            "format": "text",
            "label": "Status"
          }
        }
      },
      "title": "Unavailable Inputs",
      "transformation": {
        "fields": [
          "recordType",
          "status",
          "input",
          "postId",
          "message",
          "httpStatus",
          "source",
          "scrapedAt"
        ]
      }
    }
  }
}
