Threads Search & Profile Posts Scraper | No Login avatar

Threads Search & Profile Posts Scraper | No Login

Pricing

from $1.70 / 1,000 threads posts

Go to Apify Store
Threads Search & Profile Posts Scraper | No Login

Threads Search & Profile Posts Scraper | No Login

Search public Threads posts with literal word, phrase or hashtag matching, or download posts from profiles. Filter by author and dates. Export text, links, engagement and media. No login or cookies required.

Pricing

from $1.70 / 1,000 threads posts

Rating

5.0

(1)

Developer

Scraping Solutions

Scraping Solutions

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

14

Monthly active users

10 days ago

Last modified

Share

Threads Search & Profile Posts Scraper

Search public Threads posts by literal keyword, exact phrase or hashtag, or collect available posts from public profiles. Export post text, links, authors, publication times, available engagement and media to JSON, CSV or Excel. No Threads login or cookies required.

Two Download Modes

ModeInputPurpose
keywordKeywords, phrases or hashtagsFind public posts whose text contains the complete term. Optionally restrict searches by author and dates.
profileUsernames or profile URLsCollect available public posts from specific accounts, without requiring a keyword.

Use one mode per run. To search within one account, use keyword with fromUsername. To download that account's posts without a keyword, use profile.

Quick Start

  1. Choose Search by keyword or Posts from profiles.
  2. Fill only the corresponding list. Remove the keyword example when switching to profile mode.
  3. Start with 20 results per input. Optional author, date and ordering filters apply only to keyword searches.
  4. Set an appropriate maximum run charge and start the Actor.
  5. Export the dataset. Open Storage > Key-value store > OUTPUT for source counts, rejected entries, stop reasons and charged events.
{
"mode": "keyword",
"keywords": ["AI", "machine learning"],
"maxResultsPerInput": 20,
"sort": "top"
}

Search Within an Author and Date Range

{
"mode": "keyword",
"keywords": ["AI"],
"fromUsername": "meta",
"oldestPostDate": "2026-09-01",
"newestPostDate": "2026-09-27",
"sort": "top",
"maxResultsPerInput": 20
}

Profile Posts

{
"mode": "profile",
"usernames": ["meta", "https://www.threads.com/@zuck"],
"maxResultsPerInput": 20
}

Input

FieldDefaultBehavior
modekeywordkeyword or profile.
keywordsNoneRequired for keyword mode. 1-100 entries, each 1-500 characters. The complete word, phrase or hashtag must occur in the post text. Plain text, not a Boolean query language.
usernamesNoneRequired for profile mode. 1-100 usernames or Threads profile URLs. No emails or post URLs.
maxResultsPerInput1000-100,000 unique posts per input. 0 requests all available within safeguards, not unlimited or guaranteed coverage.
sorttoptop or recent for keyword searches. Top is recommended because it generally returns more unique matches per request, but its ranking is service-defined and is not guaranteed to sort by likes. Ignored in profile mode.
fromUsernameEmptyOptional author restriction for keyword mode. Accepts a username or Threads profile URL. The returned author's username must match exactly, ignoring case, before saving or charging.
oldestPostDateEmptyInclusive oldest UTC calendar date, YYYY-MM-DD. Single-digit month/day values are normalized.
newestPostDateEmptyInclusive newest UTC calendar date, YYYY-MM-DD. Must not precede the oldest date.

Date filters are sent to the search service and enforced again locally using each post's UTC publication date. Both calendar-date boundaries are inclusive. Posts outside the range, or without a usable publication date while a date filter is active, are discarded before saving or charging. Date filters do not apply to profile mode. The Actor rejects unsupported combinations rather than silently ignoring them.

