Threads
Meta’s text-based social platform.
Unavailable engagement/profile counts and reply totals are null, not zero.
Post responses include a nullable canonicalId (public shortcode) for stable
identity across retrieval paths. Legacy numeric IDs remain accepted.
- Post IDs: Use the shortcode (e.g.
DQt-ox3kdE4) or numeric ID - User lookup: Use username for all user endpoints (profile, posts, replies)
- Search scope:
topis relevance-ranked;recentis chronological through the managed provider boundary; cursor pagination is unavailable - Result counts: Requested counts are maximums, not guaranteed matches.
Posts
GET /threads/posts/:id — 2 credits
Get a single post by shortcode or ID. Fields unavailable from the provider, including views, may be null.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id | string | Yes | — | Threads post shortcode or numeric ID |
cURL
curl -H "x-api-key: sk_byc_xxx" \
https://api.bycrawl.com/threads/posts/DQt-ox3kdE4Response
{
"id": "3759936745132642616",
"mediaId": "18062699315155466",
"code": "DQt-ox3kdE4",
"canonicalId": "DQt-ox3kdE4",
"dedupKey": "threads:post:DQt-ox3kdE4",
"text": "Priscilla and I started CZI almost 10 years ago...",
"user": {
"id": "314216",
"username": "zuck",
"profilePic": "https://...",
"isVerified": true
},
"media": [],
"views": null,
"stats": {
"likes": 818,
"replies": 927,
"quotes": 16,
"reposts": 112,
"shares": 119
},
"createdAt": "2025-11-06T14:30:09.000Z",
"replyTo": null,
"threadChain": [],
"isReply": false
}GET /threads/posts?ids=a,b,c — 2 credits per item
Batch get multiple posts. The request fails explicitly if any requested post cannot be retrieved after all configured provider fallbacks; successful arrays never contain hidden per-item error placeholders.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ids | string | Yes | — | Comma-separated post IDs or shortcodes |
cURL
curl -H "x-api-key: sk_byc_xxx" \
"https://api.bycrawl.com/threads/posts?ids=DQt-ox3kdE4,DQEmdfkkSNE"Response
[
{
"id": "3759936745132642616",
"mediaId": "18062699315155466",
"code": "DQt-ox3kdE4",
"canonicalId": "DQt-ox3kdE4",
"dedupKey": "threads:post:DQt-ox3kdE4",
"text": "Priscilla and I started CZI almost 10 years ago...",
"user": {
"id": "314216",
"username": "zuck",
"profilePic": "https://...",
"isVerified": true
},
"media": [],
"views": 166996,
"stats": {
"likes": 818,
"replies": 927,
"quotes": 16,
"reposts": 112,
"shares": 119
},
"createdAt": "2025-11-06T14:30:09.000Z",
"replyTo": null,
"threadChain": [],
"isReply": false
}
]GET /threads/posts/:id/replies — 3 credits
Get replies to a Threads post. totalReplies is null when unknown; a numeric value is an observed total, not an exhaustive-retrieval guarantee. hasMore indicates truncation. Pagination beyond the first batch is not supported.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
max | boolean | No | false | Use authenticated mode for enhanced data |
cURL
curl -H "x-api-key: sk_byc_xxx" \
"https://api.bycrawl.com/threads/posts/DW4Gb79kQc0/replies"Response
{
"rootPost": {
"id": "3870872187813562164",
"code": "DW4Gb79kQc0",
"text": "Original post text...",
"user": {
"id": "314216",
"username": "zuck",
"profilePic": "https://...",
"isVerified": true
},
"stats": { "likes": 2613, "replies": 476, "quotes": 55, "reposts": 189, "shares": 336 },
"createdAt": "2026-04-09T14:00:00.000Z"
},
"replies": [
{
"id": "3870872993254359647",
"code": "DW4Hqm0AMge",
"text": "This is a reply to the original post",
"user": {
"id": "63125302142",
"username": "justincookphoto",
"profilePic": "https://...",
"isVerified": false
},
"media": [],
"stats": { "likes": 92, "replies": 5, "quotes": 0, "reposts": 0, "shares": 0 },
"createdAt": "2026-04-09T15:00:00.000Z",
"replyTo": null,
"threadChain": [],
"isReply": true
}
// ...more items
],
"totalReplies": 476,
"hasMore": true
}GET /threads/posts/search?q=xxx — 3 credits per call (top and recent)
Search posts by keyword. top uses the public relevance page. recent uses a
provider that supports true chronological search rather than re-sorting a
relevance-only sample.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | Yes | — | Search keyword |
count | integer | No | 10 | Maximum posts to return (max 25 for top, 200 for recent) |
search_type | string | No | top | top (relevance) or recent (chronological) |
since | string | No | — | ISO date/time lower bound for recent |
until | string | No | — | ISO date/time upper bound for recent |
Both top and recent use managed retrieval with bounded recovery. Recent
never falls back to relevance-only results. If retrieval fails without usable
data, the request fails. A valid short or empty result is not an error.
Inspect search.partial, reason, requestedCount and returnedCount.
Incomplete retrieval preserves collected posts with partial: true and
reason: "incomplete_results"; otherwise reason is null. partial: false
is not an exhaustive-recall guarantee. Date bounds are filtered locally;
keyword matching is not exact-phrase matching. Acquisition diagnostics are internal:
source, sources and fallbackAttempted are no longer returned.
Use canonicalId (the public shortcode) for persistent identity and post/replies/batch
lookups, or dedupKey (threads:post: plus shortcode) for namespaced deduplication.
Existing id values remain compatible but can differ between retrieval paths.
When neither a shortcode nor a valid Threads permalink is available, canonicalId
and dedupKey are null; retain the original id without assuming cross-source equality.
Identical searches share a cache for up to 60 seconds; recovery results may use
a shorter cache. top and recent have separate keys. Concurrent identical
searches share work across workers. Coordination outages return a temporary
service error rather than starting duplicate upstream work; retry with backoff.
Each successful API request is still billed normally, including cache hits.
Unavailable engagement stats are null, never invented zeros. Numeric values represent observed counts. Search cursors are not returned because this endpoint does not accept pagination.
Both top and recent cost 3 credits per successful request, regardless of
count or the number of matches returned. Failed requests are refunded by the Gateway.
cURL
curl -H "x-api-key: sk_byc_xxx" \
"https://api.bycrawl.com/threads/posts/search?q=threads&search_type=recent"Response
{
"posts": [
{
"id": "3847614751430661572",
"mediaId": "17913742854319868",
"code": "DVleTsbk9XE",
"text": "Artists! Show me your most recent artwork!...",
"user": {
"id": "63436967516",
"username": "koshino.yoshihiro",
"profilePic": "https://...",
"isVerified": true
},
"media": [],
"stats": {
"likes": 41,
"replies": 118,
"quotes": 0,
"reposts": 0,
"shares": 0
},
"createdAt": "2026-03-07T13:50:42.000Z"
}
// ...more items
]
}Users
GET /threads/users/:username — 2 credits
Get user profile.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | Yes | — | Threads username |
cURL
curl -H "x-api-key: sk_byc_xxx" \
https://api.bycrawl.com/threads/users/zuckResponse
{
"id": "314216",
"username": "zuck",
"fullName": "Mark Zuckerberg",
"profilePic": "https://...",
"bio": "I build stuff",
"isVerified": true,
"followerCount": 5439848,
"followingCount": 0
}GET /threads/users/:username/posts — 2 credits
Get the first public SSR batch of a user’s posts. Custom counts and pagination are unavailable.
This is not a complete post history. Repeating the request fetches the first
batch again, not a next page. No usable cursor or completeness flag is returned;
do not interpret a short or empty batch as proof that the account has no older posts.
Passing cursor, count, page, after, before, limit or offset returns HTTP 400.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | Yes | — | Threads username |
cURL
curl -H "x-api-key: sk_byc_xxx" \
https://api.bycrawl.com/threads/users/zuck/postsResponse
{
"posts": [
{
"id": "3759936745132642616",
"code": "DQt-ox3kdE4",
"text": "Priscilla and I started CZI almost 10 years ago...",
"user": {
"id": "314216",
"username": "zuck",
"profilePic": "https://...",
"isVerified": true
},
"stats": {
"likes": 818,
"replies": 927,
"quotes": 16,
"reposts": 112,
"shares": 119
},
"hasMedia": false,
"createdAt": "2025-11-06T14:30:09.000Z"
}
// ...more items
]
}GET /threads/users/:username/replies — 2 credits
Get the first public SSR batch of a user’s replies. Custom counts and pagination are unavailable.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
username | string | Yes | — | Threads username |
Response
{
"replies": [
{
"type": "others",
"replyId": "3848726738042452746",
"replyCode": "DVpbJOqkXsK",
"replyText": "Congrats! This is wild...",
"replyTimestamp": "2026-03-09T02:40:01.000Z",
"stats": {
"likes": 60,
"replies": 12,
"quotes": 0,
"reposts": 0,
"shares": 5
},
"replier": {
"id": "314216",
"username": "zuck",
"profilePic": "https://...",
"isVerified": true
},
"replyTo": {
"postId": "3848622568860907884",
"postCode": "DVpDdXjgXls",
"postText": "Original post text...",
"postUrl": "https://www.threads.com/@otheruser/post/DVpDdXjgXls",
"author": {
"id": "63215166896",
"username": "otheruser",
"profilePic": "https://...",
"isVerified": true
}
}
}
// ...more items
]
}GET /threads/users/search?q=xxx — 2 credits
Search users by username or name.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | Yes | — | Search query |
Response
{
"users": [
{
"id": "314216",
"username": "zuck",
"fullName": "Mark Zuckerberg",
"profilePic": "https://...",
"isVerified": null
},
{
"id": "43015418666",
"username": "zuckubus",
"fullName": "Memes | Comedy | Entertainment",
"profilePic": "https://...",
"isVerified": null
}
// ...more items
]
}Feed
GET /threads/feed/public — 2 credits
Get public For You feed.
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count | integer | No | 10 | Number of items to return |
Response
{
"posts": [
{
"id": "3847150142294366101",
"code": "DVj0qvdDJeV",
"text": "Why they ain't got on no white gloves touching...",
"user": {
"id": "63446067958",
"username": "candicebenbow",
"profilePic": "https://...",
"isVerified": true
},
"stats": {
"likes": 42,
"replies": 3,
"reposts": 2,
"quotes": 0,
"shares": 0
},
"createdAt": "2026-03-06T22:27:36.000Z",
"media": []
}
// ...more items
]
}