# Threads Keyword Search (`mambalabs/threads-keyword-search`) Actor

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.

- **URL**: https://apify.com/mambalabs/threads-keyword-search.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.13 / 1,000 post rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Threads Keyword Search

Search Threads for the words and phrases your buyers, competitors, and prospects use, and get one flat row per post that actually contains them: the text, the author, the publish date, likes, replies, reposts, quotes, and the post link. A post found by several keywords comes back once. Rows export to CSV or drop into a Clay table, a CRM import, or a social listening sheet.

### Features

- **Keyword search on Threads.** Up to 50 keywords per run, each searched the way Threads search works for a visitor.
- **Only posts that contain your keyword.** Threads search also returns posts that only loosely relate to the words you typed. By default a post is kept only when your keyword is in its text, words next to each other and in order, with case and punctuation ignored, so `cold email` matches `Cold-emails`. Choose all words in any order, or off to keep every result. Posts set aside are not charged.
- **No duplicates.** A post found by several keywords is returned once, and `matched_keywords` lists every keyword it matched.
- **Filters.** Only posts from the last N days, a minimum like count, and replies on or off.
- **Only new posts.** On a schedule, a post an earlier run returned is skipped and not charged, so each run returns what is new.
- **One summary row per keyword.** A free row per keyword says how many posts Threads returned, how many were delivered, and how many were set aside and why.
- **Cost guards.** Max posts per keyword and a max charge per run.

### How Threads is read

The actor opens the public Threads search page for each keyword, the page a browser that is not logged in sees, through the Apify proxy, and reads the posts the page carries. No Threads or Instagram account, no login, and no key are used, and no other developer's actor is called. A search the proxy pool cannot get through is retried on residential addresses.

Threads shows a visitor who is not logged in one page of results per search, about 20 to 25 posts, ranked by Threads. So each keyword returns at most about 25 posts per run. Use more specific keywords, several phrasings of one idea, or a schedule with Only new posts on to collect more over time.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `keywords` | array | | Words or phrases to search for, up to 50 |
| `max_posts_per_keyword` | number | `25` | Posts per keyword, up to 50 (Threads shows about 20 to 25) |
| `match_mode` | string | `phrase` | `phrase`, `all_words`, or `off` |
| `since_days` | number | | Set aside posts older than this many days |
| `min_likes` | number | | Set aside posts with fewer likes |
| `include_replies` | `true` or `false` | `true` | Return matching replies too |
| `only_new` | `true` or `false` | `false` | Skip posts an earlier run returned (free) |
| `state_key` | string | | Name for the only new posts memory |
| `max_charge_usd` | string | | Stop before a charge that would pass this amount |
| `proxy_mode` | string | `auto` | `auto` or `residential`. A reliability setting; it does not change what you pay |

### Output

| Field | Type | Example |
|---|---|---|
| `row_type` | string | `post`, `keyword_summary`, or `run_summary` |
| `keyword` | string | `cold email` |
| `matched_keywords` | array | `["cold email"]` |
| `match_type` | string | `phrase`, `all_words`, or `none` |
| `post_id` | string | `4017881578785193848` |
| `post_code` | string | `DfCYgIdE794` |
| `post_url` | string | `https://www.threads.com/@devinpcrudup/post/DfCYgIdE794` |
| `text` | string | `One cold email changed everything for me.` |
| `author_username` | string | `devinpcrudup` |
| `author_full_name` | string | `Devin P. Crudup` |
| `author_is_verified` | `true` or `false` | `false` |
| `author_profile_url` | string | `https://www.threads.com/@devinpcrudup` |
| `published_at` | string | `2026-10-28T12:00:30.000Z` |
| `like_count` | number | `7` |
| `reply_count` | number | `2` |
| `repost_count` | number | `1` |
| `quote_count` | number | `0` |
| `media_type` | string | `text`, `image`, `video`, `carousel`, or `other` |
| `link_url` | string | the link the post shares |
| `is_reply` | `true` or `false` | `false` |
| `is_new` | `true` or `false` | `true` with Only new posts on |
| `posts_found`, `rows_delivered`, `skipped_seen`, `skipped_filtered` | number | keyword summary counts |
| `row_status` | string | `ok`, `no_results`, `no_change`, `partial`, `blocked`, or `error` |
| `error_reason` | string | why a summary row is not ok |
| `billable_events_json` | string | `{"post-row":1}`, or `{}` for a free row |
| `scraped_at` | string | when the row was written |

### Pricing

Pay per event. You pay for post rows and the run start. Keyword summary rows, a refused input, posts set aside by your filters, and posts already delivered with Only new posts on are free.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| `post-row`, one Threads post that contains your keyword | $0.0025 | $0.002375 | $0.00225 | $0.002125 |
| `apify-actor-start`, once per run (one per GB of memory; the default 256 MB is one) | $0.0015 | $0.0015 | $0.0015 | $0.0015 |

Per 1,000 posts: $2.50 on the free plan, $2.13 on Gold.

Free plan cap: 1.50 USD of evaluation a month, about 600 post rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your `max_charge_usd`.

Mamba Labs pays the platform costs of your run, Apify proxy traffic included.

### Usage examples

**Apify Console or API.**

```json
{
  "keywords": ["cold email", "lead generation", "hubspot alternative"],
  "match_mode": "phrase",
  "since_days": 30,
  "only_new": true
}
```

Read the rows with `GET https://api.apify.com/v2/datasets/{datasetId}/items`.

**Clay.** Run the actor from a Clay HTTP column or the Apify integration and map the flat columns. Number and on or off inputs are text fields, which is what Clay sends: numbers as text and `true` or `false`. A list input takes a JSON list, so put the column inside a one item list.

