Skip to content
scrapeatlas.Dashboard

Search Threads posts

Try in Playground

Search public Threads posts by keyword, with ranked or recent ordering, inclusive UTC date filters and an optional compact projection.

GET/v1/threads/searchx-api-key
x-api-keystringrequiredheader

Your ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.

Query parameters
5
querystringrequiredquery

Keywords, 1–200 characters.

min 1 chars · max 200 chars

Exampleexample query
recentenumquery

true for the recent ranking; false (default) for Threads' top ranking.

one of: true, false

start_datestringquery

Optional.

end_datestringquery

Optional.

trimenumquery

true keeps the compact projection: id, pk, caption, code, like_count, taken_at, user (feed and search posts add url).

one of: true, false

Response fields
27
requestIdstring

Request correlation identifier.

HTTP attempts for the operation (profile, posts, post, comments: one page load, plus one canonical redirect hop for short, threads.net or wrongly attributed permalinks; search: a bodiless session probe (HEAD on the login route) plus one document, with the login page read only when the probe sets no cookie; user search: the index and one profile page per account, five by default and ten at most; each with the shared transient retry), decoded bytes and duration.

accounting.upstreamRequestsinteger

Always included.

≥ 0

accounting.responseBytesinteger

Always included.

≥ 0

accounting.durationMsnumber

Always included.

≥ 0

successboolean

True when usable data is returned; inspect status and coverage for omissions.

statusenum

success, partial, failed, or challenged. HTTP 200 can be partial.

one of: success, partial

sourceUrlstring

Canonical threads.com URL of the profile, post or search (user search: the web index endpoint, query excluded).

absolute HTTPS URL

fetchedAtstring

UTC retrieval time.

Complete means every source field of the operation was returned; warnings name every omission or cap (private_account, posts_first_page_only, posts_truncated, comments_first_page_only, comments_truncated, related_posts_truncated, parent_posts_truncated, search_results_truncated, date_filter_applied, users_truncated, users_omitted). Source is public_web, or web_index for user search.

coverage.sourceenum

Always included.

one of: public_web, web_index

coverage.completeboolean

Always included.

coverage.warningsenum[]

Always included.

querystring

Keywords, 1–200 characters.

min 1 chars

recentboolean

true for the recent ranking; false (default) for Threads' top ranking.

startDatestringnullable

Always included.

endDatestringnullable

Always included.

Always included.

up to 50 items

posts.pkstring

Always included.

posts.idstring

Always included.

min 1 chars

Always included.

posts.user.pkstring

Always included.

posts.user.usernamestring

Always included.

min 1 chars

posts.codestring

Always included.

min 1 chars

posts.media_typeinteger

Always included.

posts.taken_atinteger

Always included.

posts.urlstring

Always included.

absolute HTTPS URL

HTTP 200 returns the success variant. Check status: partial means usable data with warnings, and failed or challenged requests carry a failure object described in Errors & responses.

Error codes
17
HTTPfailure.codeMeaning
400invalid_requestMissing, duplicate, malformed or unsupported parameters, handles, dates or URLs.
401unauthorizedInvalid API key.
404not_foundUnknown handle (Threads redirects it to the login form) or unknown post code.
403restricted_pageThe page or document is restricted to signed-in viewers.
503search_unavailableUser search was called without a configured search key.
502search_failedThe web search index answered with an error, a non-JSON body or an unexpected shape.
429upstream_rate_limitedThreads or the web index rate limited the request.
502upstream_challengedThreads answered the request with a challenge page instead of a document (status challenged).
502operation_unavailableThreads no longer serves the pinned document for this operation.
502unsafe_redirectThreads redirected the request somewhere other than the login form or the canonical permalink.
502unsupported_pageThe page or GraphQL result is missing, mismatched or structurally unsupported.
502response_too_largeThe decoded responses exceeded 8 MiB.
502payload_too_complexThe response exceeded the JSON depth or node limits.
502request_limitThe upstream request budget was exhausted.
502upstream_errorNetwork failure or HTTP 5xx after the single retry.
503busyAll retrieval slots are busy.
504timeoutThe 45-second deadline elapsed.