Threads Search Scraper
Pricing
from $4.00 / 1,000 results
Threads Search Scraper
Search public Threads posts without login. Export post text, author data, engagement metrics, media, hashtags, mentions, and public profile fields for monitoring, research, and analysis.
Pricing
from $4.00 / 1,000 results
Rating
1.7
(2)
Developer
Rush
Maintained by CommunityActor stats
6
Bookmarked
337
Total users
30
Monthly active users
2 days ago
Last modified
Categories
Share
Search public Threads posts by keyword or hashtag and export clean data for monitoring, research, trend tracking, and content analysis. No Threads login is required.
What It Helps You Do
- Monitor public conversations around brands, products, competitors, and campaigns
- Track recent or popular posts for social listening and market research
- Collect engagement fields such as likes, replies, reposts, shares, and public view counts when available
- Export author, profile, media, hashtag, mention, and link fields for analysis
How To Use
- Enter one or more keywords or hashtags
- Choose Top / Popular or Recent / Newest first
- Choose the maximum number of posts to collect for each keyword
- Optionally add a date range
- Start the Actor and export the results from the dataset
Input Example
{"keywords": ["AI", "#startup", "台北 餐廳"],"search_filter": "recent","max_posts": 50}
Example With a Date Range
{"keywords": ["OpenAI"],"search_filter": "top","start_date": "2026-01-01","end_date": "2026-02-28","max_posts": 100}
Input
| Field | Description |
|---|---|
keywords | Keywords or hashtags to search, up to 20 per run. The # is optional. |
max_posts | Maximum posts per keyword, from 10 to 1000, so 3 keywords at 50 can return up to 150 rows. Actual results depend on public availability at run time. |
search_filter | top for popular posts, or recent for the newest matching public posts. |
start_date | Optional start date. Use YYYY-MM-DD, or a relative value such as 7 days meaning 7 days ago. |
end_date | Optional end date. Use YYYY-MM-DD — a relative value here counts backwards from today too, which is rarely what you want as an end date. |
Output
Each dataset row is one public Threads post. Common fields include:
| Field | Description |
|---|---|
post_url | Direct URL of the Threads post |
post_code | Threads post identifier |
text_content | Post text |
created_at | Post timestamp when available |
username | Author username |
user_id | Author's stable account ID when available |
display_name | Author display name |
profile_url | Author profile URL |
followers_count | Public follower count when available |
bio | Public author bio when available |
like_count | Likes when available |
reply_count | Replies when available |
repost_count | Reposts when available |
quote_count | Quotes when available |
share_count | Shares when available |
view_count | Public views when available |
view_count_status | Why a row has or does not have a view count: available, not_public_yet for a post that is still too new, or not_checked when the count could not be read for that post |
has_media | Whether media is attached |
media_type | Media type when available |
media_url | Primary media URL when available |
media_urls | All media URLs for carousel posts when available |
hashtags | Hashtags found in the post |
mentions | Mentions found in the post text |
mentioned_accounts | Users the post mentions, each paired with their account ID |
search_keyword | Keyword or hashtag associated with the row |
search_filter | Sort order used for the run |
keyword_match | Whether the post appears relevant to the searched keyword |
scraped_at | When the row was collected |
Output Example
Field names and value formats below are real; the values themselves are placeholders.
{"record_type": "post","post_url": "https://www.threads.com/@public_account_name/post/ABC123","post_code": "ABC123","text_content": "Example public Threads post about AI research.","created_at": "2026-02-15T08:30:00+00:00","username": "public_account_name","user_id": "10000000000","display_name": "Public Account Name","profile_url": "https://www.threads.com/@public_account_name","followers_count": 12500,"bio": "Public profile bio","like_count": 152,"reply_count": 18,"repost_count": 7,"quote_count": 2,"share_count": 4,"view_count": 4200,"view_count_status": "available","has_media": true,"media_type": "photo","media_url": "https://example.com/image.jpg","media_urls": [],"hashtags": ["AI"],"mentions": ["mentioned_account_name"],"mentioned_accounts": [{ "username": "mentioned_account_name", "user_id": "20000000000" }],"search_keyword": "AI","search_filter": "top","keyword_match": true,"scraped_at": "2026-02-18T12:00:00+00:00"}
Dataset Views
- Posts: post text, URL, date, author, media, and search fields
- Engagement: likes, replies, reposts, quotes, shares, and public views
- Authors: author fields attached to search results
- Bio Links: public author bio links and contact fields when present
How to Read Run Results
Every run writes a short summary (the OUTPUT record) next to your dataset. Three fields tell
you what you got:
collection_status—completemeans the run delivered everything it found for your request.partialmeans something was left short.result_quality— how complete the delivered rows themselves are.completemeans the extra per-post signals were read as well;partialmeans some rows are missing one or more of them (a view count, for example). It is about the rows you received, not about how many.reason— a short word for how the run ended, when one can be named. It appears both when a run came up short and when a search simply had nothing to return. A partial run occasionally has no reason to give, and the run message is then the better guide:no_results— the keyword had no public matches. This comes withcomplete: nothing was missed, there was nothing there. Try a broader keyword or a different sort order.details_incomplete— the public details of some posts could not be confirmed this run. Usually your posts arrive and only the extra signals (such as view counts) are missing; when none of the posts could be confirmed, the run says so rather than reporting an empty keyword.temporarily_unavailable— the source was briefly unavailable partway through, so the run stopped early. Everything collected up to that point was delivered.scraping_errors— one or more keywords hit an error; the others still delivered. Checkfailed_reasonsfor the keyword-by-keyword picture.storage_incomplete/storage_unavailable— some or all results could not be saved. A new run collects from the beginning rather than continuing this one, and writes to its own dataset; within a run the same post is never written twice.invalid_input— the run stopped before searching; the message explains what to change.unexpected_error— something went wrong that the Actor could not put in any of the categories above. The run ends without delivering the remaining results.
For multi-keyword runs, failed_items lists any keyword that could not finish and
failed_reasons gives each one a short cause: request_timeout and temporarily_unavailable
mean that keyword was interrupted rather than empty; request_unavailable means the public search
page could not be read for that keyword just then; save_unavailable / save_incomplete concern
saving rather than searching; details_incomplete means the keyword's rows arrived but some extra
signals did not; unexpected_error covers anything that did not fit the categories above.
A quiet keyword is not an error: a keyword with no public matches simply contributes zero rows, the run still succeeds, and the summary says so plainly.
Tips
- Use short, focused keywords for broader discovery
- Use
recentfor monitoring newer public conversations - Use date filters when you need a specific research window
- Use
keyword_matchto separate posts that match your keyword from broader related results - Searching several keywords at once? Sort the exported
created_atvalues for one combined timeline
Limitations
- Threads can change what it shows publicly over time
- Some posts are left out when their public details cannot be confirmed; others arrive with individual fields empty
- Very new, deleted, private, restricted, or partially available posts may return incomplete fields
- Search ranking may include broadly related posts, not only exact keyword matches
- A keyword can return fewer rows than requested
Need Another Threads Workflow?
- Threads Scraper - Posts, Profiles & Search: collect public posts, search keywords, discover profiles, and export account data.
- Threads Replies Scraper: collect public replies and comments for conversation analysis.
FAQ
Does this require a Threads login?
No. The Actor is designed for publicly accessible Threads data and does not require you to provide a Threads account.
Why did I get fewer results than requested?
Result count varies by keyword and by run. Try a broader keyword, a different sort order, or a wider date range.
Why are some fields empty?
Some posts and profiles expose only partial public data. Empty fields usually mean the information was not public or not available at collection time.
Are top and recent exact filters?
They reflect the public search ordering available at run time. recent prioritises the newest matching public posts, and some related older posts may still appear. When you search several keywords at once, sort the exported created_at values for one combined timeline.
Disclaimer
Use this Actor responsibly and ensure your usage complies with applicable laws, platform terms, and your organization's policies. Data availability and accuracy may vary over time.
Keywords: Threads Search Scraper, Threads keyword search, Threads hashtag search, Threads data scraper, Meta Threads scraper, Threads post extractor, Threads engagement metrics, Threads monitoring, Threads analytics, social listening, social media monitoring, competitor research, trend research, market research, brand monitoring, public Threads data, export Threads posts, OpenClaw, Claude Code, Gemini, Antigravity, Codex, ChatGPT