InsightSocial API
Unified schema

Comment

The unified comment object. Every field, its type, and which platforms fill it.

Any endpoint that returns comments or replies returns them in this shape, whichever platform they came from. One parser reads comments from every platform that has them.

Fields

FieldTypeNullableDescription
idstringNoThe platform's ID for the comment, always as a string.
urlstringYesLink to the comment on the platform.
parent_idstringYesID of the comment this one replies to. null on top-level comments.
post_idstringYesID of the post the comment belongs to.
textstringYesThe comment text. Placeholders such as [deleted] or [removed] become null, so you never see them as text.
author.usernamestringYesThe commenter's handle. null when the comment was removed.
author.display_namestringYesThe commenter's display name.
author.avatar_urlstringYesThe commenter's profile picture.
author.verifiedbooleanYesWhether the commenter is verified.
engagement.likesintegerYesLikes or upvotes.
engagement.repliesintegerYesNumber of replies. 0 when the platform reports the count and there are none; null only when the platform gives no reply count.
flags.pinnedbooleanYesPinned by the post's author. null when the platform does not say.
flags.deletedbooleanNoThe comment was deleted or removed. Always present, including when false.
published_atstring or integerYesWhen the comment was posted, as an ISO 8601 UTC string. If the platform sent a Unix timestamp, it is converted and the original is kept in ext.published_at_epoch.
repliesobject[]YesNested replies, each a full comment object with its own replies. Filled on threaded platforms such as Reddit; absent where comments are flat and linked only by parent_id.

Extension fields (ext)

Platform-specific extras. Each one appears only where the platform provides it, so treat every ext field as optional.

FieldTypeNullableDescription
ext.replies_tokenstringYesYouTube token for loading replies. Pass it to /v1/youtube/video/comment/replies?continuationToken=.
ext.replies_cursorstringYesReddit cursor for a reply branch that was cut short. Pass it as cursor to /v1/reddit/post/comments to fetch the replies that were left out.
ext.depthintegerYesReddit nesting level: 0 for a top-level comment, 1 for a direct reply, and so on. Present when a flat thread was rebuilt into replies[], so you can check the nesting yourself.
ext.published_at_epochintegerYesThe original Unix timestamp, present only when one was converted into published_at.
ext.feedback_idstringYesFacebook comment ID used by /v1/facebook/post/comment/replies.
ext.expansion_tokenstringYesFacebook token used by /v1/facebook/post/comment/replies.
ext.author_idstringYesThe commenter's numeric platform ID, where available.
ext.ip_locationstringYesLocation the platform displays for the commenter, where shown.
ext.urnstringYesLinkedIn comment URN.
ext.reaction_countsstring[]YesCounts broken down by reaction type.
ext.is_editedbooleanYestrue when the comment was edited.
ext.previous_replies_tokenstringYesToken for loading earlier replies.
ext.author_headlinestringYesLinkedIn headline of the commenter.
ext.updated_atstringYesWhen the comment was last updated.
ext.author_channel_idstringYesYouTube channel ID of the commenter.
ext.author_urlstringYesLink to the commenter's profile.
ext.viewer_ratingstringYesYouTube viewer rating value.
ext.text_originalstringYesThe comment text in its original, unformatted form.
ext.preview_repliesstring[]YesA few replies shown with the comment.
ext.lookupstringYesDetails of how a single comment was located, on single-comment endpoints.
ext.post_titlestringYesTitle of the parent post.
ext.post_urlstringYesLink to the parent post.
ext.subredditstringYesSubreddit of the parent post.
ext.subreddit_subscribersintegerYesSubscriber count of that subreddit.
ext.post_scoreintegerYesScore of the parent post.
ext.post_comment_countintegerYesComment count of the parent post.
ext.post_authorstringYesAuthor of the parent post.
ext.post_published_atstringYesWhen the parent post was published.
ext.post_flairstringYesFlair on the parent post.
ext.is_submitterbooleanYestrue when the commenter also wrote the post.
ext.edited_atstringYesWhen the comment was edited.
ext.controversialityintegerYesReddit controversiality flag.
ext.content_languagestringYesThe comment's ISO 639-1 language as the platform reports it. X's codes for "no language" (zxx, und) become null.
ext.author_followersintegerYesThe commenter's follower count as included in the row. A snapshot, not live. Present on every /v1/twitter/tweet/replies row.
ext.author_followingintegerYesThe commenter's following count as included in the row. Also a snapshot.
ext.author_posts_countintegerYesThe commenter's post count as included in the row. Also a snapshot.
ext.quote_countintegerYesNumber of quote posts of this comment, where reported. On X a reply is itself a post.
ext.viewsintegerYesViews of the comment, where reported. Public on X replies from about 2022 onward.
ext.savesintegerYesBookmarks of the comment, where reported (X).

Which platforms fill which fields

Eight of the 9 platforms return this shape. id and flags.deleted are never null. yes means the platform can fill the field (it may still be null on a given row); a blank means it never does.

Platformparent_idauthor.verifiedflags.pinnedurlpost_idauthor.avatar_urlauthor.display_nameengagement.repliesauthor.usernameengagement.likes
Facebookyesyesyesyesyes
Instagramyesyesyesyesyesyesyesyesyesyes
LinkedInyesyesyes
Reddityesyesyesyesyesyesyesyesyes
Threadsyesyesyesyesyesyesyes
TikTokyesyesyesyesyesyesyesyesyesyes
Twitter/Xyesyesyesyesyesyesyesyes
YouTubeyesyesyesyesyes

On Reddit, replies are nested in replies[] rather than counted. On TikTok, parent_id is null on top-level comments because only replies have a parent.

Returned by

Endpoints that return a comment or a list of comments use this shape on:

Facebook · Instagram · LinkedIn · Reddit · Threads · TikTok · Twitter/X · YouTube

Comment lists also carry labels by default; see Labels. To see which native platform field feeds each unified field, read Field equivalence.

On this page