Appearance
Posts
GET /v1/threads/user/posts
Fetches the most recent posts from a Threads user, returning id, caption text, code, like_count, reshare_count, direct_reply_count, repost_count, image_versions2, video_versions, and taken_at. Only the last 20-30 posts are publicly visible. Supports a trim option for lighter responses.
Authentication
All requests require the x-api-key header. Get your key at scrapecreators.com.
Query Parameters
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
handle | string | yes | Threads username | trendspider |
trim | boolean | no | Set to true for a trimmed down version of the response | false |
Example Request
curl
bash
curl 'https://api.scrapecreators.com/v1/threads/user/posts?handle=trendspider' \
-H 'x-api-key: $SCRAPECREATORS_API_KEY'Node / TypeScript
js
const params = new URLSearchParams({ handle: 'trendspider' });
const res = await fetch(`https://api.scrapecreators.com/v1/threads/user/posts?${params}`, {
headers: { 'x-api-key': process.env.SCRAPECREATORS_API_KEY }
});
const data = await res.json();
console.log(data);Python
python
import os, requests
r = requests.get(
'https://api.scrapecreators.com/v1/threads/user/posts',
headers={'x-api-key': os.environ['SCRAPECREATORS_API_KEY']},
params={'handle': 'trendspider'},
)
r.raise_for_status()
print(r.json())CLI
bash
scrapecreators threads user-posts --helpExample Response
json
{
"success": true,
"posts": [
{
"id": "3656367813102434565_63055343223",
"pk": "3656367813102434565",
"caption": {
"text": "Spoiler alert: We're testing a way for you to hide spoilers in your Threads posts.",
"pk": "17978979272714446",
"has_translation": null
},
"code": "DK-BydcJHkF",
"like_count": 96434,
"taken_at": 1750093031,
"user": {
"friendship_status": null,
"pk": "63055343223",
"profile_pic_url": "https://scontent-hou1-1.cdninstagram.com/v/t51.2885-19/452737457_1313286386312102_744138929735022550_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-hou1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFGyGWANff-XHjZgOOWs_xNC29qmUTVstyb7y0tS-ajYvJSDJTf5fJ3qHVk4igARGY&_nc_ohc=4jx-dLM0V7UQ7kNvwEKpQFP&_nc_gid=butCRrRE5aFQP4QL-mwt9A&edm=AA3DLpEBAAAA&ccb=7-5&oh=00_AfMVigSXFw6UnanNMOzkIu2vA31TUJ_4uOlpGTH6q3dqTw&oe=685A71CE&_nc_sid=d92198",
"username": "zuck",
"id": "63055343223",
"transparency_label": null,
"transparency_product": null,
"transparency_product_enabled": false,
"is_verified": true,
"text_post_app_is_private": false,
"has_onboarded_to_text_post_app": true
},
"url": "https://www.threads.com/@zuck/post/DK-BydcJHkF"
}
]
}Credits
Most ScrapeCreators endpoints consume 1 credit per successful response. Some heavier endpoints (transcripts, AI-driven enrichment, ad detail lookups) may cost more. Check GET /v1/credit-balance for your remaining balance.
Errors
| Status | Meaning | Action |
|---|---|---|
| 200 | Success. | Use the JSON payload. |
| 400 | Invalid or missing parameter. | Verify required parameters and value format. |
| 401 | Missing or invalid x-api-key. | Pass a valid API key in the header. |
| 402 | Out of credits. | Top up at scrapecreators.com or wait for plan reset. |
| 404 | Resource not found or private. | Confirm the handle, URL, or id and that the resource is public. |
| 429 | Rate limited. | Backoff and retry with exponential delay. |
| 500 | Server error or upstream platform failure. | Retry with backoff; report persistent errors to support. |