**MCP.** The Mamba Labs MCP server `@mambalabsdev/mcp-threads-keyword-search` exposes the tool `search_threads_posts` to Claude and other MCP clients.

### Error handling

| Case | What you get |
|---|---|
| No keyword, more than 50, or a value the actor cannot read | One free row, `row_type` `run_summary`, `error_reason` starting `input_invalid:` with what to fix. The run ends successfully and charges nothing but the run start |
| Threads returns no posts for a keyword | A free summary row, `row_status` `no_results` |
| Every post is set aside by your filters | A free summary row, `row_status` `no_results`, with the counts |
| Threads refuses a search | Retried on a new address, then on residential addresses; if every route refuses, a free summary row with `row_status` `blocked` |
| No new posts with Only new posts on | A free summary row, `row_status` `no_change` |
| The run is close to its timeout | The actor stops starting new searches 90 seconds before the timeout and delivers what it has |

### Limitations

- 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.

### Mamba Labs actor suite

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Headcount Estimator](https://apify.com/mambalabs/company-headcount-estimator?fpr=mamba) | `aHC4GROnNt6kfZe5r` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Competitor Price, Stock, and Changelog Monitor](https://apify.com/mambalabs/competitor-price-stock-changelog-monitor?fpr=mamba) | `yxdgCbUQ4PYQWwRNU` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Contractor License Lookup](https://apify.com/mambalabs/contractor-license-lookup?fpr=mamba) | `WBYK3CPI2kdeq4bP1` |
| [Cookie Consent Audit](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Ecommerce Store Discovery](https://apify.com/mambalabs/ecommerce-store-discovery?fpr=mamba) | `PeHu4sLyFvQHXUUrX` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Monitor](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Change Tracker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Local Business Lead Builder](https://apify.com/mambalabs/local-business-lead-builder?fpr=mamba) | `qMN97aoHhsAS5bznV` |
| [Local Rank and Map Pack Tracker](https://apify.com/mambalabs/local-rank-map-pack-tracker?fpr=mamba) | `gv0kyHGDIg8XscclB` |
| [Lookalike Company Finder](https://apify.com/mambalabs/lookalike-company-finder?fpr=mamba) | `e2O426WBAbLLQL4Z2` |
| [Manufacturer and Supplier Finder](https://apify.com/mambalabs/manufacturer-supplier-finder?fpr=mamba) | `Qcsdmd0lUfPzVkonh` |
| [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Company Registrations Feed](https://apify.com/mambalabs/new-company-registrations-feed?fpr=mamba) | `g2WfZhWvCtc57g2Jo` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Newsletter Sponsor Tracker](https://apify.com/mambalabs/newsletter-sponsor-tracker?fpr=mamba) | `qSwpqxD1TiPZpLQHv` |
| [Open Tender and RFP Finder](https://apify.com/mambalabs/open-tender-rfp-finder?fpr=mamba) | `kPTGz6t6TFoUUyfaO` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [Partner and Member Directory Extractor](https://apify.com/mambalabs/partner-member-directory-extractor?fpr=mamba) | `ZX0XJPPUvnFJxeC1a` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person LinkedIn URL Resolver](https://apify.com/mambalabs/person-linkedin-url-resolver?fpr=mamba) | `ssuyPV8LnEsL8qbnb` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Personal Email to Company Resolver](https://apify.com/mambalabs/personal-email-to-company-resolver?fpr=mamba) | `AefT5Ye6YNPFQwJBf` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Podcast Guest and Host Finder](https://apify.com/mambalabs/podcast-guest-host-finder?fpr=mamba) | `o2MGSvgbSLeeXOsIo` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Public Feature Board and Roadmap Monitor](https://apify.com/mambalabs/public-feature-board-roadmap-monitor?fpr=mamba) | `rcHF5gj5r2Vqnry35` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Sequencer Event Poller](https://apify.com/mambalabs/sequencer-event-poller?fpr=mamba) | `S6s8Rjd61tGdrMRk4` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [VC and Accelerator Portfolio List Builder](https://apify.com/mambalabs/vc-accelerator-portfolio-list-builder?fpr=mamba) | `chH8hrfuoqqolW06m` |
| [WCAG Accessibility Audit](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Phrase and Business Model Classifier](https://apify.com/mambalabs/website-phrase-business-model-classifier?fpr=mamba) | `CBuZ9k7sRwBeiKiCS` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |

MCP servers for the suite are published under the npm scope [@mambalabsdev](https://www.npmjs.com/org/mambalabsdev).

Built by [Mamba Labs](https://apify.com/mambalabs).

# Actor input Schema

## `keywords` (type: `array`):

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_keyword` (type: `string`):

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_mode` (type: `string`):

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_days` (type: `string`):

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

## `min_likes` (type: `string`):

Optional. Set aside posts with fewer likes than this.

## `include_replies` (type: `string`):

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

## `only_new` (type: `string`):

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_key` (type: `string`):

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

## `max_charge_usd` (type: `string`):

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

## `proxy_mode` (type: `string`):

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.

## `source_tag` (type: `string`):

Internal attribution tag. Leave empty.

## Actor input object example

```json
{
  "keywords": [
    "cold email"
  ],
  "max_posts_per_keyword": "10",
  "match_mode": "phrase",
  "include_replies": "true",
  "only_new": "false",
  "proxy_mode": "auto"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `run_summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "cold email"
    ],
    "max_posts_per_keyword": "10"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/threads-keyword-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["cold email"],
    "max_posts_per_keyword": "10",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/threads-keyword-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "cold email"
  ],
  "max_posts_per_keyword": "10"
}' |
apify call mambalabs/threads-keyword-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/threads-keyword-search"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2OT8K8RiEEWtaj2MW/builds/EVBTyfWGaUy7ytSjj/openapi.json
