Social networks
Threads API
Retrieve public Threads profiles, a profile's recent posts and replies, single posts with their replies and related posts, keyword search results, topic suggestions and account discovery, exactly as Threads' own web client receives them.
Retrieve Threads profiles, posts, replies and related posts, and search posts, topics or accounts. Compact projections are available for posts.
API availability: Available
http://localhost:3040Public API: https://api.scrapeatlas.com.Endpoints
/v1/threads/profileGet a Threads profile
Retrieve a public Threads profile by handle: the account header Threads' own web client receives (identity, bio with fragments and links, follower count, verification, profile pictures, topic tags), with its fields at the top level.
Reference/v1/threads/user/postsList Threads user posts
Read a profile's recent public Threads posts, newest first, and the author's continuation posts, with canonical URLs. Use trim for a compact projection.
Reference/v1/threads/user/repliesList Threads user replies
List a public Threads account's recent replies, newest first, each with the post it answers and that post's ancestors. Use trim for a compact projection.
Reference/v1/threads/postGet a Threads post
Retrieve a public Threads post by permalink, with view count, replies, related posts and ancestor posts. Set include_comments=false for the post alone; use trim for a compact projection.
Reference/v1/threads/post/commentsList Threads post comments
Read public replies to a Threads post in page order. Use trim for a compact projection.
Reference/v1/threads/searchSearch Threads posts
Search public Threads posts by keyword, ranked or newest first with recent, with date filters and an optional compact projection.
Reference/v1/threads/search/usersSearch Threads users
Discover public Threads accounts by keyword, including identity, display name, profile pictures, verification, biography, follower count and privacy flag.
Reference/v1/threads/search/tagsSearch Threads topics
Suggest Threads topic tags for a term, each with its id and topic search link, as Threads' own search box does.
ReferenceQuick start
Create an API key on your account page, then call the public API. Values below are placeholders.
curl "https://api.scrapeatlas.com/v1/threads/profile?handle=example" \
-H "x-api-key: YOUR_API_KEY"Coverage & limits
- Independent worker on port 3040, THREADS_API_KEY in x-api-key. No Threads or Instagram account, login, storage, media download or product dependency; each operation runs one anonymous session with a browser TLS fingerprint, the way Threads' own web client connects.
- Four concurrent operations, 45-second deadline, at most five upstream requests per operation: profile, posts, replies, post and comments = one page load (plus one canonical redirect hop for short, threads.net or re-attributed permalinks, and one re-read on a fresh session when a page arrives without its data); a post without comments, search and topic search = the session probe (a HEAD on the login route, plus the login page when the probe sets no cookie) plus one document; user search = thirteen: the web index and its fallback, up to ten profile pages (five by default) and the retry; each with one shared transient retry for network failures or HTTP 5xx. Challenges, rate limits and 4xx answers are never retried. A page read stops once the data the operation needs has arrived.
- 8 MiB decoded response across an operation (16 MiB for user search, which reads up to ten profile pages), 600,000 JSON nodes, 64 levels, 50 posts and 50 continuation posts per profile window, 50 replies, 50 comments, 20 related posts, 50 parent posts, 50 search results, 20 topic tags, 10 users.
- Windows: the profile feed (posts_first_page_only), the replies tab (replies_first_page_only), the reply window of a post (comments_first_page_only) and the search window (about twenty posts) are each returned as one page. Private accounts answer the profile header and an empty posts or replies window with private_account.
- Keyword user search uses SERPER_API_KEY (Serper Google Search API) and falls back to THREADS_SEARCH_API_KEY or BRAVE_SEARCH_KEY (Brave Search API) when Serper is unset or fails; the route reports search_unavailable without either. One index request per search, plus one fallback request (10 URLs requested from Serper, 20 from Brave; profile permalinks kept, at most 10), 1 MiB index response, then one profile page per account (five by default, up to ten with limit; three at a time; pages that no longer resolve are omitted as users_omitted); results are ordered by the index.
- The search, post and topic document ids are pinned to the ones Threads' web client uses; when Threads retires one, the operation fails operation_unavailable instead of guessing.
- Handles are 1–30 letters, digits, periods and underscores (leading @ accepted), post URLs are threads.com or threads.net /@handle/post/<code>, /t/<code> or /post/<code> permalinks (query strings and fragments ignored). Identity is verified against the request; mismatches fail unsupported_page. Unknown handles and unknown post codes fail not_found.
- Optional THREADS_PROXY_URL (falling back to TWITCH_PROXY_URL, then REDDIT_PROXY_URL) routes every operation through a fresh residential proxy session; an optional second pool (THREADS_PROXY_FALLBACK_URL) takes over from stalled tunnels and serves the fresh-session re-read.
| 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. |