# Threads User Reposts Scraper (`futurizerush/threads-user-reposts-scraper`) Actor

Collect public reposts from Threads profile Reposts tabs. Export each repost with the reshared original post's public details: author, text, timestamps, available engagement counts, media links when present, and source URLs for research and public content review.

- **URL**: https://apify.com/futurizerush/threads-user-reposts-scraper.md
- **Developed by:** [Rush](https://apify.com/futurizerush) (community)
- **Categories:** AI, Agents, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Threads User Reposts Scraper

Collect public reposts from a Threads profile's **Reposts** tab and export structured rows for review and download.

Use this Actor when you want to see what a public Threads user has reshared — who they reposted, when they reposted it, and the original post behind each repost with its available public details.

Looking for a user's own posts, profile, or Threads search instead? Try the companion [Threads Scraper — Posts, Profiles & Search](https://apify.com/futurizerush/meta-threads-scraper?fpr=rush).

[Explore more FuturizeRush Actors](https://apify.com/futurizerush?fpr=rush)

### What You Get

- Public repost rows from Threads profile Reposts tabs
- The reshared original post's public details on the same row: author, text, content type, timestamp, available engagement counts, media links when present, mentions, hashtags, and URLs
- Reposter details: username, display name, follower count when available, and the time the post was reshared
- Direct source URLs for both the repost and the original post
- A run summary with saved row counts and completion status

### How to Use

1. Paste one or more Threads profile URLs, Reposts tab URLs, or usernames.
2. Choose the maximum number of public repost rows to save per profile.
3. Start the Actor.
4. Review the default dataset view or download the results in your preferred format.
5. Open the run summary when you need saved row counts or completion status.

### Input

You can provide profile URLs, Reposts tab URLs, usernames, or a mix of them. Use up to 20 profiles per run.
`max_reposts_per_profile` accepts 10 to 5,000 and is a per-profile cap, not a promised result count. Use a larger value when you want the run to keep looking for public reposts until the selected cap is reached or no more public reposts are available during the run.

```json
{
  "profiles": [
    "https://www.threads.com/@natgeo"
  ],
  "max_reposts_per_profile": 20
}
````

### Output

Each saved row represents one public repost made by the requested profile, together with the reshared original post's available public details. The dataset is organized around three practical views, described under Dataset Views below.

#### Short Output Example

This synthetic, shortened example shows the most important fields. The Dataset schema defines the full export field list.

```json
{
  "record_type": "repost",
  "input_username": "sample_profile",
  "profile_username": "sample_profile",
  "reposted_at": "2026-01-20T09:15:00Z",
  "repost_url": "https://www.threads.com/@sample_profile/post/EXAMPLE_REPOST_ID",
  "conversation_index": 1,
  "original_post_url": "https://www.threads.com/@example_author/post/EXAMPLE_ORIGINAL_ID",
  "original_author_username": "example_author",
  "original_author_display_name": "Example Author",
  "original_author_is_verified": true,
  "original_content_type": "image",
  "original_content_preview": "A short look at today's highlights.",
  "original_text": "A short look at today's highlights.",
  "original_created_at": "2026-01-18T14:02:00Z",
  "original_like_count": 1280,
  "original_reply_count": 46,
  "original_repost_count": 88,
  "original_quote_count": 12,
  "original_share_count": 30,
  "original_view_count": null,
  "original_view_count_status": "not_available",
  "original_has_media": true,
  "original_media_type": "image",
  "original_media_url": "https://example.com/media/EXAMPLE_ORIGINAL_ID.jpg",
  "original_mentions": [],
  "original_hashtags": ["highlights"],
  "original_urls": [],
  "source_tab": "reposts",
  "scraped_at": "2026-01-20T09:20:00Z"
}
```

Fields that start with `profile_` describe the profile that reshared the post. `reposted_at` is when it was reshared. Fields that start with `original_` describe the original post that was reshared. `original_text` contains only visible text; media, GIFs, and stickers are represented by their own fields. View count status fields help distinguish available view counts from counts that were not publicly available during the run.

`conversation_index` is the saved result order for the requested profile.

### Dataset Views

- 🔁 Repost Review: the default view for reading each repost next to a preview of the original post
- 📊 Engagement: available public counts for each reshared original post, including view count status
- 🔗 Original Media & Links: media, stickers, URLs, mentions, and hashtags from the original post

Main dataset fields include the requested profile, the repost time, the original author, original content type, original preview and text, original post URL, available original engagement counts, view count status, media links when present, stickers when present, mentions, hashtags, and source timestamps. The dataset schema defines the complete field list for exports and advanced workflows.

### Common Use Cases

- Social listening and community research
- Understanding what a creator or brand amplifies
- Content curation and trend discovery
- Audience and engagement analysis
- Public Threads research datasets

### FAQ

#### Does this collect private content?

No. It is designed for public Threads profile pages and saves only public content that is available at run time.

#### What exactly is a repost here?

A repost is a post the requested profile reshared from another author on their public Reposts tab. Each saved row carries the reshared original post's public details in the `original_*` fields, so you can review the original without a separate lookup.

#### Can I choose how many reposts to save?

The selected maximum is a cap, not a promised result count. The Actor saves public reposts exposed on the requested profile's Reposts tab at run time, and the final run summary reports how many were actually saved. A profile with few public reposts will return fewer rows. Threads may limit or change what is publicly visible.

#### Why can `original_text` be empty?

`original_text` contains only visible text. An original post can still be valid when it is image-only, GIF-only, sticker-only, quote-only, or otherwise has no visible text. Use `original_content_type`, `original_content_preview`, `original_media_url`, `original_media_urls`, and `original_sticker_urls` to review those rows.

#### Why are some fields empty or null?

Some public pages expose different metrics or media details across rows. Unavailable text fields are saved as empty strings, while unavailable numeric or optional fields may be null.

#### Why can the number of reposts differ slightly between runs?

A profile's public Reposts tab is live. The profile can reshare new posts or remove older ones at any time, and a reshared original can be momentarily unavailable and then return. Each run captures the reposts that are publicly visible at that moment, from the newest ones up to the limit you set (or the profile's earliest public repost, whichever comes first). A small difference between runs usually reflects these real changes on the profile, or the momentary public availability of individual posts — for a point-in-time list, use the most recent run.

#### What if a run ends early or returns fewer results than expected?

Threads sometimes limits how much public content it serves at busy moments, which can cut a run short. If that happens, simply run it again — a fresh run usually completes. Splitting a large list into smaller runs, or spacing runs out, also helps.

#### Can I use profile URLs instead of usernames?

Yes. You can paste profile URLs such as `https://www.threads.com/@zuck`, Reposts tab URLs such as `https://www.threads.com/@zuck/reposts`, or usernames in the `profiles` field.

### Related Actors

This Actor collects the reposts made by a public profile. For posts, profiles, and search, or for replies, use the related Actors below.

- [Threads Scraper - Posts, Profiles & Search](https://apify.com/futurizerush/meta-threads-scraper?fpr=rush)
- [Threads Replies Scraper](https://apify.com/futurizerush/threads-replies-scraper?fpr=rush)

### Disclaimer

This Actor is intended for collecting publicly available Threads data for legitimate research, monitoring, and analysis.

- It is not affiliated with Threads, Meta, or Instagram.
- It does not collect private content.
- Public availability, structure, and completeness can change moment to moment; if a run ends early, running it again usually completes.
- Review your use case, applicable laws, platform terms, and privacy obligations before using or sharing collected data.

### Keywords

Threads scraper, Threads user reposts scraper, Threads reposts, Threads reshares, Threads profile reposts, Threads social listening, Threads engagement analysis, Threads audience research, Threads content curation, Apify Threads Actor, Claude Code, OpenClaw, Gemini, Antigravity, Codex, ChatGPT

# Actor input Schema

## `profiles` (type: `array`):

Paste up to 20 Threads profile URLs or usernames. Reposts tab URLs also work. Example: https://www.threads.com/@natgeo

## `max_reposts_per_profile` (type: `integer`):

Set a per-profile cap for public repost rows. The final saved count can be lower when fewer public reposts are available during the run.

## Actor input object example

```json
{
  "profiles": [
    "https://www.threads.com/@natgeo",
    "https://www.threads.com/@pts.news",
    "https://www.threads.com/@mosseri"
  ],
  "max_reposts_per_profile": 20
}
```

# Actor output Schema

## `reposts` (type: `string`):

Saved repost rows, each carrying the reshared original post's public detail fields.

## `summary` (type: `string`):

Final status, saved row counts, profile totals, and any profiles that could not be completed.

# 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 = {
    "profiles": [
        "https://www.threads.com/@natgeo",
        "https://www.threads.com/@pts.news",
        "https://www.threads.com/@mosseri"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("futurizerush/threads-user-reposts-scraper").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 = { "profiles": [
        "https://www.threads.com/@natgeo",
        "https://www.threads.com/@pts.news",
        "https://www.threads.com/@mosseri",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("futurizerush/threads-user-reposts-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "profiles": [
    "https://www.threads.com/@natgeo",
    "https://www.threads.com/@pts.news",
    "https://www.threads.com/@mosseri"
  ]
}' |
apify call futurizerush/threads-user-reposts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=futurizerush/threads-user-reposts-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Threads User Reposts Scraper",
        "description": "Collect public reposts from Threads profile Reposts tabs. Export each repost with the reshared original post's public details: author, text, timestamps, available engagement counts, media links when present, and source URLs for research and public content review.",
        "version": "0.0",
        "x-build-id": "jrhfDo8pqqOcQtFWN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/futurizerush~threads-user-reposts-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-futurizerush-threads-user-reposts-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/futurizerush~threads-user-reposts-scraper/runs": {
            "post": {
                "operationId": "runs-sync-futurizerush-threads-user-reposts-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/futurizerush~threads-user-reposts-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-futurizerush-threads-user-reposts-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "profiles"
                ],
                "properties": {
                    "profiles": {
                        "title": "👤 Threads profiles or usernames",
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "description": "Paste up to 20 Threads profile URLs or usernames. Reposts tab URLs also work. Example: https://www.threads.com/@natgeo",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 200
                        }
                    },
                    "max_reposts_per_profile": {
                        "title": "📊 Max reposts per profile",
                        "minimum": 10,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Set a per-profile cap for public repost rows. The final saved count can be lower when fewer public reposts are available during the run.",
                        "default": 20
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
