Threads Search Post Scraper avatar
Threads Search Post Scraper

Pricing

$2.00 / 1,000 threads

Go to Apify Store
Threads Search Post Scraper

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

Tran Tu

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

7 hours ago

Last modified

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:

    • text queries (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_post and full posts array for that 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 text is:

    • a string → one search
    • an array → one search per query value
  • If text is 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

FieldTypeRequiredNotes
textstringstring[]No
before_datestringNoUpper date filter, passed as before_date query param (YYYY-MM-DD).
after_datestringNoLower date filter, passed as after_date query param (YYYY-MM-DD).
from_authorstringNoFilter by Threads username (without @).
timeoutMsnumberNoPer-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_id is taken from the thread node or the first post in the thread.
  • root_post is the first post in thread_items.
  • posts includes 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 executed
  • totalThreads – number of unique threads across all results
  • totalPosts – number of unique posts across all threads
  • text – distinct non-empty query strings used in this run

Quick start (no code)

  1. Open the actor in Apify → click Run

  2. Paste your JSON input (see example above)

  3. Start the run

  4. 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 token
const client = new ApifyClient({
token: '<YOUR_API_TOKEN>',
});
// Prepare Actor input
const 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 finish
const 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! 🚀