Get TikTok, Instagram & YouTube Post Data API

Fetch a single post by id: views, likes, comments, engagement rate, outlier scores for seven time windows, thumbnail and the owning profile. When a transcript or visual analysis already exists it is included at no extra cost. Request new ones via request_transcript. Use after search_outliers to deep-dive a result.

Fetch everything known about a single TikTok, Instagram or YouTube post by its internal id: full engagement stats, outlier scores across seven time windows, the owning profile, and, when they already exist, the cached transcript and visual scene analysis, all in one call. It is the deep-dive step after a search: you find a post as an outlier, then pull its complete record to analyze or brief from. Each call costs 1 credit (1 credit = $0.01).

1 credit ($0.01) per callRead-only

How to call it

GET /api/v1/posts/{postId}. Authenticate with your API key. Same call in three languages:

cURL

curl -X GET "https://viraloutliers.com/api/v1/posts/EXAMPLE_ID" \
  -H "Authorization: Bearer so_live_YOUR_KEY"

Python (requests)

import requests

r = requests.get(
"https://viraloutliers.com/api/v1/posts/EXAMPLE_ID",
    headers={"Authorization": "Bearer so_live_YOUR_KEY"},
)
print(r.json())

JavaScript (fetch)

const res = await fetch("https://viraloutliers.com/api/v1/posts/EXAMPLE_ID", {
  method: "GET",
  headers: { "Authorization": "Bearer so_live_YOUR_KEY" },
});
const data = await res.json();
console.log(data);

Parameters

NameTypeDescription
postId*string (path)Internal post id from search results.
includeTranscriptbooleanAttach the cached transcript when one exists (default true).
includeVisualAnalysisbooleanAttach cached scene/visual analysis when it exists (default true).

What it returns

A single post record: views, likes, comments and engagement rate, the seven outlier scores (one week through all time), the content type, thumbnail, and the owning profile so you can benchmark against its baseline. When a transcript or a visual/scene analysis already exists for the post it is attached at no extra cost: you are not billed again for enrichment that has already been generated.

If no transcript exists yet, get_post simply omits it; queue one with request_transcript and it will appear on subsequent get_post responses. The includeTranscript and includeVisualAnalysis flags (both default true) let you skip attaching those payloads when you only need the numbers.

How it works

Every post in the database has a stable internal id, returned by search_outliers, niche_trends and resolve_post_url. get_post is a direct read against our own store (synchronous, no job to poll), so it is fast and cheap. The outlier scores are pre-computed against the account's rolling average in each of the seven windows, which is why a single fetch can tell you whether a post is a fresh spike or a long-run evergreen hit.

Cached transcripts and visual analyses are the same artifacts the rest of the platform generates; get_post just surfaces whatever is already on file. That makes get_post the cheapest way to check what enrichment a post already has before deciding whether to spend credits generating more.

Common use cases

The canonical flow is deep-dive after discovery: search_outliers to shortlist, then get_post on each finalist to pull stats and any transcript into a script-writing agent. Recreation briefs use the visual analysis: a scene-by-scene breakdown becomes a shot list for a new video. Reporting tools read the seven outlier scores to explain why a post is winning now versus over its lifetime.

Because cached enrichment rides along for free, get_post also doubles as a cache check: call it first, and only spend on request_transcript when the transcript field is absent.

vs. re-scraping the post yourself

Fetching a post directly from a platform gives you a raw payload with none of the context that makes it useful: no per-account baseline, no outlier score, no transcript, and a shape that changes whenever the platform updates. You would still have to compute the analytics and run your own transcription.

get_post returns the finished, normalized record (stats, outlier scores, and any existing transcript/visual analysis) in one authenticated read at a flat credit price. The post is already joined to its profile and its enrichment, so a single call gives an agent the full picture instead of a scrape it has to enrich itself.

Pricing

1 credit ($0.01) per call in prepaid credits (1 credit = $0.01). For example, 100 calls per dollar. Subscriptions include monthly credits; top-up packs start at $15. Failed asynchronous jobs are refunded automatically, and calls stop at a zero balance, never a surprise bill. See the full pricing table.

Agent workflows

  • Deep-dive: search_outliers → get_post per finalist → feed stats + transcript into a script-writing agent.
  • Recreation brief: get_post with visual analysis → scene-by-scene breakdown → shot list for a new video.

Frequently asked questions

Can I get the transcript of a TikTok or Reel through the API?

Yes. If a transcript was already generated it comes back with get_post for a single credit. If not, queue one with request_transcript and poll get_job_status. It is typically ready in a couple of minutes.

What is an outlier score across time windows?

Each post carries seven outlier scores (one week up to all time), each comparing the post to the account's average in that window, so you can tell a fresh spike from a long-term evergreen hit.

Does attaching the transcript or visual analysis cost extra credits?

No. get_post costs one credit and any transcript or visual/scene analysis that already exists for the post is included for free. You only pay when you generate new enrichment with request_transcript; get_post never re-bills for artifacts already on file.