Threads Search Scraper πŸ§΅πŸ” avatar

Threads Search Scraper πŸ§΅πŸ”

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Threads Search Scraper πŸ§΅πŸ”

Threads Search Scraper πŸ§΅πŸ”

πŸ§΅πŸ” Threads Search Scraper extracts Threads search results fast and reliably. Automate lead research, trend spotting & content analysis with clean, structured data. πŸš€ Great for marketers, analysts & growth teams.

Pricing

from $4.99 / 1,000 results

Rating

5.0

(1)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

40

Total users

19

Monthly active users

12 days ago

Last modified

Share

🧡 Threads Search Scraper

Search Threads (threads.com) by any keyword, topic, hashtag, or phrase β€” in bulk β€” and export every matching public post as clean, structured data. Get captions, media URLs, full engagement metrics, author info, link previews, and timestamps in one run. Perfect for trend analysis, brand monitoring, competitor research, and social listening.

✨ Why Choose This Actor?

  • πŸ” Bulk search β€” pass a whole list of queries; each is scraped in turn.
  • 🧠 Self-healing β€” the persisted-query token (doc_id) is scraped live from the Threads bundles, validated with a probe request before the run starts, and cached between runs. Meta rotates it regularly; a stale token would otherwise return zero rows on every request.
  • πŸ›‘οΈ Smart proxy ladder β€” starts direct, auto-falls back to datacenter β†’ residential only when needed, then sticks. No wasted proxy spend.
  • 🧯 Never dies mid-run β€” blocks, GraphQL errors, expired sessions and bad input are contained; the run finishes with whatever it collected instead of failing.
  • πŸ“Š 4 ready-made dataset views β€” Overview, Engagement, Media, and Users β€” each rendered as its own table.
  • πŸ’Ύ Live saving β€” every post is pushed the instant it's parsed, so a partial run still gives you data.
  • 🧩 Resume anywhere β€” use the nextCursor from a previous run to continue exactly where you stopped.

πŸ”‘ Key Features

FeatureDescription
πŸ”Ž Keyword / hashtag / phrase searchSearch anything you'd type into Threads search
πŸ“Š Sort modestop (most relevant) or recent (newest first)
πŸ‘€ Username filterKeep only posts from a specific author
πŸ“… Date range filterbefore / after date filtering
🎬 Rich mediaImage + video URLs, all candidate sizes, link previews
πŸ“ˆ Full engagementLikes, replies, reposts, quotes, reshares

πŸ“₯ Input

{
"searchQueries": ["AI", "#technology"],
"sort": "top",
"from": "",
"before": "",
"after": "",
"maxPosts": 50,
"cursor": "",
"sessionId": "YOUR_THREADS_SESSIONID_COOKIE",
"proxyConfiguration": { "useApifyProxy": false }
}
FieldTypeDescription
searchQueriesarrayRequired. One or more keywords/hashtags/phrases.
sortstringtop or recent. Default top.
fromstringOnly keep posts from this username.
before / afterstring (date)Date-range filter (client-side).
maxPostsintegerMax posts per query (1–1000). Reached exactly when a valid sessionId is supplied; without one Threads caps the result set (see note below). Ignored if cursor is set.
cursorstringResume token (nextCursor) from a previous run; fetches one page.
sessionIdstringLogged-in sessionid cookie. Required for more than ~30 posts per query. If the account running the Actor sets a THREADS_SESSIONID environment variable, that is used as a fallback.
proxyConfigurationobjectApify proxy settings. Defaults to no proxy with auto-fallback.

ℹ️ Why a session ID? Logged out, Threads' search connection returns one page and no cursor at all β€” page_info.end_cursor is null, has_next_page is false, and every edge cursor is an empty string. That is roughly 20 posts on top and ~11–16 on recent, and it is a server-side limit: first: 100, proxies, countries and alternate search surfaces all return the same single page. To squeeze out more without a session the Actor automatically tops your results up from the other sort order (same query, different ranking), which yields ~30–40 unique posts per query. Anything beyond that needs a valid logged-in sessionid, which makes the connection paginate and return a real cursor. An expired session is detected and dropped automatically β€” the run continues logged-out instead of returning nothing.

πŸ“€ Output

Each post is one dataset record:

{
"postId": "3841407839143315258",
"postCode": "DVPbBO5icc6",
"postUrl": "https://www.threads.com/@claudeai/post/DVPbBO5icc6",
"userId": "63442222226",
"username": "claudeai",
"isVerified": true,
"captionText": "A statement from Anthropic CEO…",
"mediaType": 8,
"imageUrl": "https://…",
"allImages": ["https://…"],
"allVideos": [],
"likeCount": 6165,
"directReplyCount": 459,
"repostCount": 860,
"quoteCount": 244,
"reshareCount": 566,
"takenAtISO": "2026-02-27T00:18:41.000Z",
"takenAtFormatted": "2/27/2026, 12:18:41 AM",
"linkPreviewUrl": "",
"searchQuery": "AI",
"thumbnailUrl": "https://…",
"nextCursor": "3221f23051b846b1a8cd5eeff599d442:1"
}

Fields that can legitimately be empty: imageUrl / thumbnailUrl / allImages are blank only for text-only posts (mediaType: 19); videoUrl / allVideos only for posts without video; linkPreview* only for posts without a link card; replyToUsername / replyToUserId only for posts that are not replies; nextCursor is empty whenever Threads does not hand out a cursor (i.e. every logged-out run).

The dataset ships with 4 views (tabs in the Output table): πŸ“‹ Overview, πŸ“Š Engagement, 🎬 Media, πŸ‘₯ Users.

πŸš€ How to Use (Apify Console)

  1. Log in at console.apify.com β†’ Actors.
  2. Open Threads Search Scraper.
  3. Add your search queries, set maxPosts, and paste a sessionId for deep pagination.
  4. Click Start.
  5. Watch the live log as posts stream in.
  6. Open the Output tab and export to JSON / CSV / XLSX.

πŸ€– Use via API

curl -X POST "https://api.apify.com/v2/acts/<actor-id>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["AI"],"maxPosts":20,"sessionId":"…"}'

🎯 Best Use Cases

  • πŸ“ˆ Track trending topics & hashtags
  • 🏷️ Monitor brand and product mentions
  • πŸ”¬ Research competitors and their engagement
  • πŸ‘‚ Social listening & sentiment sourcing

πŸ’΅ Pricing

This actor uses pay-per-event: you're charged per post successfully scraped (post-scraped). You only pay for data you actually receive.

❓ FAQ

Do I need a session ID? Only for more than ~30–40 posts per query. Without one, Threads itself serves a single page of search results and the Actor collects everything that page (plus the complementary sort order) contains.

Can I scrape several queries at once? Yes β€” that's what searchQueries is for. Each query respects maxPosts independently.

Is private content scraped? No. Only publicly available search results are collected.

Data is collected only from publicly available sources. You are responsible for compliance with Threads' Terms of Service and applicable laws (GDPR, CCPA, etc.).

πŸ›Ÿ Support & Feedback

Found a bug or want a feature? Open an issue on the actor's Issues tab β€” we read every one.