# Threads Scraper: Posts, Profiles, Replies and Search

> Threads scraper: get public posts from profiles, a post with replies, or keyword search. Likes, replies, reposts, media. No login, $1.50 per 1,000 posts.

URL: https://cliqtomedia.com/actors/threads-scraper/

Category: Social media & communities · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/threads-scraper?fpr=cliqto

Get public Threads posts without login. Use a profile, a post link or a keyword. Each post has likes, replies, reposts and author data.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `zuck` in Usernames. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Scrape public Threads posts with no login: the latest posts of a profile, one post with its replies, or the top posts for a keyword. Each post is one clean JSON row with text, date, likes, replies, reposts, media, the quoted post and the author with followers.



### Good for

- Track what a brand, creator or competitor posts on Threads, with likes, replies and reposts.
- Collect a post and its replies for sentiment or discussion analysis.
- Find top posts about a topic or hashtag.
- Feed clean, typed Threads rows into an AI agent, a spreadsheet or a database.

### Not a good fit

- Only public data. No DMs, no private profiles, nothing that needs login.
- No view counts, bios, followers lists or contact data.
- Some large profiles are shown only to logged-in visitors. They return `not_found`. The Actor does not try to get around this.
- Search returns the top ~25–30 posts per keyword. There is no "recent" search or date filter without login.
- Replies: only the first page that Threads shows without login, usually 10–15 replies.
- Counts are a snapshot at fetch time.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Start fee | $0.002 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |
| Post | $0.0015 (from $0.0012 on paid Apify plans) | One Threads post row saved to the Dataset (profile post, target post, reply or search result). |
| Empty result | $0.0005 | One input that returned no posts: a profile that does not exist, is private, has no posts or is shown only to logged-in visitors; a missing post; a search with no results. |

- One result: about $0.0035.
- 1,000 results: about $1.50.
- Every day 100 results, for 30 days: about $4.56 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/threads-scraper?fpr=cliqto

## Questions

### Why not use the official Threads API?

The official API needs an app, a token and a review. It mostly reads your own account.

### Why is there no view count?

Threads does not show views to logged-out visitors.

### Why does a big profile return not found?

Some large profiles are shown only to logged-in users.

### Do I need a Threads or Instagram account?

No. The Actor reads only public pages without login, cookies or tokens.

### Are the counts live?

They are a snapshot at `fetchedAt`. Run again to refresh them.

### Is the data complete?

It is what threads.com shows a logged-out visitor at fetch time. Deleted posts, private profiles and profiles that need login are not included, and some counts can be `null`.

### Is scraping Threads allowed?

The Actor reads only public pages at a modest rate and does not log in or bypass any wall. Meta's terms limit automated collection. You are responsible for how you collect, store and reuse the content, including personal data and authors' rights.

## Data fields

