Instagram Carousel Analysis — Instagram Post Text Extractor avatar

Instagram Carousel Analysis — Instagram Post Text Extractor

Pricing

from $200.00 / 1,000 carousels

Go to Apify Store
Instagram Carousel Analysis — Instagram Post Text Extractor

Instagram Carousel Analysis — Instagram Post Text Extractor

Instagram carousel analysis from a post link or uploaded slides. Extract carousel text, hook and structure formulas, visual descriptions and marketing notes. Compare engagement with the author's other carousels. Instagram post text extractor with ordered slide results.

Pricing

from $200.00 / 1,000 carousels

Rating

0.0

(0)

Developer

Andrey Afanasenko

Andrey Afanasenko

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a day ago

Last modified

Categories

Share

Apify Actor

Extract Instagram carousel text and turn its hook, structure and visuals into a reusable content brief. For marketers, creators and researchers: ordered slide results, marketing notes and an illustrated report.

🆓 Start on Apify's Free plan: Try one complete carousel per run using your available Apify credit. You get the full analysis and exports. Carousel events still carry the prices listed below.

🎯 What it does

Analyze one whole carousel, with 2–20 slides, from a public post or your own uploaded images.

ModeInputWhat it returns
Mode 1: Analyze Instagram carousel linksPublic Instagram post linksSlide analysis plus an engagement comparison when enough public metrics exist
Mode 2: Analyze uploaded slidesImages of one carousel, in orderThe same content analysis, including drafts; no engagement comparison

Text stays in its original language. Notes use the carousel's main language. Video previews exclude speech and movement.

⚠️ Pick your mode first. Both mode sections stay visible. Each mode reads its own fields. If you select Mode 1 but upload files under Mode 2, the empty link list runs the bundled sample instead. Fill the section matching your choice; empty selected input starts a normally charged sample.

📦 Output sample

One row represents one carousel, with its slides kept in order:

  • Source and slides: carouselUrl, authorUsername, postedAt, language, slideCount, slides, slidesText.
  • Hook and structure: hookQuote, hookType, hookFormula, hookSlideNumbers, structureFormula, structureRoles, structureSlideNumbers.
  • Marketing review: ctaQuote, ctaType, ctaSlideNumbers, marketingNotes, strengths, recommendations, and readable text columns.
  • Performance and delivery: performance, likes, comments, medianEngagement, engagementVsAuthorMedian, analysisStatus, error, analyzedAt.

This complete row comes from an actual run of the bundled two-slide sample, with normal Carousel pricing:

{
"inputId": "sample-en-2", "carouselUrl": null, "authorUsername": null, "postedAt": null,
"slideCount": 2, "previewOnlyVideoCount": 0, "language": "en",
"slides": [
{
"number": 1, "visualDescription": "A minimal slide with light background, a blue top border bar, an orange circle in the bottom right corner, and text presenting a productivity question.", "role": "hook",
"marketingNotes": [{"note":"Uses a clear benefit-driven question combined with a negative constraint to attract an overworked audience.","slideNumbers":[1],"kind":"model_inference"}],
"textBlocks": [{"readable":true,"text":"How to win 3 hours back\n\nwithout burning out?\n\nA practical carousel guide","location":"top center"},{"readable":true,"text":"1/2","location":"bottom left"}],
"text": "How to win 3 hours back\n\nwithout burning out?\n\nA practical carousel guide\n1/2", "unreadableFragments": [], "mediaType": "image", "previewUrl": "https://api.apify.com/v2/key-value-stores/mTtzbCfgdxbLooCno/records/slide-sample-en-2-1.jpg?signature=15YXhx4hjsjIhRWEJjNFH"
},
{
"number": 2, "visualDescription": "A slide with off-white background, blue top border, orange dot in the bottom right, and three actionable closing directives.", "role": "cta",
"marketingNotes": [{"note":"Provides explicit multi-step instructions telling the reader exactly how to engage.","slideNumbers":[2],"kind":"model_inference"}],
"textBlocks": [{"readable":true,"text":"Save this checklist.\n\nTry one step this week.\n\nShare your result in the comments.","location":"top center"},{"readable":true,"text":"2/2","location":"bottom left"}],
"text": "Save this checklist.\n\nTry one step this week.\n\nShare your result in the comments.\n2/2", "unreadableFragments": [], "mediaType": "image", "previewUrl": "https://api.apify.com/v2/key-value-stores/mTtzbCfgdxbLooCno/records/slide-sample-en-2-2.jpg?signature=1kIinKCjarn4eUfTdwVdd"
}
],
"slidesText": "Slide 1\nHow to win 3 hours back\n\nwithout burning out?\n\nA practical carousel guide\n1/2\n\nSlide 2\nSave this checklist.\n\nTry one step this week.\n\nShare your result in the comments.\n2/2", "structureRoles": "1: hook → 2: cta",
"hookQuote": "How to win 3 hours back\n\nwithout burning out?", "hookType": "question", "hookFormula": "How to [achieve desirable outcome] without [pain point]?", "hookSlideNumbers": [1],
"structureFormula": "Pose a time-saving question with a constraint on slide 1, followed by a direct call to action and engagement steps on slide 2.", "structureSlideNumbers": [1,2],
"ctaQuote": "Save this checklist.", "ctaType": "save", "ctaSlideNumbers": [2],
"marketingNotes": [{"note":"Extremely short two-slide structure that gets straight to the point without filler content.","slideNumbers":[1,2],"kind":"model_inference"}],
"strengths": [{"note":"Clean, uncluttered layout with consistent branding elements like the top blue bar and orange circle.","slideNumbers":[1,2],"kind":"model_inference"}],
"recommendations": [{"note":"Expand the carousel by adding intermediate slides with actual actionable tips instead of jumping straight from the hook to the CTA.","slideNumbers":[1,2],"kind":"model_inference"}],
"marketingNotesText": "Slides 1, 2: Extremely short two-slide structure that gets straight to the point without filler content.", "recommendationsText": "Slides 1, 2: Expand the carousel by adding intermediate slides with actual actionable tips instead of jumping straight from the hook to the CTA.",
"performance": {"status":"not_assessed","reason":"uploaded_slides","observedAt":"2026-10-07T12:34:57.749Z","likes":null,"comments":null,"cohort":[],"cohortSize":0,"medianEngagement":null,"engagementVsAuthorMedian":null,"ageWindowDays":null,"scan":{"pages":0,"posts":0,"complete":false}},
"likes": null, "comments": null, "medianEngagement": null, "engagementVsAuthorMedian": null,
"analysisStatus": "analyzed", "error": null, "analyzedAt": "2026-10-07T12:34:57.891Z"
}

