Skip to content
Social media Apify Actor

Threads Scraper for public posts.

Threads Scraper is a BatScrape Actor on Apify that searches Threads by keyword or collects a public account’s latest posts. It returns one JSON record per unique post, with text, author details, engagement counts, topics, mentions, links and media URLs.

Runs in your Apify account. Export JSON or CSV.

  • Posts
  • Public accounts
  • Engagement
  • Topics & media
Threads in action Illustrative demo
01 / INPUT

Set the input

Choose a keyword to search on Threads.

Search keywords Or usernames
coffee Keyword
Result limit 10
Output format Structured JSON

Example configuration · Run your own search on Apify.

02 / RESULT

Preview a record

Each result includes the creator and engagement data.

Made-up values · Actual field names · No live request.

03 / EXPORT

Export JSON

Use the structured dataset in your research or automation.

dataset-item.json JSON
{
  "id": "3900123456789012345",
  "code": "ExamplePost",
  "url": "https://www.threads.com/@example_creator/post/ExamplePost",
  "text": "A slow morning, a fresh coffee and a new idea.",
  "createTime": 1791288000,
  "createDate": "2026-10-06",
  "mediaType": "text",
  "isEdited": false,
  "isReply": false,
  "replyControl": "everyone",
  "authorMeta": {
    "id": "123456789",
    "name": "example_creator",
    "nickname": "Example Creator",
    "verified": false,
    "isPrivate": false
  },
  "statistics": {
    "likeCount": 128,
    "replyCount": 16,
    "repostCount": 7,
    "quoteCount": 3,
    "shareCount": 12
  },
  "topic": "Coffee",
  "mentions": [],
  "links": [],
  "searchKeyword": "coffee",
  "inputKeyword": "coffee"
}
Download sample JSON

Use it for brand monitoring, competitor research, creator comparisons or datasets of public conversations. Supply keywords, usernames or both. It runs in your Apify account without a Threads login or cookies.

What it collects

  • Posts: ID, shortcode, URL, text, publish time and date, media type and reply status.
  • Authors: account ID, username, verification status, avatar URL and privacy flag.
  • Engagement: likes, replies, reposts, quotes and shares.
  • Context: topic tags, mentions, outbound links and link previews when available.
  • Media: image and video URLs, dimensions and audio flag when available.
  • Attribution: the keyword or username that first found each unique post.

How it works

Keyword searches collect top matches first, then search backwards day by day within the requested date window. A search stops at its limits, budget, start date or when it no longer finds enough new results. Date filters and per-keyword limits apply only to keyword searches.

Username inputs fetch each account’s latest public posts once; they do not paginate through its full history. The Actor deduplicates across keywords and accounts within the run, stores each post once and attributes it to the first source that found it.

Use cases

  • Brand teams — monitor public posts mentioning a brand, product or campaign term.
  • Social media analysts — follow competitor accounts and compare post engagement.
  • Researchers — collect public posts within a keyword search date window.
  • Data teams — schedule recurring account snapshots and export posts to downstream workflows.

Input

Set these in the Actor’s input form on Apify, or send them as JSON through the API.

  • keywords — Search terms, one per line. Supply keywords, usernames or both; at least one source is required. Enter plain terms without #: Threads uses topic tags rather than hashtags.
  • usernames — Public usernames with or without @, or Threads profile URLs. Each account returns its latest public posts, typically about 15–30, rather than its full history.
  • maxItemsPerQuery — Keyword-only post cap. Empty means 100; 0 removes the per-keyword limit up to 5,000. This is a cap, not a guaranteed result count, and it does not apply to account inputs.
  • startDate endDate — Inclusive YYYY-MM-DD dates for keyword searches only. An empty end date starts from today; an empty start date allows searching up to one year back from the end date. Run limits can stop the search sooner.
  • maxItems — Overall post cap across keywords and accounts combined. 0 or empty means unlimited. Set a positive cap for a bounded sample.
  • customMapFunction — Optional JavaScript function that takes an output object and returns a transformed object. Use it to reshape fields, never to filter posts. Leave empty to preserve the original item.

