↑ ↓ to move ↵ to open
LinkedIn API · Endpoint

LinkedIn Post Transcript API

Get the captions of a video post as text with timings, in the language you choose.

  • 1 credit per call
  • Failed calls are free
  • Updated
  • linkedin.post.transcript.get
Response completed
{  "text": "It's just so cool to be able to put a piece of my country\nin a place like Times Square, you know? It's insane to\nthink about. My name is He…",  "available": true,  "count": 22,  "language": "en",  "matched_count": 22,  "url": "https://www.linkedin.com/feed/update/urn:li:activity:7508957863713714180",  "video_count": 1,  "video_index": 0,  "available_languages": [    "en"  ],  "segments": [    {      "text": "It's just so cool to be able to put a piece of my country",      "end_seconds": 4.077,      "start_seconds": 0.36    },    {      "text": "in a place like Times Square, you know? It's insane to",      "end_seconds": 7.601,      "start_seconds": 4.077    }  ]}
Try it live, free
Input

What you send

The input object of the request, with every field the endpoint accepts.

FieldTypeRequiredWhat it doesExample
url string yes Public LinkedIn post URL, numeric activity ID, or urn:li:activity:<id>. A caption URL is never required or accepted. https://www.linkedin.com/feed/update/urn:li:act…
end_seconds number no Exclusive upper time bound, greater than start_seconds. Omit for the complete exposed file. At least 0.
format string no Return transcript text, timed segments, or both. count reports selected cues even for text-only output. Allowed values: text, segments, both. Default: both. both
language string no Optional exposed-language match, e.g. en. Does not translate or request an unobserved track.
max_segments integer no Maximum matching cues returned. The source is one caption file, not a paginated endpoint. From 1 to 5000. Default: 2000. 2000
start_seconds number no Include cues overlapping this lower bound, preserving original cue timestamps. At least 0. Default: 0.
video_index integer no Zero-based video position within the public post. From 0 to 20. Default: 0.
Response

Fields it returns

What each record in the response holds, with the values from the sample above.

FieldTypeWhat it isExample
text string The whole transcript as text. It's just so cool to be able to put a piece of my country in a …
available boolean Whether captions exist for the video. true
available_languages array Caption languages the video has. en
count integer Parts in this response. 22
language string The caption language returned. en
matched_count integer Parts that match your time window. 22
segments array The transcript in timed parts. 22 records
segments[].end_seconds number When the part ends, in seconds. 4.08
segments[].start_seconds number When the part starts, in seconds. 0.36
segments[].text string What is said in this part. It's just so cool to be able to put a piece of my country
url string The post the video is in. https://www.linkedin.com/feed/update/urn:li:activity:7508957863…
video_count integer Videos in the post. 1
video_index integer Which video in the post was read, counting from 0. 0
REST API · MCP server

Call it from your code, or ask your agent

Set UPSCRAPE_API_KEY to your key and copy a working request.

curl --request POST \  --url https://data.upscrape.com/execute \  --header "Authorization: Bearer $UPSCRAPE_API_KEY" \  --header "Content-Type: application/json" \  --header "Prefer: wait=30" \  --data '{  "capability": "linkedin.post.transcript.get",  "input": {    "format": "both",    "max_segments": 2000,    "url": "https://www.linkedin.com/feed/update/urn:li:activity:7508957863713714180/"  }}'
In your AI agent Claude · Cursor · any MCP client
1Add the Upscrape MCP server
https://data.upscrape.com/mcp
2Ask for the data in plain words

With Upscrape, get the LinkedIn post transcript for format "both", max segments "2000" and https://www.linkedin.com/feed/update/urn:li:activity:7508957863713714180/. Tell me what it costs before you run it, then show the results as a table.

The agent finds the endpoint, shows you the price, and runs it with your credits.
LinkedIn

More from the LinkedIn API

Same data, other platforms

The same data from other platforms

Questions

LinkedIn Post Transcript API FAQ

The short answers. The docs have the long ones.

Still have a question? Talk to the people who build the endpoints.
How much does the LinkedIn Post Transcript API cost?

1 credit per successful call, shown before it runs. You buy credits once, and paid credits never expire.

What do I send?

Send url. The input fields below list every option with its type and limits.

Do I need a LinkedIn login?

No. It reads public LinkedIn data; nothing runs on your account.

Can my AI agent call it?

Yes, over MCP: the agent finds linkedin.post.transcript.get, checks its price and runs it with the same credits as the REST API.

Get started

Your first LinkedIn call is free.

Up to 100 free credits to start, no card needed.