Missing values are null; missing lists are []. Interpretations carry kind: "model_inference"; citations name the source slides.

ViewWhat each row isBest for
Carousel analysesThe same carousel rows, showing selected summary columnsComparing hooks, text, recommendations and available engagement

Export the full dataset as JSON for nested slides and comparison posts. Use CSV/Excel text columns for spreadsheet reviews.

⚡ Quick start

  1. Pick your mode first in Choose operation mode. Both sections remain visible; fill only the matching section.
  2. For your own post, select Mode 1, paste its public carousel link and set Maximum carousels to 1.
  3. Click Start. Open Carousel Report for images and notes, or Storage → Dataset for structured results.

To try the bundled sample instead, use this tested minimal input on either a Free or paid account:

{}

Empty input produces one two-slide sample analysis, consumes your allowance, and triggers one normally priced Carousel event.

⭐ Choose your mode

Set mode to analyzeUrls and fill postUrls with public /p/ links. Repeated links are merged before processing. maxCarousels defaults to 10; paid accounts can request up to 100. Free accounts analyze one complete carousel per run. No Instagram login or cookies are requested.

🎯 Mode 2: Analyze uploaded slides

Set mode to analyzeSlides. Upload 2–20 JPG, PNG or WebP images into slideImages. The first file becomes slide 1; keep the complete presentation order. API users provide downloadable HTTPS image URLs. One run represents one uploaded carousel. Author details and engagement metrics remain unknown.

🧭 When to use it

  • Content marketers: Turn a reference carousel into a brief with its opening promise, sequence and call to action.
  • Creators: Review a draft for gaps between its hook, supporting slides and final request.
  • Social media agencies: Build a spreadsheet of client and competitor hooks, structures and marketing notes.
  • Brand researchers: Search the text inside slide images, beyond the post caption.
  • Campaign analysts: Compare a public carousel with other carousels from the same author.
  • Multilingual teams: Keep original English, Russian or Spanish text alongside notes in the main language.

Use the recommendations as review prompts. They are interpretations, not evidence that a design choice caused higher engagement.

🛠 Input

SectionPurpose
Choose operation modeSelect which input the actor reads
🎯 Mode 1: Analyze Instagram carousel linksEnter post links and limit the number of carousels
🎯 Mode 2: Analyze uploaded slidesUpload one ordered set of slide images
  • mode — Set this first: analyzeUrls or analyzeSlides. Other mode fields do not provide input for your selection.
  • postUrls — Public carousel links. Different links to the same post count once within the run.
  • maxCarousels — Mode 1 limit: default 10, range 1–100; Free accounts are capped at one.
  • slideImages — Mode 2 images: exactly one carousel, with 2–20 files in presentation order.