Custom map function

Use customMapFunction to add a field or reshape each output record. This example labels the source:

(object) => ({ ...object, source: "threads" })

The input schema requires a transformed object for each item.

  • Return an object for every input record.
  • Do not use the function to filter posts.

The input form warns that accounts using the map function for filtering may be banned.

Input tips

Start with a keyword sample

Use a small total cap to inspect the output before increasing your run size.

{
  "keywords": [
    "coffee"
  ],
  "maxItemsPerQuery": 10,
  "maxItems": 10
}

Collect an account’s latest posts

Enter usernames or profile URLs. Schedule recurring runs if you need to follow future activity; this mode does not retrieve a complete account archive.

{
  "usernames": [
    "zuck"
  ],
  "maxItems": 20
}

Search a date window

Keep the keyword window focused and set both a per-keyword cap and a total cap. Dates do not filter account results.

{
  "keywords": [
    "coffee",
    "espresso"
  ],
  "startDate": "2026-10-01",
  "endDate": "2026-10-07",
  "maxItemsPerQuery": 100,
  "maxItems": 150
}

Output

Each run writes its results to an Apify dataset. Each item is one unique Threads post. Keywords with no matches and unavailable or private accounts add no placeholder rows. Optional fields may be absent when Threads does not return them.

These are the main fields of an item.

  • id code url text — Post identifiers, public URL and text.
  • createTime createDate mediaType — Publish timestamp in Unix seconds, UTC date and media type.
  • authorMeta — Author ID, handle (name), verification, avatar URL and privacy flag. A display name (nickname) may appear on keyword results.
  • statistics — likeCount, replyCount, repostCount, quoteCount and shareCount.
  • topic mentions links linkPreview — Topic tag, mentioned usernames, outbound links and a link preview when available.
  • mediaMeta — Media dimensions, audio flag, image URLs and video URLs. Media files are not downloaded.
  • isEdited isReply replyControl replyToUsername — Edit and reply flags, reply setting and the replied-to username when present.
  • searchKeyword inputKeyword inputUsername — First-source attribution: keyword fields for search results, or inputUsername for account results.
{
  "id": "3900123456789012345",
  "code": "ExamplePost",
  "url": "https://www.threads.com/@example_creator/post/ExamplePost",
  "text": "A slow morning, a fresh coffee and a new idea.",
  "createTime": 1791288000,
  "createDate": "2026-10-06",
  "mediaType": "text",
  "isEdited": false,
  "isReply": false,
  "replyControl": "everyone",
  "authorMeta": {
    "id": "123456789",
    "name": "example_creator",
    "nickname": "Example Creator",
    "verified": false,
    "isPrivate": false
  },
  "statistics": {
    "likeCount": 128,
    "replyCount": 16,
    "repostCount": 7,
    "quoteCount": 3,
    "shareCount": 12
  },
  "topic": "Coffee",
  "mentions": [],
  "links": [],
  "searchKeyword": "coffee",
  "inputKeyword": "coffee"
}
Illustrative record: real field names, made-up values, trimmed.
{
  "id": "3900123456789012346",
  "code": "ExampleAccountPost",
  "url": "https://www.threads.com/@example_creator/post/ExampleAccountPost",
  "text": "Notes from today’s design session.",
  "createTime": 1791288000,
  "createDate": "2026-10-06",
  "mediaType": "text",
  "authorMeta": {
    "id": "123456789",
    "name": "example_creator",
    "verified": false,
    "isPrivate": false
  },
  "statistics": {
    "likeCount": 54,
    "replyCount": 8,
    "repostCount": 2,
    "quoteCount": 1,
    "shareCount": 4
  },
  "inputUsername": "example_creator"
}
Illustrative account result: `inputUsername` records the source account instead of keyword attribution. Made-up values, trimmed.

How to run it

  1. Open the Actor on Apify, listed as “Threads Scraper”, and sign in. You need an Apify account.
  2. Fill in the Input tab, then click Start.
  3. When the run finishes, open the Output tab and click Export to download the dataset as JSON, CSV or another format.

