Tumblr Post API
Get one post from its link, or its blog and ID: the full content blocks, reblog trail, poll, tags and note count.
- 1 credit per call
- Failed calls are free
- Updated
- tumblr.post.get
{ "blogName": "staff", "id": "828009069026721792", "noteCount": 3566, "postUrl": "https://staff.tumblr.com/post/828009069026721792/premium-just-got-better", "summary": "Premium just got better", "timestamp": 1789650982, "type": "blocks", "content": [ { "text": "Premium just got better", "type": "text" }, { "type": "image" } ], "tags": [ "tumblr premium", "new features" ]}
What you send
The input
object of the request, with every field the endpoint accepts.
| Field | Type | Required | What it does | Example |
|---|---|---|---|---|
| post_id | string | one of | The post's numeric ID, sent with username. | 828009069026721792 |
| url | string | one of | The post's link. | |
| username | string | one of | The blog's name, sent with post_id as an alternative to the link. | staff |
Fields it returns
What each record in the response holds, with the values from the sample above.
| Field | Type | What it is | Example |
|---|---|---|---|
| summary | string | A short summary of the post. | Premium just got better |
| blogName | string | The blog that posted it. | staff |
| noteCount | integer | Notes (likes and reblogs), as Tumblr shows them. | 3566 |
| type | string | The post format. | blocks |
| timestamp | integer | When it was posted, as a Unix time in seconds. | 1,789,650,982 |
| postUrl | string | The post's link. | https://staff.tumblr.com/post/828009069026721792/premium-just-g… |
| content | array | The post's parts, such as text and images. | 19 records |
| content[].text | string | Text in the post. | Premium just got better |
| content[].type | string | What kind of part it is, such as text. | text |
| id | string | Tumblr's ID for the post. | 828009069026721792 |
| tags | array | The post's tags. | tumblr premium, new features |
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": "tumblr.post.get", "input": { "post_id": "828009069026721792", "username": "staff" }}'
import jsonimport osimport requestspayload = json.loads(r'''{ "capability": "tumblr.post.get", "input": { "post_id": "828009069026721792", "username": "staff" }}''')response = requests.post( "https://data.upscrape.com/execute", headers={ "Authorization": f"Bearer {os.environ['UPSCRAPE_API_KEY']}", "Content-Type": "application/json", "Prefer": "wait=30", }, json=payload,)response.raise_for_status()print(json.dumps(response.json(), indent=2))
const response = await fetch("https://data.upscrape.com/execute", { method: "POST", headers: { "Authorization": `Bearer ${process.env.UPSCRAPE_API_KEY}`, "Content-Type": "application/json", "Prefer": "wait=30", }, body: JSON.stringify({ "capability": "tumblr.post.get", "input": { "post_id": "828009069026721792", "username": "staff" }}),});if (!response.ok) { throw new Error(`Upscrape request failed: ${response.status}`);}console.log(JSON.stringify(await response.json(), null, 2));
https://data.upscrape.com/mcp
With Upscrape, open staff.tumblr.com/post/828009069026721792 and summarise what it announces, with its tags and note count.
More from the Tumblr API
The same data from other platforms
Tumblr Post API FAQ
The short answers. The docs have the long ones.
How much does the Tumblr Post 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 username or post_id or url. The input fields below list every option with its type and limits.
Do I need a Tumblr login?
No. It reads public Tumblr data; nothing runs on your account.
Can my AI agent call it?
Yes, over MCP: the agent finds tumblr.post.get, checks its price and runs it with the same credits as the REST API.
Your first Tumblr call is free.
Up to 100 free credits to start, no card needed.