Instagram Reels & TikTok Hooks and Scripts avatar

Instagram Reels & TikTok Hooks and Scripts

Pricing

from $12.00 / 1,000 video analyseds

Go to Apify Store
Instagram Reels & TikTok Hooks and Scripts

Instagram Reels & TikTok Hooks and Scripts

Find which Reels and TikTok hooks beat each account's median, then get original scripts for your brand. Works on Instagram Reel or TikTok Scraper datasets.

Pricing

from $12.00 / 1,000 video analyseds

Rating

0.0

(0)

Developer

Seasons AI

Seasons AI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Instagram Reels & TikTok: Competitor Hooks to Winning Scripts

You already scrape competitor reels or TikToks. This Actor tells you which hooks and formats actually beat each account's normal reach, then writes original short-video scripts for your brand that use those patterns.

What you can do

  • See what is said and shown in the first 3 seconds of every competitor video: hook type, spoken hook, on-screen text, opening visual.
  • Learn which hooks, formats, lengths, CTAs and tones over-perform, scored against each account's own median, so big and small accounts compare fairly.
  • Get original scripts for your brand (second-by-second beats, on-screen text, voiceover, CTA, caption, hashtags) built on the winning mechanisms, never on competitors' words.
  • Mix Instagram Reels and TikTok in one run, or chain it after your scraper in a schedule, n8n, Make or the API.

How it works

Give it the dataset from an Instagram Reel Scraper run or a TikTok Scraper / TikTok Profile Scraper run on brand or creator accounts. The source is detected per item, so a dataset that mixes both works too. For each video it:

  1. downloads the video for a moment (it is deleted right after; nothing is re-hosted),
  2. transcribes the first 30–60 seconds, with timing, so it knows what is said in the first 3 seconds,
  3. looks at three frames (the opening frame, the end of the 3-second hook, a frame near the end),
  4. labels the hook type, format, length, call to action, topic, tone and pacing,
  5. compares every video with its own account's median views (likes when views are missing), so big and small accounts compare fairly. The same handle on Instagram and on TikTok counts as two accounts, each with its own median.

Then it groups the results by hook type, format, length, CTA, audio and tone, shows what over-performs, and writes N scripts for your brand brief — second-by-second beats, on-screen text, voiceover, CTA, caption and hashtags.

Scripts take the mechanism of a winning hook, never the words. The script writer only gets labels, statistics and generic hook descriptions, not competitors' captions or transcripts, and each script is checked against all competitor captions and transcripts: a script that repeats any 6-word phrase is dropped and not charged.

How to use

  1. Run the Instagram Reel Scraper or the TikTok Scraper (or TikTok Profile Scraper) on the brand or creator accounts you want to learn from (public business content). 20–50 videos per account give useful medians.
  2. Open this Actor, pick that run's dataset in Scraper dataset, paste your brand brief, and choose how many scripts you want.
  3. Start. The Actor reads the dataset, checks the price against your run's maximum cost, and only then begins.

Instagram: run it soon after the scrape: Instagram video links expire after some hours or days. Reels whose links have expired are skipped and not charged. If you enabled the scraper's Include downloaded video add-on, those longer-lived links are used first.

TikTok: turn on Download videos (shouldDownloadVideos) in the TikTok scraper. Without it TikTok items contain no video file; such items are ignored and not charged (if none has a video, the run stops before it starts, free). The downloaded videos stay in the scraper run's key-value store for your plan's storage retention. If your account keeps storages private (Restricted general resource access), also pick that run's key-value store in TikTok video store, so this Actor may read the videos; otherwise they are skipped free. Photo slideshows are ignored.