- `status` (string): complete = a post (one post event). not_found = unknown, private or empty input (one empty-result event). error = input failed (free).
- `statusReason` (string): Why a not_found or error row has no post.
- `errorCode` (string): Machine-readable reason, e.g. PRIVATE_PROFILE, NO_POSTS, NO_RESULTS, BLOCKED.
- `postId` (string): Threads post ID.
- `code` (string): Short post code from the URL.
- `url` (string): Post URL (or the input URL for not_found rows).
- `mode` (string): Mode of the run.
- `input` (string): Username, post URL or keyword this row came from.
- `role` (string): profile_post, search_result, target (the requested post), self_thread (author's thread continuation) or reply.
- `author` (object): username, fullName, userId, verified, followers (profile mode only, else null), profilePicUrl.
- `text` (string): Post text.
- `createdAt` (string): Publish time, ISO 8601 UTC.
- `likes` (integer): Like count.
- `replies` (integer): Direct reply count.
- `reposts` (integer): Repost count.
- `quotes` (integer): Quote count.
- `shares` (integer): Share count.
- `mediaType` (string): text, photo, video, carousel or other.
- `media` (array): Photos and videos: type, url, width, height, thumbnailUrl. Media URLs are signed and expire after some days.
- `quotedPost` (object): Quoted post: postId, url, username, text, createdAt.
- `repostedPost` (object): Reposted post: postId, url, username, text, createdAt.
- `isReply` (boolean): True when the post is a reply.
- `replyToUsername` (string): Username this post replies to.
- `linkUrl` (string): Link attached to the post (Threads redirect removed).
- `linkTitle` (string): Title of the attached link.
- `topic` (string): Topic tag of the post.
- `pinned` (boolean): Pinned to the author's profile.
- `fetchedAt` (string): When the row was scraped, ISO 8601 UTC.

## Input settings

- `mode` (string, required): profile: latest posts of each username. post: each post URL with its author's thread and the first page of replies. search: top posts for each keyword or hashtag. Only the list for the chosen mode is used.
- `usernames` (array): Profile mode. Up to 50 Threads usernames or profile URLs, e.g. zuck, @natgeo or https://www.threads.com/@zuck. Private and unknown profiles give a not_found row (one empty-result event).
- `postUrls` (array): Post mode. Up to 50 post links like https://www.threads.com/@zuck/post/DeZtp-TkQHh (threads.net links work too). Deleted or private posts give a not_found row (one empty-result event).
- `queries` (array): Search mode. Up to 50 keywords or hashtags, e.g. web scraping or #coffee. Threads shows logged-out visitors only the top ~25–30 posts per keyword, so add several specific keywords to get more posts.
- `maxItems` (integer): Limit per username, per post URL (the post, its thread and replies together) or per keyword, not per run. 1–500. You pay per post saved, not per limit.
- `includeReplies` (boolean): Post mode only. Also save the author's own thread continuation and the replies Threads shows without login (usually the first 10–15). Turn off to get only the post itself.
- `proxyConfiguration` (object): Apify Proxy (datacenter) is on by default: threads.com often answers Apify server IPs with HTTP 429 without it. Switch to Residential if runs come back with BLOCKED or RATE_LIMITED.

## Step by step on Apify

1. Open the Input tab.
2. Keep Mode on Profile posts and keep `zuck` in Usernames, or add your own.
3. Keep Max posts per input at `20` (prefill and default).
4. Click Start.
5. Open the Posts view in the Output tab and check `text`, `likes` and `author.followers`.

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Brand or creator monitoring | `mode: profile`, `usernames` | post | `text`, `createdAt`, `likes`, `replies`, `reposts` | Schedule the Actor, export to Sheets |
| Discussion analysis | `mode: post`, `postUrls` | post with `role` | `role`, `text`, `replyToUsername`, `likes` | Sentiment or topic analysis |
| Topic research | `mode: search`, `queries` | post | `text`, `author.username`, `likes`, `url` | AI summary, content ideas |
| Influencer shortlist | `mode: profile`, `usernames` | post with author | `author.followers`, `author.verified`, `likes` | Compare engagement per follower |

## Tips

- Use profile mode for the newest posts of an account.
- Search gives top posts only, so use several keywords.
- Expect about 10 to 15 replies per post without login.

## Limits



- Empty result: one per input that returned no posts: a profile that does not exist, is private, has no posts or is shown only to logged-in visitors; a missing post; a search with no results. It covers the requests made for that input.
- Actor start: charged by Apify once per run, per GB of memory. The default 512 MB counts as one.
- Free: `error` rows (Threads failed), duplicate posts and duplicate inputs.
- Up to 50 usernames, post URLs or keywords per run, and up to 500 posts per input.
- About 3,500 posts per run. In tests, 20 profiles × 200 posts gave 3,444 posts in 142 seconds. A bigger request stops at the Actor's internal time limit with `PARTIAL` and `SAFETY_LIMIT`, keeps the posts saved so far, and charges only for them. For more data, use several runs.
- A profile ends where its public feed ends, even if `maxItems` is higher.
- Search: top ~25–30 posts per keyword. Replies: the first page only, usually 10–15 per post.

## Sample result

```json
{
  "status": "complete",
  "statusReason": null,
  "errorCode": null,
  "postId": "4007137472223477566",
  "code": "DecNkzeCX8-",
  "url": "https://www.threads.com/@instagram/post/DecNkzeCX8-",
  "mode": "profile",
  "input": "instagram",
  "role": "profile_post",
  "author": {
    "username": "instagram",
    "fullName": "Instagram",
    "userId": "63404918397",
    "verified": false,
    "followers": 38354704,
    "profilePicUrl": "https://scontent-den2-1.cdninstagram.com/v/…"
  },
  "text": "@example_user made a whole retro wall phone by hand ☎️✨",
  "createdAt": "2026-10-13T16:14:12.000Z",
  "likes": 170,
  "replies": 10,
  "reposts": 6,
  "quotes": 1,
  "shares": 2,
  "mediaType": "video",
  "media": [
    { "type": "video", "url": "https://scontent-den2-1.cdninstagram.com/o1/v/…mp4?…", "width": 720, "height": 1280, "thumbnailUrl": "https://scontent-den2-1.cdninstagram.com/v/…jpg?…" }
  ],
  "quotedPost": null,
  "repostedPost": null,
  "isReply": false,
  "replyToUsername": null,
  "linkUrl": null,
  "linkTitle": null,
  "topic": null,
  "pinned": false,
  "fetchedAt": "2026-10-14T15:36:27.390Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/threads-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/threads-scraper").call(run_input={
    "mode": "profile",
    "usernames": [
        "zuck"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~threads-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "profile", "usernames": ["zuck"]}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/threads-scraper")
result = tool.invoke({"run_input": {"mode": "profile", "usernames": ["zuck"]}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Hear what people say about you](https://cliqtomedia.com/actors/use-cases/social-listening/): Find what people say about your brand and your topic on Bluesky, Hacker News, YouTube and more.

## Similar tools

- [Substack Newsletter Scraper](https://cliqtomedia.com/actors/substack-newsletter-scraper/)
- [Hacker News Stories & Comments Scraper](https://cliqtomedia.com/actors/hacker-news-stories-comments-scraper/)
- [Bilibili Scraper: Videos, Comments & Creators, No Login](https://cliqtomedia.com/actors/bilibili-scraper/)
- [Bluesky Scraper — Posts, Profiles, Feeds & Threads, No Login](https://cliqtomedia.com/actors/bluesky-scraper/)
- [Medium Article Scraper: Tags, Authors & Publications](https://cliqtomedia.com/actors/medium-articles-scraper/)
- [Pinterest Search Scraper: Pins & Boards, No Login](https://cliqtomedia.com/actors/pinterest-search-scraper/)
