Instagram Media Screen Text API
Scrape Instagram Media Screen Text data with one API call. Reads the text shown on an Instagram post's images: the headlines, list items, captions and meme text creators design into a photo, a carousel slide or a reel cover, which the post caption never carries. What is read depends on the post. On a photo, the photo itself. On a carousel, every slide in order, up to the first 10 slides; a longer carousel is read to slide 10 and the response carries a warning giving its full slide count. On a reel or video, the cover frame only. This is AI OCR of the published images, so it does not read text that appears only later in a reel's video. `texts` is the deduplicated union of every image's text in slide order, `images` lists each image read with its own `texts` and its 0-based `index` in the post's media list (so a carousel caller knows which slide said what), `media_type` is image, video or carousel, and `source` is ocr when any text was found and none otherwise. A post with no text on it returns empty arrays (that is a real answer, not an error). If some slides cannot be read, those slides carry `texts: null` and the response carries a warning.
Last updated September 2026Maintained by the SocialCrawl team
Returns the text shown on an Instagram post's images, read by AI: the photo, each carousel slide up to 10, or a reel's cover frame, with results per slide.
Use it for text designed into a post, like carousel headlines; the caption lives on post and spoken words on media/transcript. Text shown later in a reel is not read.
Searching 65 platforms in parallel
What can you do with the Media Screen Text API?
The Media Screen Text endpoint gives you structured Instagram data with computed fields in a single request. No scraping infrastructure to build or maintain.
Example Request
curl -H "x-api-key: YOUR_API_KEY" \
"https://www.socialcrawl.dev/v1/instagram/media/screen-text?url=https%3A%2F%2Fwww.instagram.com%2Fp%2FDdEqEl5Dl-S%2F"import requests
response = requests.get(
"https://www.socialcrawl.dev/v1/instagram/media/screen-text",
params={
'url': 'https://www.instagram.com/p/DdEqEl5Dl-S/',
},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()const response = await fetch(
"https://www.socialcrawl.dev/v1/instagram/media/screen-text?url=https%3A%2F%2Fwww.instagram.com%2Fp%2FDdEqEl5Dl-S%2F",
{
headers: { "x-api-key": "YOUR_API_KEY" },
},
);
const data = await response.json();Parameters
| Parameter | Required | Description |
|---|---|---|
| url | Yes | Full URL of the Instagram post, reel or video (a `/p/`, `/reel/`, `/reels/` or `/tv/` link) |
What does the Instagram Media Screen Text API return?
Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.
Example response
{
"success": true,
"platform": "instagram",
"endpoint": "/v1/instagram/media/screen-text",
"data": {
"post_id": "3982493004019425170",
"shortcode": "DdEqEl5Dl-S",
"url": "https://www.instagram.com/p/DdEqEl5Dl-S/",
"media_type": "carousel",
"texts": [
"\"Ana, dein Speicherplatz ist voll.",
"Du musst Fotos löschen\"",
"Happy Birthday"
],
"images": [
{
"index": 0,
"image_url": "https://scontent-lga3-1.cdninstagram.com/v/t51.82787-15/799346912_18623911903058728_4053280514596937734_n.jpg?stp=dst-jpg_e35_tt6",
"texts": [
"\"Ana, dein Speicherplatz ist voll.",
"Du musst Fotos löschen\""
]
},
{
"index": 2,
"image_url": "https://scontent-lga3-3.cdninstagram.com/v/t51.82787-15/801354824_18623911930058728_5458856566718637155_n.jpg?stp=dst-jpg_e35_tt6",
"texts": []
},
{
"index": 6,
"image_url": "https://scontent-lga3-1.cdninstagram.com/v/t51.82787-15/800469821_18623912011058728_2315837409654874183_n.jpg?stp=dst-jpg_e35_tt6",
"texts": [
"Happy Birthday"
]
}
],
"source": "ocr",
"frame": null,
"slide_count": 20,
"warnings": [
"This carousel has 20 slides; text was read from the first 10 only."
]
},
"credits_used": 5,
"credits_remaining": 95,
"request_id": "req-hrAEsSJeTaFgF3fD",
"cached": false
}Live sample illustrating the unified response shape. Field values reflect the record you query.
How does the Instagram Media Screen Text API work?
Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.
Method
GET
Response
JSON
How do you scrape social media data in seconds?
The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 65 platforms covering 10B+ monthly active users.
One schema, every platform
Query 65 platforms with identical response structures. Write your integration once.
Computed fields, not just scraped
When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.
See your data before you code
Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.
import requests
response = requests.get(
'https://www.socialcrawl.dev/v1/tiktok/profile',
params={'handle': 'charlidamelio'},
headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json(){
"success": true,
"platform": "tiktok",
"data": {
"author": {
"username": "charlidamelio",
"followers": 152400000
},
"engagement": {
"likes": 12400000000,
"engagement_rate": 0.087
},
"metadata": {
"language": "en",
"content_category": "lifestyle"
}
}
}Ready to scrape Instagram Media Screen Text data?
Get your API key and start pulling Instagram data in under 60 seconds.