In the run settings, use Maximum charge as your spending ceiling. This setting is separate from the JSON input. A limit stops new analyses; it never delivers only part of a carousel to fit the budget.

The actor uses Pay Per Event with one product event: Carousel (CAROUSEL_ANALYZED). It is charged after a complete, validated analysis is saved. The price includes up to 20 slides and available engagement comparison.

Apify tierPrice per Carousel
Free / Bronze$0.25
Silver$0.22
Gold / Platinum / Diamond$0.20

Pricing math: totals below cover successfully delivered Carousel events.

Carousels analyzedFree / Bronze rateSilver rateGold and higher rate
1$0.25$0.22$0.20
5$1.25$1.10$1.00
10$2.50$2.20$2.00
30$7.50$6.60$6.00
100$25.00$22.00$20.00

Free accounts can analyze only one per run. Larger totals require a paid account; Bronze uses the first rate column. Failed, unavailable or incomplete analyses trigger no Carousel event. Retries add no separate event or per-slide fee. Check Apify's run estimate for any standard platform start charge. Starting a new run can charge the same post again.

🆓 Free vs paid plan

FeatureApify Free planPaid plan
Carousels per runOne complete carouselUp to 100 links, or one uploaded carousel
Slides per carousel2–202–20
Content analysis and reportsFull resultFull result
Public engagement comparisonIncluded when eligibleIncluded when eligible
Successful runs per UTC monthUp to 15, subject to monthly analysis allowanceFree-plan monthly cap does not apply
PaymentCarousel price uses available Apify creditCarousel price uses account balance

The monthly analysis allowance can run out before the 15-run cap, especially with longer, denser carousels. Check User Message if an allowance stops your run. Upgrade for larger batches and continued use beyond Free limits.

🧪 Recipes

Review one public carousel. Replace the example link with your own public post when needed.

{
"mode": "analyzeUrls",
"postUrls": ["https://www.instagram.com/p/Dd9JNwOlyjj/"],
"maxCarousels": 1
}

This limits the request to one carousel and works within the Free per-run allowance, if the post remains available.

Analyze uploaded draft slides. These URLs reproduce our two-slide sample. For a draft, upload your files in the form.

{
"mode": "analyzeSlides",
"slideImages": [
"https://api.apify.com/v2/key-value-stores/mTtzbCfgdxbLooCno/records/slide-sample-en-2-1.jpg?signature=15YXhx4hjsjIhRWEJjNFH",
"https://api.apify.com/v2/key-value-stores/mTtzbCfgdxbLooCno/records/slide-sample-en-2-2.jpg?signature=1kIinKCjarn4eUfTdwVdd"
]
}

API users replace the URLs with their own downloadable images. Array order defines slide order; no author metrics are inferred.

🔁 Resume / checkpoint

If a run is interrupted, use Apify's Resurrect action on that same run when available. The actor preserves saved results and avoids another Carousel charge for results already delivered in that run.

Start creates a new run. It does not reuse the previous run's billing or make repeat analysis free. For a failed carousel, read error, fix its input and retry. Existing results remain available in the original dataset.

📡 Live status & storage records

Open Carousel Report during processing to follow progress. It refreshes as complete results arrive. After completion, it shows slides, source text, visual descriptions and slide-linked marketing notes in presentation order.

Storage keyTypeWhat it holds
status.htmlHTMLProgress, ordered slide previews, full analysis and a CSV download link
RUN_SUMMARYJSONResult counts, charges, stop reason, report and export links
USER_MESSAGEJSONA plain-language explanation and the suggested next step
FREE_LIMITS_APPLIEDJSONFree allowances applied to this run

The running container also provides / for the report, /api/status for progress JSON and /health for availability. After the container stops, use the stored report. Save exports you need beyond your account's storage retention period.

🤖 Programmatic / API use

Use the Apify REST API with your Apify token in the authorization header:

curl --fail-with-body -X POST \
'https://api.apify.com/v2/acts/afanasenko~instagram-carousel-analyzer/runs?maxTotalChargeUsd=0.50' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"mode":"analyzeUrls","postUrls":["https://www.instagram.com/p/Dd9JNwOlyjj/"],"maxCarousels":1}'

The response supplies data.id. Poll GET /v2/actor-runs/{runId} until the run finishes. Read data.defaultDatasetId, then fetch GET /v2/datasets/{datasetId}/items?format=json&clean=true with the same authorization header. Dataset exports also support format=csv and format=xlsx.

AI assistants: Connect your client to Apify's MCP server at https://mcp.apify.com. Ask it to find and run afanasenko/instagram-carousel-analyzer, inspect its input, and retrieve the resulting dataset. Example: “Analyze this Instagram carousel; extract every slide's text and explain the hook formula with slide references.”

