Threads Search Scraper π§΅π
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
40
Total users
19
Monthly active users
12 days ago
Last modified
Categories
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
nextCursorfrom a previous run to continue exactly where you stopped.
π Key Features
| Feature | Description |
|---|---|
| π Keyword / hashtag / phrase search | Search anything you'd type into Threads search |
| π Sort modes | top (most relevant) or recent (newest first) |
| π€ Username filter | Keep only posts from a specific author |
| π Date range filter | before / after date filtering |
| π¬ Rich media | Image + video URLs, all candidate sizes, link previews |
| π Full engagement | Likes, replies, reposts, quotes, reshares |
π₯ Input
{"searchQueries": ["AI", "#technology"],"sort": "top","from": "","before": "","after": "","maxPosts": 50,"cursor": "","sessionId": "YOUR_THREADS_SESSIONID_COOKIE","proxyConfiguration": { "useApifyProxy": false }}
| Field | Type | Description |
|---|---|---|
searchQueries | array | Required. One or more keywords/hashtags/phrases. |
sort | string | top or recent. Default top. |
from | string | Only keep posts from this username. |
before / after | string (date) | Date-range filter (client-side). |
maxPosts | integer | Max 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. |
cursor | string | Resume token (nextCursor) from a previous run; fetches one page. |
sessionId | string | Logged-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. |
proxyConfiguration | object | Apify 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_cursorisnull,has_next_pageisfalse, and every edge cursor is an empty string. That is roughly 20 posts ontopand ~11β16 onrecent, 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-insessionid, 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)
- Log in at console.apify.com β Actors.
- Open Threads Search Scraper.
- Add your search queries, set
maxPosts, and paste asessionIdfor deep pagination. - Click Start.
- Watch the live log as posts stream in.
- 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.
βοΈ Legal
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.