Threads Search Post Scraper
Pricing
$2.00 / 1,000 threads
Threads Search Post Scraper
Scrape public Threads search results and extract full thread data. Accepts text queries, date filters, and author filters. Returns structured thread items with all posts, root post info, and summary stats. Ideal for research, monitoring, and analytics.
Pricing
$2.00 / 1,000 threads
Rating
0.0
(0)
Developer

Tran Tu
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 hours ago
Last modified
Categories
Share
Search public Threads posts via threads.com/search and export thread-level results (with all posts in each thread) into your Apify Dataset and Key-Value Store.
What this actor does
-
Accepts:
textqueries (single string or array)- optional date filters (
before_date,after_date) - optional author filter (
from_author, username without@)
-
Groups results by thread:
- one dataset item per thread (
type: "thread") - includes
root_postand fullpostsarray for that thread
- one dataset item per thread (
-
Works only with public content, no login or cookies required
Input
Example input
{"text": ["te", "hola"],"before_date": "2025-11-12","after_date": "2025-11-01","from_author": "taylorswift","timeoutMs": 15000}
Behavior
-
If
textis:- a string → one search
- an array → one search per query value
-
If
textis missing or empty:- the actor still performs one search using only date/author filters (e.g. “all posts by this author in this time range”).
Input fields
| Field | Type | Required | Notes |
|---|---|---|---|
text | string | string[] | No |
before_date | string | No | Upper date filter, passed as before_date query param (YYYY-MM-DD). |
after_date | string | No | Lower date filter, passed as after_date query param (YYYY-MM-DD). |
from_author | string | No | Filter by Threads username (without @). |
timeoutMs | number | No | Per-request timeout (default 15000). |
Output
Dataset items
The actor produces several item types.
1) Thread items (main output)
Each search result thread becomes one item:
{"type": "thread","thread_id": "3763948739171019822","query": "te","root_post": {"id": "3763948739171019822_63028951785","pk": "3763948739171019822","user": {"id": "63028951785","username": "_sebastiansantillan","full_name": "Sebastián","profile_pic_url": "https://instagram.cdn.example/sample.jpg","is_verified": true},"caption": {"text": "Hola 🫣❤️"},"code": "DQ8O2-fEWwu","like_count": 133,"taken_at": 1762917676/* ...other raw fields from Threads... */},"posts": [{"id": "3763948739171019822_63028951785","pk": "3763948739171019822","user": {"id": "63028951785","username": "_sebastiansantillan"},"caption": { "text": "Hola 🫣❤️" },"code": "DQ8O2-fEWwu","like_count": 133/* ...same structure as root_post... */}/* replies / other posts in the same thread, if any */]}
Notes:
thread_idis taken from the thread node or the first post in the thread.root_postis the first post inthread_items.postsincludes all posts in the thread (root + replies, etc.).- Post objects preserve most original fields from Threads.
Key-Value Store: SUMMARY.json
After each run, the actor stores a summary:
{"totalSearches": 2,"totalThreads": 10,"totalPosts": 25,"text": ["te", "hola"],"collectedAt": "2025-11-12T14:05:10.789Z"}
totalSearches– number of unique search URLs executedtotalThreads– number of unique threads across all resultstotalPosts– number of unique posts across all threadstext– distinct non-empty query strings used in this run
Quick start (no code)
-
Open the actor in Apify → click Run
-
Paste your JSON input (see example above)
-
Start the run
-
When finished:
- Open Dataset → view/export threads as JSON/CSV/XLSX
- Open Key-Value Store → download
SUMMARY.json
API Usage
Start a run
curl -X POST "https://api.apify.com/v2/acts/trantus~threads-search-post-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"text": ["te", "hola"],"before_date": "2025-11-12","after_date": "2020-11-01","from_author": "zuck",}'
Fetch last run dataset items
$curl "https://api.apify.com/v2/acts/trantus~threads-search-post-scraper/runs/last/dataset/items?token=YOUR_TOKEN"
Node.js Example
import { ApifyClient } from 'apify-client';// Initialize the ApifyClient with API tokenconst client = new ApifyClient({token: '<YOUR_API_TOKEN>',});// Prepare Actor inputconst input = {text: ["te", "hola"],before_date: "2025-11-12",after_date: "2020-11-01",from_author: "zuck"}(async () => {// Run the Actor and wait for it to finishconst run = await client.actor("lSboJckrYDrGheK8W").call(input);// Fetch and print Actor results from the run's dataset (if any)console.log('Results from dataset');const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => {console.dir(item);});})();
FAQ
Q: Is this for profiles or posts?
A: This actor is for searching posts (threads) via threads.com/search. If you need profile metadata, use a dedicated profile-scraper actor.
Q: What exactly is a “thread” item?
A: A thread is the main post plus any replies / follow-up posts grouped by thread_items. Each dataset item contains one thread with all its posts.
Q: Can I filter by author only?
A: Yes. You can omit text and pass only from_author (and optional dates); the actor will still perform a single filtered search.
Q: What date format should I use?
A: Use "YYYY-MM-DD" strings, e.g. "2025-11-12". The actor sends them as before_date / after_date query parameters.
Q: Do I need a Threads account or cookies?
A: No. The actor only uses publicly available search results.
Changelog
- 1.0.0 – Initial release: Threads search scraper, thread-level items, summary statistics.
Sample run (demo)
Input
{"text": "te","before_date": "2025-11-12","after_date": "2025-11-01"}
Sample Dataset items
[{"type": "thread","thread_id": "3763948739171019822","query": "te","root_post": {"id": "3763948739171019822_63028951785","user": {"id": "63028951785","username": "_sebastiansantillan"},"caption": { "text": "Hola 🫣❤️" }},"posts": [{"id": "3763948739171019822_63028951785","caption": { "text": "Hola 🫣❤️" }}]}]
Sample SUMMARY.json
{"totalSearches": 1,"totalThreads": 1,"totalPosts": 1,"text": ["te"],"collectedAt": "2025-11-12T14:05:10Z"}
Happy scraping! 🚀