No dataset? Paste items in Items (the scraper's JSON format) or give a link to a JSON export in Items URL. The prefilled input is a 3-reel synthetic demo, so the form runs as-is.

Input

FieldRequiredNotes
datasetIdone of these threeDataset of an Instagram Reel Scraper or TikTok Scraper / TikTok Profile Scraper run (picker in Console; via API pass the run's defaultDatasetId). Read-only access
videoStoreIdTikTok, private storages onlyKey-value store with the TikTok scraper's downloaded videos (via API: the run's defaultKeyValueStoreId). Read-only access
itemsItems as JSON. Instagram: videoUrl or downloadedVideo, caption, videoPlayCount, likesCount, commentsCount, timestamp, ownerUsername, url. TikTok: mediaUrls or videoMeta.downloadAddr, text, playCount, diggCount, commentCount, shareCount, createTime, authorMeta.name, videoMeta.duration, webVideoUrl
itemsUrlLink to a JSON array export
maxReelsnoDefault 30, max 100. The first N videos of the dataset
transcribeSecondsno30–60, default 60
brandBriefwhen scripts > 0Brand, product, audience, tone, goal of the videos, what to avoid (up to 4,000 characters)
scriptsCountno0–20, default 5. 0 = analysis only
scriptLanguagenoDefault English

Example (API):

{
"datasetId": "<defaultDatasetId of your Instagram Reel Scraper or TikTok Scraper run>",
"maxReels": 30,
"transcribeSeconds": 60,
"brandBrief": "Small online shop for easy-care houseplants. Audience: renters 22-35. Tone: warm, practical, no jargon. Goal: followers and visits to the free care guide.",
"scriptsCount": 5,
"scriptLanguage": "English"
}

Output

Dataset — one row per input video. An Instagram reel:

{
"status": "analyzed",
"platform": "instagram",
"url": "https://www.instagram.com/p/De9k1XZBBrB/",
"account": "brand_account",
"postedAt": "2026-10-26T15:13:05.000Z",
"views": 3011129,
"likes": 172160,
"comments": 3108,
"durationSeconds": 14.9,
"length": "8-15s",
"engagementRate": 0.0582,
"performanceIndex": 3.52,
"performance": "over",
"hookType": "relatable-pov",
"hookSpoken": "…",
"hookOnScreenText": "…",
"hookVisual": "Animated mascot and two characters face the camera with bold subtitle text",
"hookPattern": "Character voices a relatable personal wish, with on-screen text repeating it for sound-off viewers",
"format": "animation-mascot",
"ctaType": "none",
"topic": "Moving on and enjoying life",
"tone": "relatable",
"audio": "original",
"transcriptFirstSeconds": "…",
"priceUsd": 0.012
}

A TikTok video (same fields; shortCode is the TikTok video id, shares comes from shareCount):

{
"status": "analyzed",
"platform": "tiktok",
"url": "https://www.tiktok.com/@brand_account/video/7699890686870506765",
"account": "brand_account",
"postedAt": "2026-10-23T15:48:59.000Z",
"views": 1400000,
"likes": 309200,
"comments": 3889,
"shares": 59000,
"durationSeconds": 10.4,
"length": "8-15s",
"engagementRate": 0.2236,
"performanceIndex": 2.03,
"performance": "over",
"hookType": "relatable-pov",
"hookVisual": "Mascot in a costume and wig stands next to a second animated character",
"hookPattern": "Character in costume faces a relatable identity mix-up or unexpected situation, prompting viewer engagement.",
"format": "animation-mascot",
"ctaType": "none",
"topic": "Mistaken identity in costume",
"tone": "funny",
"audio": "original",
"priceUsd": 0.012
}

Skipped videos have "status": "skipped", a reason (for example the video link expired), and "priceUsd": 0.

Key-value store

RecordContent
report.mdThe report: account medians, key takeaways, pattern tables (median index, lift, over-performers), top videos with their hook mechanism, all scripts, all videos
scripts.jsonTakeaways and scripts as JSON (hook, beats with seconds, CTA, caption, hashtags, production notes, the pattern evidence behind each script)
patterns.jsonPattern statistics by hook type, format, length, CTA, audio, tone, person on camera
OUTPUTCounts, amount charged and links to the files above

Hook types: question, bold-claim, surprising-stat, relatable-pov, curiosity-gap, promise-how-to, list-number, callout-audience, story-open, visual-surprise, humor-skit, before-after, hot-take, trend-meme, product-reveal, other. Formats: talking-head, skit-comedy, tutorial-how-to, voiceover-broll, text-on-screen-meme, product-demo, behind-the-scenes, ugc-testimonial, trend-dance-lipsync, music-performance, interview-street, animation-mascot, slideshow-photos, other.

Pricing

Pay per event, the same for Instagram and TikTok. Skipped (expired or missing video) or failed videos and dropped scripts are free.

EventPrice
Video analysed (reel or TikTok)$0.012
Script written$0.01

Examples:

  • 10 videos, analysis only: 10 × $0.012 = $0.12
  • 30 videos + 5 scripts: 30 × $0.012 + 5 × $0.01 = $0.41
  • 100 videos + 20 scripts: $1.40

The Actor computes the maximum price before it starts and stops, free of charge, if your run's maximum cost is lower.

Available on paid Apify plans.

Limits and good to know

  • On the free Apify plan the Actor returns a short preview with an example result and prices instead of running.
  • Up to 100 videos (reels and TikToks together) and 20 scripts per run; the first 30–60 seconds of each video are transcribed.
  • Numbers (medians, indexes, lift) are computed in code from the scraper's counts, not by the AI. With few videos per pattern, results are hints: the report marks the sample size and confidence.
  • Song lyrics are transcribed like speech; the analysis flags videos that run on a song.
  • Labels come from an AI model looking at three frames and the transcript, so they can be wrong on unusual videos. On-screen text is read from the frames and can contain small errors.
  • Only account-level and content-level data is used and output: no comments, commenter names or tagged people.
  • Use it on public brand or creator content you are allowed to analyse, and keep to Instagram's and TikTok's terms. Competitor videos are never stored or re-hosted.