Or send the same input to the Apify API. This call runs the Actor and returns its dataset items. Replace $APIFY_TOKEN with the API token from your Apify Console.

curl -X POST \
  "https://api.apify.com/v2/actors/batscrape~threads-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["coffee"],"maxItemsPerQuery":10,"maxItems":10}'

The call waits up to 300 seconds. For a longer run, start it asynchronously and read the dataset when it finishes. Read the Apify API reference.

New to Apify? See how BatScrape Actors run on Apify. To run it on a schedule, or send results on when a run finishes, see schedules and webhooks.

Pricing

Pay per event: an Actor-start event and delivered unique-post events. Within a run, a post found by multiple keywords or accounts is stored and charged once. Check the listing for current event rates and your Apify account for applicable platform charges. See current rates on Apify .

Limitations

  • Only public data is available. Private accounts and deleted or unavailable posts are not accessible.
  • Account mode returns recent posts only, typically about 15–30 per account, without full-history pagination. Date filters and per-keyword caps do not apply to it.
  • Reply counts are included, but the Actor does not collect the replies or comments underneath each post. It does not return view counts or follower counts.
  • Keyword limits are upper bounds. Available posts, search behaviour, date windows and budget can reduce the result count.
  • On the Apify free plan, the Actor allows one request: the first page of one keyword or account. A paid plan removes that Actor restriction.
  • Signed media URLs can expire. The Actor returns URLs, not downloaded media files.

FAQ

Answers from the Actor’s README on Apify.

Do I need a Threads account or cookies?

No. The Actor collects public Threads data without a Threads login or cookies. You need an Apify account to run it.

Can I search keywords and accounts in the same run?

Yes. Supply keywords, usernames or both. The total maxItems cap covers all sources, and each unique post is stored once, attributed to the first source that found it.

Can I collect every post from an account?

No. Account inputs fetch the latest public posts once, typically about 15–30. Schedule recurring runs to follow new activity; historical keyword search does not turn account mode into a full archive.

Does it scrape replies and comments?

It returns reply counts and can identify a result that is itself a reply through isReply. It does not expand the conversation or scrape replies underneath a post.

Why did my run return fewer posts than the limit?

Limits are caps, not targets. A search can exhaust available results or reach its date window or budget. Account mode has a recent-post limit, and the Apify free plan restricts the Actor to one request.

Can I export Threads posts as CSV?

Yes. Results are saved to an Apify dataset as structured records. Export the dataset as JSON, CSV or another supported format from Apify Console, or retrieve items through the API.

Other BatScrape Actors

  • TikTok Shop Scraper — Scrape US TikTok Shop products by keyword or store, and full product pages and buyer reviews from product URLs. Export prices, discounts, ratings, units sold, SKU stock and shipping.
  • Reddit Scraper — Search Reddit posts or comments by keyword across all subreddits. Export titles, text, subreddits, authors, scores and comment counts, sorted by relevance, newest, top or most comments.
  • Realtor.com Scraper — Scrape Realtor.com for-sale, rental and sold listings by city, ZIP code or URL. Export price, beds, baths, photos, sale and tax history, schools and agents.
  • TikTok Scraper — Search TikTok by keyword and export unique videos with creator profiles, engagement stats, music, hashtags and media URLs. Sort by relevance or likes, filter by date and region.
  • Douyin Scraper — Search Douyin (抖音), also known as TikTok China, by keyword. Export unique posts with creator profiles, engagement stats, music and media URLs.
  • FollowScores Scraper — Extract live football fixtures, results and team profiles for 11 European competitions and 214 teams.

Every published Actor is on the scrapers hub.

YOUR NEXT DATASET STARTS HERE

Scrape at scale. Build with better data.

Discover our scraping actors on Apify. Configure your source and connect the results to your workflow.

  • Run actors on Apify
  • Export JSON or CSV
FROM SOURCE TO DATASET
Apify 02 / Run

03 / Use your data

JSON Apps & APIs
CSV Sheets & analysis
Ready for your workflow

Your source. Your Apify account. Your data.

Purpose-built actors. One place to start. Explore the scraper collection