data depends
on whether you called a normalized endpoint or a platform-specific operation.
Success envelope
Two data contracts
Normalized endpoints
Theprofile, posts, post, and TikTok audience resources use stable SideShift
schemas. This is the right surface when one parser needs to work across platforms.
- Profile responses expose
username,display_name, andfollower_counton all seven platforms. Source-dependent fields are omitted when unavailable. - Posts responses expose a
postsarray, aprofile_picturesmap, and an optionalnext_cursor. - Single-post responses expose one normalized post plus
transcriptandtopComments. - Audience responses expose TikTok country distribution in
audienceLocations.
Platform-specific operations
The 43 focused TikTok and Instagram operations preserve the documented platform field names and nesting insidedata. Capitalization is significant: fields such as uniqueId,
UserStoryStatus, strong_id__, and AIGCDescription are not renamed.
Use the platform operations guide or generated endpoint
reference as the contract for each operation. Do not parse a platform-specific payload as
a normalized profile or post.
Normalized post fields
Metrics are cumulative totals as of the request time.uploadedAt is Unix time in
seconds. id is the platform’s own stable post identifier.
The creator field is not equally normalized on every platform:
Join creator records using the identifier you requested or a stable profile identifier,
not
creator alone.
Media URLs
On TikTok, Instagram, and Facebook,videoUrl and thumbnail can be signed URLs that
expire within hours. Download media when you receive it if you need to retain it.
YouTube listings do not include a usable videoUrl. Call the single post endpoint when
you need the temporary media URL for a specific video or Short.
videoUrls lists every rendition the platform serves, keyed high, medium, low and
watermarked. videoUrl is the best of these. On TikTok, high is the HEVC master upload
and can be hundreds of megabytes, while medium is TikTok’s own play address at about
576x1024 and a few megabytes. Pick medium when you only need a preview-sized file, for
example for transcription. The map is populated on TikTok listings and details and on
Instagram and Facebook details. It is null elsewhere, including Instagram and Facebook
listings. A key is null when that rendition does not exist.
Transcripts and comments
Every normalized single-post endpoint accepts these optional booleans:
They do not add a separate SideShift credit charge.
transcript, topComments, and pinnedComments;
they are null when not requested or unavailable. Listing responses omit all three keys.
topComments is a sample, not the full thread, and its order says nothing about pins: a
pinned comment can be missing from the sample, and the first entry is not necessarily
pinned. Read pin state from these fields instead:
A
null never means “not pinned”. On YouTube, pinnedComments includes the pinned
comment even when it has too few likes to appear in topComments.
Checking a YouTube pin
When you only need to know whether a video has a pinned comment, for example to confirm a creator pinned a required comment, callPOST /scrape/youtube/pinned-comment instead of
fetching the whole post. It costs your account’s post rate and accepts a watch URL, a
Shorts URL, a youtu.be link, or a bare 11-character video id.
pin_status first. resolved with an empty pinned_comments means the video has no
pinned comment. unavailable means the check could not run; pinned_comments and
has_pinned_comment are null, and you should retry rather than conclude. isCreator is
YouTube’s own flag that the channel owner wrote the comment, so you do not need to match
the channel name against the comment author.
TikTok has a dedicated
transcript
operation
with platform-specific options and output. Instagram transcripts are available
only through the separate Instagram transcript operation.
That Instagram request is slower and costs one additional credit, so call it
only when you need the reel’s spoken content.Pagination fields
Normalized listing endpoints returnnext_cursor. Pass it back as cursor and stop when
it is absent or empty. Cursors are opaque printable strings and can be large; store and
return them verbatim.
Platform-specific operations use the pagination field documented for that operation,
including min_time, max_cursor, next_max_id, max_id, or a page number. Follow the
operation’s has_more field instead of assuming that a short page is the last page.
Missing values and zero
- A missing property means the source did not provide that field for the resource.
nullmeans the field is part of the contract but no value was available.- Numeric
0is a real returned value. Do not treat it as missing. - Some platform metrics are structurally unavailable in listings even when a single-post lookup can return them.