Skip to content

Reference

The unified schema

Five objects cover every platform. A Post from TikTok and a Post from YouTube have the same field names and the same types, so the code that reads one reads the other unchanged.

Two rules that shape everything

Null is not zero. A field is null when the platform does not publish it and zero when the platform publishes a zero. Averaging across a set where those were conflated gives a wrong answer that looks plausible, which is the worst kind.

Nothing is discarded. Normalising is additive. Pass include_raw=true and the original upstream payload comes back beside the normalised one, so a field we have not modelled yet is still reachable.

The envelope

Every successful response has the same outer shape. data is the object, meta is the accounting, and pagination appears only where a list can continue.

response envelope
{
  "success": true,
  "data": { /* the unified object */ },
  "pagination": { "cursor": null, "hasMore": false, "count": 1 },
  "meta": {
    "platform": "youtube",
    "endpoint": "youtube.channel",
    "creditsCharged": 1,
    "cached": false,
    "cacheAgeSeconds": null,
    "durationMs": 412,
    "requestId": "req_01JB8Z..."
  },
  "raw": { /* only when include_raw=true */ }
}

Creator

21 fields

A channel, profile, or page. Follower counts mean subscribers on YouTube and followers everywhere else — the nearest equivalent, always in the same field.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin
idstringThe platform-native id — channel id, user id, numeric id.
handlestring | nullWithout the @. Null where the platform has no handle.
displayNamestring | null
biostring | null
avatarUrlstring | nullHighest resolution the platform exposes.
bannerUrlstring | null
urlstring | nullCanonical public URL.
verifiedboolean | nullNull when the platform does not say either way.
followerCountnumber | nullSubscribers, followers, or the platform equivalent.
followingCountnumber | null
likeCountnumber | nullTotal likes where the platform exposes one. Null means not exposed.
postCountnumber | nullVideos, posts, or reels — whatever the platform counts.
viewCountnumber | nullLifetime views where exposed (YouTube, TikTok).
isPrivateboolean | null
isBusinessboolean | null
categorystring | null
locationstring | nullSelf-declared, not verified.
externalLinksstring[]Empty array, never null.
createdAtstring | nullSome platforms publish only a coarse join date.
fetchedAtstringISO 8601. When we read it, not when it changed.

Post

21 fields

A video, Short, reel, image, carousel, or text post. Engagement fields are null when the platform does not expose them, which is not the same as zero.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin
idstringThe platform-native id — channel id, user id, numeric id.
typeenumvideo · short · image · carousel · text · live · story · reel · unknown
urlstring | null
titlestring | nullNull on platforms without titles.
textstring | nullCaption or description.
authorIdstring | null
authorHandlestring | null
authorNamestring | null
thumbnailUrlstring | null
mediaUrlsstring[]
durationSecondsnumber | nullNull for anything that is not timed media.
viewCountnumber | nullNull means not exposed. Zero means zero.
likeCountnumber | nullNull when the creator has hidden it.
commentCountnumber | null
shareCountnumber | nullNull on platforms with no share metric.
hashtagsstring[]Parsed from the text, without the #.
mentionsstring[]Parsed from the text, without the @.
isSponsoredboolean | nullOnly where the platform discloses it.
publishedAtstring | nullISO 8601 where exact, otherwise the platform’s own relative text.
fetchedAtstringISO 8601.

Transcript

9 fields

Captions as one text block plus timed cues. The text block is what most pipelines want; the cues are there when you need to seek.

FieldTypeNotes
platformenum
postIdstringThe video this transcript belongs to.
urlstring | null
languagestring | nullBCP-47 code of the track that was returned.
isAutoGeneratedboolean | nullTrue for machine captions, which are measurably less accurate.
textstringThe whole transcript, cues joined.
cuesTranscriptCue[]{ start, end, text } — end is null when the platform omits a duration.
durationSecondsnumber | null
fetchedAtstring

Comment

14 fields

A comment or a reply. Replies carry a parentId; top-level comments do not.

FieldTypeNotes
platformenumyoutube · instagram · facebook · twitter · tiktok · linkedin
idstringThe platform-native id — channel id, user id, numeric id.
postIdstring | null
parentIdstring | nullNull for a top-level comment.
textstring
authorIdstring | null
authorHandlestring | null
authorNamestring | null
authorAvatarUrlstring | null
likeCountnumber | null
replyCountnumber | null
isPinnedboolean | null
isAuthorReplyboolean | nullTrue when the post’s author wrote it.
publishedAtstring | null