Instagram Story On-Screen Text Extractor (OCR) avatar

Instagram Story On-Screen Text Extractor (OCR)

Pricing

from $0.37 / 1,000 story processeds

Go to Apify Store
Instagram Story On-Screen Text Extractor (OCR)

Instagram Story On-Screen Text Extractor (OCR)

Read promo codes, CTAs, link-sticker URLs, and every on-screen overlay from public Instagram Stories with AI OCR. Paste Story or Highlight URLs—no login. Get structured JSON with text segments, language, and confidence. Export to JSON, CSV, Excel, or call via API.

Pricing

from $0.37 / 1,000 story processeds

Rating

0.0

(0)

Developer

rainminer

rainminer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

The Instagram Story Text Extractor is an Apify Actor that reads public Instagram Stories and returns every piece of visible on-screen text as structured data—plus promo codes, call-to-action phrases, and link-sticker URLs when they appear on screen. Brands publish flash sales, coupon codes, and swipe-up links in Stories; this Actor turns that visual content into JSON you can search, monitor, and pipe into databases without watching Stories manually.

Each Story is analyzed with AI vision. Results land in one dataset row per Story with typed text segments, language detection, and confidence scores.

Instagram


Key Features

  • On-screen text OCR: Captures overlays, stickers, captions, hashtags, @mentions, promo banners, and CTA text.
  • Marketing fields: Surfaces promoCode, callToAction, and linkStickerUrl when visible on the Story.
  • Video and image Stories: Handles motion and still Stories from direct Story URLs or Highlight items.
  • Timestamp-aware (video): Records MM:SS when each text element first appears in video Stories.
  • Type classification: overlay, caption, sticker, promo, cta, hashtag, mention, and more.
  • Multilingual: ISO 639-1 language code per segment.
  • No login required: Works with public Stories and Highlight items you can open without an account.

What data can you extract?

FieldDescription
storyUrlCanonical Instagram Story URL
usernameStory owner handle (resolved from media metadata when the URL omits it)
highlightIdHighlight reel id when the URL is a Highlight item
mediaIdInstagram media id for the Story frame
onScreenTextPlainPipe-separated summary of marketing-relevant on-screen phrases (UI countdown filtered out)
onScreenTextArray of text segments with type, position, language, confidence
promoCodeDiscount or coupon code if shown on screen
callToActionPrimary CTA phrase (e.g. Shop now)
linkStickerUrlURL on a link sticker when visible
mediaTypevideo or image
durationLength in seconds for video Stories
scrapedAtISO timestamp when the Story was processed

Who is it for?

  • Marketing and competitive intelligence teams tracking promo codes and offers in Stories.
  • Affiliate and influencer analysts capturing link-sticker destinations and campaign CTAs.
  • Retail and e-commerce monitoring limited-time codes announced only in Stories.
  • Developers building Story monitoring pipelines on Apify schedules and webhooks.

How do I extract text from Instagram Stories?

  1. Open the Actor on Apify Console and add start URLs — public Story or Highlight item URLs (/stories/{username}/{id}/ or /stories/highlights/{highlightId}/{id}/).
  2. Set Max stories (default 5) and keep Apify Proxy enabled if downloads fail from your region.
  3. Run the Actor and open the Dataset tab for structured rows.
  4. Export to JSON, CSV, Excel, or pull results via the Apify API.

Input

{
"startUrls": [
{
"url": "https://www.instagram.com/stories/highlights/17975319242920589/3713636227774800082/"
}
],
"maxItems": 5
}
FieldTypeDefaultDescription
startUrlsrequest list—Public Story or Highlight item URLs
maxItemsinteger5Maximum stories to process per run
proxyConfigurationobjectApify Proxy onProxy for Instagram media downloads

Output example

{
"storyUrl": "https://www.instagram.com/stories/brand/3456789012345678901/",
"username": "brand",
"mediaId": "3456789012345678901",
"highlightId": null,
"mediaType": "video",
"duration": 12.5,
"promoCode": "SAVE20",
"callToAction": "Shop now",
"linkStickerUrl": "https://example.com/sale",
"onScreenText": [
{
"text": "SAVE20 — 20% off today only",
"timestamp": "00:01",
"type": "promo",
"position": "center",
"language": "en",
"confidence": "high"
}
],
"scrapedAt": "2026-10-18T12:00:00.000Z"
}

How it works

  1. Validate URLs — each input URL is checked against Instagram Story and Highlight patterns.
  2. Download media — the Story frame is retrieved without a browser session (video or image).
  3. AI extraction — Gemini vision reads on-screen text and structured marketing fields.
  4. Dataset output — one row per Story with segments and promo/CTA/link fields.
  5. Pay-per-event — story-processed covers media handling; story-text-processed covers successful text extraction (separate from any media-only scrapers you run in parallel).

Pricing

This Actor uses pay-per-event billing on Apify: you are charged when Story media is processed and again when text is successfully extracted to the dataset. Exact prices appear on the Actor detail page in Apify Store. Start with a small maxItems value to estimate cost per Story before scaling.


Notes and limitations

  • Public Stories only — private accounts and Stories that require login are not supported.
  • Media download — Stories are fetched via Instagram’s logged-out guest session (graphql/query warm-up + reels_media + CDN download). No Instagram login or cookies in input. Use Apify residential proxy when datacenter IPs are blocked. Expired 24h Stories cannot be recovered.
  • Ephemeral Stories — standard Stories expire after 24 hours; use a fresh URL or a Highlight item for stable tests.
  • OCR accuracy — small, fast-moving, or low-contrast text may yield lower confidence.
  • Link stickers — linkStickerUrl is set only when a URL is clearly visible on screen (not inferred from Instagram metadata alone).
  • Audio excluded — spoken words are not transcribed; only visible text is extracted.

Learn more

Image Credit

Image credit: Instagram