Threads Keyword Search

v1.0.0$0.0025/post rowSignal Detection

Last updated October 31, 2026

Search Threads by keyword and get one row per post that contains it: text, author, date, likes, replies, reposts, and the post link. Exact phrase matching, deduped across keywords, only new posts on a schedule. No login or key. CSV or Clay ready.

Install

bash
npx @mambalabsdev/mcp-threads-keyword-search

Every tool here also runs hosted, with no install at all, through Apify's MCP endpoint.

Features

  • Up to 50 keywords per run.
  • A post is kept only when your keyword is in its text, and posts set aside aren't charged.
  • A post found by several keywords comes back once.
  • Only new posts on a schedule, plus one free summary row per keyword.
  • Pay per event: Post row at $0.0025.

Input

keywordsarrayoptional

Words or phrases to search Threads for, one per line. Up to 50 per run. A post found by several keywords is returned once, with every keyword it matched in matched_keywords. A run with no keyword returns one free row that says so.

max_posts_per_keywordstringoptional

At most this many posts per keyword, up to 50. Threads shows a visitor who is not logged in one page of about 20 to 25 results per search, so a keyword rarely returns more than that.

match_modestringoptional

phrase (default): keep a post only when the keyword's words are in its text, next to each other and in order (case and punctuation ignored, so cold email matches Cold-emails). all_words: keep a post when every word of the keyword is in its text, in any order. off: keep every post Threads returns. Posts set aside are not charged.

since_daysstringoptional

Optional. Set aside posts older than this many days. 0 or empty: no date limit.

min_likesstringoptional

Optional. Set aside posts with fewer likes than this.

include_repliesstringoptional

On (default): replies that match are returned too, with is_reply true. Off: only top level posts.

only_newstringoptional

On: a post an earlier run already returned for the same keywords (or the same state key) is skipped and not charged, so a scheduled run returns only new posts. The ids are kept in a key-value store in your own Apify account. Off (default): every post is returned.

state_keystringoptional

Optional. A name for the only new posts memory, so two schedules keep separate memories.

max_charge_usdstringoptional

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

proxy_modestringoptional

auto (default): searches go through the Apify proxy pool, and a search the pool cannot get through is retried on residential addresses. residential: every search uses residential addresses. A reliability setting only; it does not change what you pay.

Output schema

json
{
  "row_type": "string",
  "keyword": "string",
  "matched_keywords": "array",
  "match_type": "string",
  "post_id": "string",
  "post_code": "string",
  "post_url": "string",
  "text": "string",
  "author_username": "string",
  "author_full_name": "string",
  "author_is_verified": "boolean",
  "author_profile_url": "string",
  "published_at": "string",
  "like_count": "integer",
  "reply_count": "integer",
  "repost_count": "integer",
  "quote_count": "integer",
  "media_type": "string",
  "link_url": "string",
  "is_reply": "boolean",
  "is_new": "boolean",
  "posts_found": "integer",
  "rows_delivered": "integer",
  "skipped_seen": "integer",
  "skipped_filtered": "integer",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.0025per post row
EventFree plan price
Post row$0.0025
Actor Start$0.0015

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 600 post rows. Any paid Apify plan removes the cap.

Limits

  • About 20 to 25 posts per keyword per run: Threads shows a visitor who is not logged in one page of results, ranked by Threads, not newest first.
  • Some short or unusual keywords return no posts to a visitor who is not logged in, even when posts with those words exist.
  • Like, reply, and repost counts are read at the time of the run.
  • Posts from private profiles are not shown by Threads search, so they are not returned.