Threads API endpoint
Returns the public first page of Threads search results for a query. `sort` supports `top` and `recent`; `pagination_limited` marks the logged-out login wall because search has no continuation cursor. Author and date filters in Threads require login and are not exposed here.
/threads/searchMCP tool: threads_search
q (required): search text containing 1 to 100 characters.sort (optional): top or recent. Defaults to top.Returns the first public page of post results visible to logged-out visitors. sort=recent maps to Threads' Recent filter; sort=top uses the default Top results. Threads does not expose a continuation cursor for this public search view. pagination_limited is true when the page shows the login wall for additional results.
| Field | Filled in, of 21 checked | Values in the sample |
|---|---|---|
| id | 21 | |
| code | 21 | |
| url | 21 | threads.com |
| text | 21 | median 255 characters |
| author | 21 | |
| created_at | 21 | 2026-02-09 to 2026-10-13 |
| like_count | 19 | 1 to 7,077, median 102 |
| reply_count | 21 | 1 to 784, median 8 |
| repost_count | 11 | 1 to 577, median 10 |
| quote_count | 5 | 1 to 53, median 2 |
| image_urls | 11 | median 1 entry |
| video_urls | 2 | median 1 entry |
| is_reply | 1 | true in 1 of 1 |
| reply_to | 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query (1-100 characters) | openai | |
| sort | string | No | top | Result order; defaults to top Allowed values: top, recent. | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/threads/search?q=openai&sort=top" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "openai",
"sort": "recent",
"items": [
{
"id": "123",
"code": "ABC123",
"url": "https://www.threads.com/@openai/post/ABC123",
"text": "Example result",
"author": {
"username": "openai"
},
"topic": {
"id": "18399895213044171",
"display_name": "AI Threads",
"search_query": "aithreads",
"is_community": true
}
}
],
"has_more": false,
"pagination_limited": true
}
}Request schema
No body schema
Response schema
#/definitions/threads.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | threads.SearchResult | No | ||||
| data.has_more | boolean | No | Whether more results are available after this page. | |||
| data.items | array | No | Threads matching the search, one entry per post. | |||
| data.items[].author | object | No | Account that posted the thread. | |||
| data.items[].author.id | string | No | Threads user ID of the author. | |||
| data.items[].author.name | string | No | Display name of the author. | |||
| data.items[].author.username | string | No | Threads username of the author. | |||
| data.items[].code | string | No | ||||
| data.items[].created_at | string | No | Time the thread was posted, in UTC (RFC 3339). | |||
| data.items[].id | string | No | Threads post ID. | |||
| data.items[].image_urls | array | No | URLs of the images attached to the thread. | |||
| data.items[].is_reply | boolean | No | Whether the thread is a reply to another thread. | |||
| data.items[].like_count | integer | No | Number of likes on the thread. | |||
| data.items[].quote_count | integer | No | Number of times the thread was quoted. | |||
| data.items[].reply_count | integer | No | Number of replies to the thread. | |||
| data.items[].reply_to | string | No | Username of the account this thread replies to. | |||
| data.items[].repost_count | integer | No | Number of times the thread was reposted. | |||
| data.items[].text | string | No | Text of the thread. | |||
| data.items[].topic | object | No | Public topic/community tag attached to the thread, when present. | |||
| data.items[].topic.community_emoji | string | No | Community reaction emoji, when present on a post tag. | |||
| data.items[].topic.community_favicon_url | string | No | Community icon URL, when present. | |||
| data.items[].topic.display_name | string | No | Topic label shown in Threads. | |||
| data.items[].topic.id | string | No | Numeric Threads topic tag identifier. | |||
| data.items[].topic.is_community | boolean | No | Whether Threads identifies this topic as a community. | |||
| data.items[].topic.name | string | No | Canonical topic query returned on profile topic lists. | |||
| data.items[].topic.search_query | string | No | Query to pair with ID when calling the topic search endpoint. | |||
| data.items[].topic.tag_cluster_name | string | No | Topic cluster or category label, when present. | |||
| data.items[].url | string | No | URL of the thread on Threads. | |||
| data.items[].video_urls | array | No | URLs of the videos attached to the thread. | |||
| data.next_cursor | string | No | Cursor to pass to fetch the next page of results. | |||
| data.pagination_limited | boolean | No | True when Threads gates further results behind login or provides no supported continuation. | |||
| data.query | string | No | Search query that was run. | |||
| data.sort | string | No | Result ordering selected for the search. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid query or sort | #/definitions/app.Response |
| 503 | Upstream error or parser drift | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/threads/search?q=openai&sort=top" \
-H "x-api-key: $CRAWLORA_API_KEY"