Literal keyword verification: search discovery can return recommendations that do not contain the requested term. The Actor checks every candidate locally before saving or charging it. Matching ignores case and normalizes whitespace. Short ASCII words use word boundaries, so AI matches AI and #AI but not daily or said. A multi-word entry must appear as the complete phrase in the same order. A hashtag entry such as #AI requires the hashtag, not just the word. Other writing systems use normalized literal substring matching. Posts without usable text are rejected in keyword mode. The Actor continues pagination after filtered pages while cursors, budget and safeguards allow it.

Author verification: fromUsername is sent to the search service and also checked against each returned post's author username. Posts from other authors or without an author username are discarded before saving or charging. A display name, text mention or quoted author is not a match. Pagination continues when a filtered page still has a next cursor, within the same budget and request safeguards. Filtering can reduce the final result count; it does not guarantee that all of an author's posts will be found.

The exact-author path has been verified with a non-empty cloud run. A combined author-and-date live sample returned no posts, so non-empty combined results remain unverified. recent did not always return posts in strict timestamp order; top returned a different result set, but ranking correctness has not been independently verified.

Invalid entries are reported by position and reason, without echoing accidentally pasted sensitive data. Valid entries continue. If no valid entry remains, the run fails with INVALID_INPUT before any data request.

Output Fields

One row represents one unique post. Optional fields are omitted when absent; an unavailable count is never replaced with a made-up zero. Actual zero values remain 0.

FieldDescription
sourceTypekeyword or profile.
sourceValueKeyword or normalized profile that first produced this post.
postIdPost identifier preserved as a string. Current responses use numeric media IDs in both modes; the older profile format uses shortcodes.
postUrlPublic post link when supplied or constructible from the returned author and shortcode.
textPost text, when present.
username, fullNamePublic author details.
profileUrl, profilePicUrlProfile and picture links when available.
isVerifiedAuthor verification flag when returned.
publishedAtPublication time in UTC when supplied as a usable timestamp.
likesCount, commentsCountAvailable likes and direct comment/reply counts.
repostsCount, sharesCount, quotesCountAvailable engagement counts. These are separate metrics, not interchangeable.
isReplyWhether the result is a reply, when reported.
imageUrls, videoUrlsAvailable media URLs; these can expire.
scrapedAtExtraction timestamp in UTC.

Example Output

Illustrative record, not a promise that every result contains every field:

{
"sourceType": "keyword",
"sourceValue": "AI",
"postId": "1234567890123456789",
"username": "example",
"profileUrl": "https://www.threads.com/@example",
"text": "An example post about AI.",
"likesCount": 0,
"commentsCount": 2,
"isVerified": false,
"publishedAt": "2026-09-27T10:00:00Z",
"scrapedAt": "2026-09-27T12:00:00Z"
}

Pricing

The Actor uses pay per unique saved post, with one result event. There are no start, page, retry or duplicate charges. Platform usage is included.

Apify planPrice per 1,000 saved posts
Free$2.00
Starter / Bronze$1.90
Scale / Silver$1.80
Business / Gold$1.70
Platinum / Diamond$1.70

Search filters do not create a separate page charge. A run with no saved posts produces no result events. A partially completed run bills only the posts already saved.

Free Plan Limits

Trial limits follow the existing Threads relationship Actor policy, independently tracked for this Actor:

Execution originInputs processedMaximum runs per UTC dayReserved posts per UTC day
WebFirst valid input151,750
API, MCP and other non-Web originsFirst valid input51,000

The smaller of your requested maximum and remaining allowance applies. Reservations are consumed at the start of eligible runs, even if fewer posts are returned. Reserved allowance is not a charge: only saved posts generate result events. Paid subscribers can process all valid inputs within budget and internal safeguards.