For recurring workflows, save an Apify task or configure integrations and webhooks. For a marketing sheet, export slidesText, hookFormula, structureFormula and recommendationsText after the run succeeds.

💡 Tips & Best Practices

Getting maximum results

  • Start with one reference carousel. Check its report before building a larger library.
  • Include every slide in a draft, especially the opening and final call to action.
  • Read the slide references beside recommendations to judge whether each suggestion fits your material.

Cost optimization

  • Set maxCarousels to the number of analyses you actually need; the default for links is ten.
  • Set Maximum charge before a batch. Leave enough room for at least one full Carousel event.
  • Save your exports and reuse them for later research. A new analysis run can charge again.

Performance

  • Use direct, downloadable image URLs for API uploads; avoid links to preview pages.
  • Group same-author links together. The actor reuses the author's metric scan within a run.
  • Use the live report to follow longer batches. Dense text and longer sequences can take more time.

Data quality

  • Upload full-resolution slides in the correct order. Avoid crops that remove small labels or footnotes.
  • Check unreadableFragments and compare important quotations with the source image.
  • Treat marketing notes as suggestions. Check public engagement separately before calling a reference a success.

❓ FAQ

How do I extract text from an Instagram carousel? Use Mode 1 with a public carousel link, or Mode 2 with ordered images. slides[].text preserves visible source text. Use slidesText when you want the whole sequence in one spreadsheet cell.

How do I find a carousel's hook formula and structure? Read hookQuote, hookFormula and structureFormula. The hook formula uses variables such as [desired outcome]. Slide numbers connect each quote and recommendation to the source. Missing textual hooks and CTAs remain null.

Can I analyze an Instagram carousel before publishing it? Yes. Upload all slide images in Mode 2. You get the full content review without invented engagement or author details.

Is there a free Instagram carousel analyzer trial? You can try this actor on Apify's Free plan using available credit. Analysis events remain priced at $0.25 each. The actor allows one carousel per run and up to 15 successful runs per UTC month, within its monthly analysis allowance.

How does it compare carousel performance? It compares likes plus comments with the median of up to 30 other carousels by the same author. Posts must be half to twice the target's age, inside 48 hours–90 days. At least five need visible metrics. The scan covers up to 10 pages / 120 posts from the last 90 days; performance includes coverage, dates and sample members. Hidden counts, too few eligible posts or a zero median leave the ratio null. Uploads have no comparison. The comparison measures observed engagement. Metrics are kept out of content analysis and cannot explain what caused success.

Does it transcribe video slides or measure reach and saves? No. video_preview means only the static preview was read. Speech, motion, reach, saves and swipe-through are unavailable. For reel speech and on-screen text, use the related Instagram Transcript actor below.

How accurate is carousel text extraction? Clear text gives better results than small, blurred or decorative lettering. Unreadable regions are marked rather than reconstructed. Review critical quotations against the image. There is no promised accuracy percentage for arbitrary Instagram content.

Why did I receive the sample instead of my own carousel? The selected mode had empty input. For analyzeUrls, fill postUrls; for analyzeSlides, fill slideImages. Files entered under the other mode are ignored. Empty selected input runs the bundled sample and consumes a normal analysis event.

Why are some values null, and are duplicate posts charged twice? null means the value is absent or cannot be assessed. Missing lists are []; failed rows have blank text columns. Repeated links to the same post are merged within one run. Starting a fresh run can charge for that post again.

What happens if an image or analysis fails? The dataset records the reason without a Carousel event. The actor does not sell a partial or invalid analysis. Read User Message for the next step; a private or deleted post may require your own permitted slide uploads.

How fast is it? Length, image access, text density and the author's metric scan affect run time. Follow the live report for progress.

You start with…You want…Use this actor
Carousel links or slide imagesSlide text, hook and structure formulas, marketing notesThis actor
Reels or video linksSpoken transcript and on-screen textInstagram Transcript — Instagram Reel & Video Transcript
Public account usernamesStories, highlights, media links and mentionsInstagram Stories & Highlights Scraper
Profile names or keywordsPublic profile details and account discoveryInstagram Profile Scraper

🛟 Support & feedback

  • Open the Issues tab in Apify Console for problems or feature requests.
  • Include the run ID, selected mode, and the result or error you expected us to inspect.
  • Leave feedback on the Apify Store page to help other users choose.

Public availability does not grant unrestricted rights to copy or reuse a carousel. Use material you have permission to process. The actor accepts public post links or uploaded images; it does not request Instagram credentials or access private accounts. Follow Instagram's Terms of Use, content rights and privacy rules relevant to your use.