Coding with AI?
Connect your agent to our MCP and let it integrate any endpoint for you in one shot.
Threads User Posts
Get a user’s recent posts (their feed) on Threads by username. Returns post text, engagement metrics (likes, replies, reposts, quotes, reshares), author metadata, attached media, link previews, and whether each post is pinned to the profile.
Endpoint
GET /v1/threads/user/posts
Price: $0.006 per request Free tier: 50 requests/month
Parameters
| Parameter | Required | Description |
|---|---|---|
username |
Yes | Threads username, with or without leading @ (max 100 characters) |
get_sentiment |
No | Set to true to add AI emotion analysis (Plutchik’s Wheel) to each result. Adds +$0.001 per request to the cost. Returns emotion scores, dominant emotion, intensity, and polarity. |
Response Fields
| Field | Type | Description |
|---|---|---|
posts |
array | Array of the user’s recent posts |
posts[].title |
string | Post title (format: @username on Threads) |
posts[].url |
string | Direct link to the post |
posts[].date |
string | Publication date and time (UTC, YYYY-MM-DD HH:MM:SS) |
posts[].author |
string | Author’s Threads username |
posts[].source |
string | "Threads" |
posts[].domain |
string | "threads.com" |
posts[].snippet |
string | Post text content |
posts[].likes |
integer | Number of likes |
posts[].replies |
integer | Number of replies |
posts[].reposts |
integer | Number of reposts |
posts[].quotes |
integer | Number of quote posts |
posts[].reshares |
integer | Number of times reshared to other surfaces |
posts[].author_name |
string | Author’s display name |
posts[].author_verified |
boolean | Whether the author is verified |
posts[].is_reply |
boolean | Whether the post is a reply |
posts[].is_pinned |
boolean | Whether the post is pinned to the top of the user’s profile |
posts[].media_type |
string | Post type: text, image, video, or carousel |
posts[].image_url |
string | Cover image URL for image/video/carousel posts, empty for text-only (temporary; valid ~6-24 hours) |
posts[].video_url |
string | Direct video URL for video posts, empty otherwise (temporary; valid ~6-24 hours) |
posts[].width |
integer | Media width in pixels (0 when not applicable) |
posts[].height |
integer | Media height in pixels (0 when not applicable) |
posts[].has_audio |
boolean | Whether the post’s video has audio |
posts[].reply_control |
string | Who can reply (e.g. everyone) |
posts[].hashtags |
array | Hashtags used in the post |
posts[].mentions |
array | Usernames mentioned in the post |
posts[].carousel_media |
array | Slides for carousel posts (media_id, is_video, image_url, video_url, width, height); empty otherwise |
posts[].link_preview |
object | null | Link preview for posts sharing a URL (url, display_url, title, description, image_url, favicon_url), or null |
posts[].quoted_post |
object | null | The embedded quoted/reposted post (same post shape), or null |
posts[].post_id |
string | Threads post ID |
posts[].code |
string | Post shortcode (used in the post URL) |
posts[].sentiment |
object/null | Emotion analysis results. Only present when get_sentiment=true. Returns null if analysis fails. |
posts[].sentiment.emotions |
object | Plutchik emotion scores (0-100) for: joy, trust, fear, surprise, sadness, disgust, anger, anticipation. |
posts[].sentiment.dominant_emotion |
string | The emotion with the highest score. |
posts[].sentiment.emotional_intensity |
integer | Overall emotional intensity on a scale of 0-10. |
posts[].sentiment.polarity |
string | Overall sentiment polarity: positive, negative, or neutral. |
count |
integer | Number of results returned |
Example Request
cURL
curl "https://apidirect.io/v1/threads/user/posts?username=mrbeast" \
-H "X-API-Key: YOUR_API_KEY"
Python
import requests
response = requests.get(
"https://apidirect.io/v1/threads/user/posts",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"username": "mrbeast"}
)
print(response.json())
Example Response
{
"posts": [
{
"title": "@mrbeast on Threads",
"url": "https://www.threads.com/@mrbeast/post/DPb1G6SEocH",
"date": "2025-10-05 16:49:10",
"author": "mrbeast",
"source": "Threads",
"domain": "threads.com",
"snippet": "When AI videos are just as good as normal videos, I wonder what that will do to the millions of creators making content for a living.",
"likes": 9742,
"replies": 1825,
"reposts": 297,
"quotes": 40,
"reshares": 105,
"author_name": "MrBeast",
"author_verified": true,
"is_reply": false,
"is_pinned": false,
"media_type": "text",
"image_url": "",
"video_url": "",
"width": 0,
"height": 0,
"has_audio": false,
"reply_control": "everyone",
"hashtags": [],
"mentions": [],
"carousel_media": [],
"link_preview": null,
"quoted_post": null,
"post_id": "3736813887196137223",
"code": "DPb1G6SEocH"
}
],
"count": 25
}
Notes
- Each request returns a single page of the user’s most recent posts, newest first.