Instagram reel transcript
Beta GET /v1/instagram/post/transcript
GET /v1/instagram/post/transcript
AI transcription of a reel or video post (Instagram has no public captions). The post's video file is read from its public embed page and transcribed on the shared speech boxes at the transcript price (1 credit per started 5 minutes of audio). Photos and carousels without a video answer transcript_unavailable, which is free.
- Cost: 1 credit for captions; AI transcription 1 up to 2 minutes, then 1 per started minute
- Status: Beta. Built and tested against recorded responses; the shape may still gain fields.
- Cache: Results are kept up to 30 days; send
max_age_daysto reuse them for free. - Timeout: A request still running after about 25 seconds answers
202with a job to poll (Batch and jobs).
Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
url | URL | one of | Post or reel URL (/p/..., /reel/..., /tv/...). Accepted hosts: instagram.com, instagr.am. |
id | string | one of | Shortcode or numeric media id. Also accepted as shortcode, media_id. |
Send at least one of url, id. If you send several, the first listed is used and the rest are ignored.
Every request also accepts:
trim:truefor a smaller response withoutnullfields andextra.raw:trueto also get the platform's original object asraw.max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).
Example request#
Set your key in the environment first (see Authentication).
curl -G "https://api.socialscrape.io/v1/instagram/post/transcript" \
-H "x-api-key: $SOCIALSCRAPE_API_KEY" \
--data-urlencode "url=https://www.instagram.com/reel/C8rKmYvsrck/"import os
import requests
params = {
"url": "https://www.instagram.com/reel/C8rKmYvsrck/",
}
res = requests.get(
"https://api.socialscrape.io/v1/instagram/post/transcript",
headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},
params=params,
)
body = res.json()
if body["ok"]:
print(body["data"])
else:
print(body["error"]["code"], body["error"]["message"])const url = new URL("https://api.socialscrape.io/v1/instagram/post/transcript");
url.search = new URLSearchParams({
"url": "https://www.instagram.com/reel/C8rKmYvsrck/"
}).toString();
const res = await fetch(url, {
headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },
});
const body = await res.json();
if (body.ok) {
console.log(body.data);
} else {
console.error(body.error.code, body.error.message);
}{
"nodes": [
{
"name": "SocialScrape Instagram reel transcript",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
0,
0
],
"parameters": {
"method": "GET",
"url": "https://api.socialscrape.io/v1/instagram/post/transcript",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "https://www.instagram.com/reel/C8rKmYvsrck/"
}
]
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $env.SOCIALSCRAPE_API_KEY }}"
}
]
}
}
}
],
"connections": {}
}Example response#
This is a sample from a recorded response. Status 200.
{
"ok": true,
"credits_charged": 1,
"credits_remaining": 4999,
"cached": false,
"cached_at": null,
"request_id": "req_1abb44311f35f490431f9a6e",
"data": {
"object": "transcript",
"platform": "instagram",
"video_id": "C8rKmYvsrck",
"url": "https://www.instagram.com/reel/C8rKmYvsrck/",
"language": "en",
"source": "ai",
"duration_seconds": 20.0,
"text": "This is a canned transcript for the fixture.",
"segments": [
{
"start": 0.0,
"end": 3.2,
"text": "This is a canned transcript for the fixture."
}
],
"available_languages": null,
"extra": null
},
"cursor": null,
"has_more": null
}Response#
A Transcript object in data.
See Data models for every field. The envelope around data is described in Responses.
Errors#
Failures are free: credits_charged is 0. Branch on error.code, never on the message.
| Code | HTTP | Retry | Meaning |
|---|---|---|---|
invalid_params | 400 | no | A parameter is missing, unknown or has the wrong type. |
unsupported_url | 400 | no | The URL is not one this endpoint accepts (wrong platform or form). |
not_found | 404 | no | The platform says this profile, post or item does not exist. |
transcript_unavailable | 404 | no | No captions exist and AI transcription is not possible for this media. |
Every request can also fail with the account and platform errors listed on the Errors page.
Also served at#
These paths answer the same request, so code written for other APIs keeps working: /v2/instagram/media/transcript. See Switching from ScrapeCreators.
Related endpoints#
- Instagram profile (
GET /v1/instagram/profile) - Instagram profile by user id (
GET /v1/instagram/basic-profile) - Instagram profile post count (
GET /v1/instagram/profile/post-count) - Instagram profile posts (
GET /v1/instagram/profile/posts) - Instagram profile reels (
GET /v1/instagram/profile/reels) - Instagram post or reel details (
GET /v1/instagram/post) - Instagram post comments (
GET /v1/instagram/post/comments) - Instagram popular topic (
GET /v1/instagram/search/popular)