Reliability, Large Requests and Resume

  • Posts stream to the dataset as each page is processed. Already saved posts remain available after a later failure.
  • Deduplication is global within the run, including across keywords/profiles. A post appears once and belongs to the first input that found it.
  • Transient errors receive at most two retries with increasing delays. Access denial stops all extraction; an unavailable profile does not block other profiles.
  • Budget checks occur before data requests and writes. A small budget is allowed; the Actor does not require funding the entire requested maximum upfront.
  • Repeated cursors or three duplicate-only pages stop pagination. An internal 1,000-request safeguard includes retries.
  • If a non-empty response has no usable pagination information, results are retained and the summary reports PAGINATION_UNAVAILABLE; it does not claim that all posts were downloaded.
  • Same-run platform migrations restore the stored checkpoint. Locally, rerun with the same input and storage directory. Limits can increase, but sources and filters must stay unchanged.
  • A brand-new cloud run does not automatically resume an earlier run. No customer continuation token is implemented in this version.
  • A local checkpoint from an older version can resume only if its saved posts satisfy the requested author filter. Otherwise, the Actor stops before any new write or charge and asks for fresh storage; it does not delete or rebill existing posts.
  • Start with a 5-minute timeout for small pilots. For larger requests, use the measured request count and duration from a pilot to choose a larger timeout. High limits do not guarantee more available posts.

Summary and Audit

OUTPUT lists results, duplicates, requests, average page size and stop reasons per source. keywordFiltered counts deduplicated candidates rejected by literal term verification. authorFiltered counts candidates rejected by the author check after keyword verification; authorMissing is the subset without a usable author username. dateFiltered counts candidates outside the inclusive UTC range; dateMissing is the subset without a usable publication date. The private audit stores the same count-only metrics without recording queries or authors. These counts are not charges.

SUCCESS includes reaching the requested maximum or a confirmed natural end with saved results. PARTIAL requires a real interruption, such as missing pagination, a later service failure or exhausted budget. A confirmed natural end without any accepted posts is NO_RESULTS, including when all posts were rejected by the author filter.

A separate private audit dataset stores counts, run context and sanitized errors. It does not store keyword text, profile identifiers, post content, credentials or pagination cursors, and it does not create result charges.

Known Limitations

  • Only publicly accessible content is supported. Private/restricted content is unavailable.
  • Discovery is service-ranked and is not exhaustive full-text indexing or guaranteed historical coverage. Literal verification improves precision but cannot create candidates that discovery did not return.
  • Boolean operators, language filtering and minimum-engagement filters are not implemented. Literal keyword/phrase/hashtag and exact author verification are enforced locally.
  • Search and profile feeds may expose different fields, availability and page sizes.
  • Two-page keyword and profile pagination has been verified with live responses. This does not establish unlimited access or exhaustive historical coverage.
  • Media files are not downloaded; available URLs are returned.

FAQ

Can I download posts from several profiles or keywords? Yes, with a paid subscription. Free processes the first valid input only.

Can I combine keywords and profile lists in one run? No. Select a mode. For a keyword within one author, use fromUsername.

Does AI AND marketing enforce Boolean matching? No. It is treated as one literal phrase, including the word AND. Submit AI and marketing as separate entries for two independent searches. This Actor does not evaluate Boolean expressions.

Why are many discovered posts not delivered? The search service can return recommendations unrelated to the literal query. They are counted as keywordFiltered and are neither saved nor charged.

Why did I receive fewer posts than requested? Availability, overlapping results, service limits, pagination or your budget may reduce the result count. Inspect OUTPUT.

Are duplicates charged? No. Posts are deduplicated by ID before writing and charging.

Are empty searches or retries charged? They do not produce result events.

Does Top mean most likes? No. Ranking is controlled by the search service.

Can I filter dates on a profile download? Not in this version. Author/date filtering is supported only for keyword searches.

Can I export to CSV or Excel? Yes, from the Apify dataset export menu.

Can I resume without starting over? Same-run migration and local checkpoint recovery are supported. Cross-run continuation is not implemented.

Responsible Use and Support

Use public data responsibly, respect applicable privacy requirements and platform terms, and do not use this Actor for spam or harassment. Report issues with the run ID, mode and sanitized input. Never share credentials or internal cursors in a public issue.

Categories

Social Media, Marketing, Lead Generation.