Skip to content
scrapeatlas.Dashboard

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.

8 endpointsx-api-key

Retrieve Threads profiles, posts, replies and related posts, and search posts, topics or accounts. Compact projections are available for posts.

API availability: Available

Base URL · local workerhttp://localhost:3040Public API: https://api.scrapeatlas.com.
Authenticationx-api-keyCustomer key from your account. See Authentication.

Endpoints

GET/v1/threads/profile

Get 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
GET/v1/threads/user/posts

List 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
GET/v1/threads/user/replies

List 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
GET/v1/threads/post

Get 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
GET/v1/threads/post/comments

List Threads post comments

Read public replies to a Threads post in page order. Use trim for a compact projection.

Reference
GET/v1/threads/search

Search Threads posts

Search public Threads posts by keyword, ranked or newest first with recent, with date filters and an optional compact projection.

Reference
GET/v1/threads/search/users

Search Threads users

Discover public Threads accounts by keyword, including identity, display name, profile pictures, verification, biography, follower count and privacy flag.

Reference
GET/v1/threads/search/tags

Search Threads topics

Suggest Threads topic tags for a term, each with its id and topic search link, as Threads' own search box does.

Reference

Quick start

Create an API key on your account page, then call the public API. Values below are placeholders.

Terminal
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.
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.