Search Threads users
Discover public Threads accounts by keyword, including identity, display name, profile pictures, verification, biography, follower count and privacy flag.
/v1/threads/search/usersx-api-keyHeaders
Get your API keyYour ScrapeAtlas customer key. Create one on /account/ and set SCRAPEATLAS_API_KEY.
Keywords or a handle fragment, 1–200 characters.
min 1 chars · max 200 chars
exampleMost accounts to return, 1–10 (default 5; each account is one profile page read). The index is asked for 20 profile pages; permalinks beyond the limit set users_truncated.
1 – 10
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.
Always included.
≥ 0
Always included.
≥ 0
Always included.
≥ 0
True when usable data is returned; inspect status and coverage for omissions.
success, partial, failed, or challenged. HTTP 200 can be partial.
one of: success, partial
Canonical threads.com URL of the profile, post or search (user search: the web index endpoint, query excluded).
absolute HTTPS URL
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.
Always included.
one of: public_web, web_index
Always included.
users_truncated when the index listed more profiles than limit; users_omitted when a listed profile no longer resolves.
Keywords or a handle fragment, 1–200 characters.
min 1 chars
Always included.
up to 10 items
Always included.
min 1 chars
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
Always included.
No fields match.
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.
| HTTP | failure.code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing, duplicate, malformed or unsupported parameters, handles, dates or URLs. |
| 401 | unauthorized | Invalid API key. |
| 404 | not_found | Unknown handle (Threads redirects it to the login form) or unknown post code. |
| 403 | restricted_page | The page or document is restricted to signed-in viewers. |
| 503 | search_unavailable | User search was called without a configured search key. |
| 502 | search_failed | The web search index answered with an error, a non-JSON body or an unexpected shape. |
| 429 | upstream_rate_limited | Threads or the web index rate limited the request. |
| 502 | upstream_challenged | Threads answered the request with a challenge page instead of a document (status challenged). |
| 502 | operation_unavailable | Threads no longer serves the pinned document for this operation. |
| 502 | unsafe_redirect | Threads redirected the request somewhere other than the login form or the canonical permalink. |
| 502 | unsupported_page | The page or GraphQL result is missing, mismatched or structurally unsupported. |
| 502 | response_too_large | The decoded responses exceeded 8 MiB. |
| 502 | payload_too_complex | The response exceeded the JSON depth or node limits. |
| 502 | request_limit | The upstream request budget was exhausted. |
| 502 | upstream_error | Network failure or HTTP 5xx after the single retry. |
| 503 | busy | All retrieval slots are busy. |
| 504 | timeout | The 45-second deadline elapsed. |