# Threads Monitor: Public Post Changes (`getascraper/threads-mention-delta-monitor`) Actor

Monitor public Threads profiles and post URLs for new or changed post records. Emit compact change-only datasets by default and keep reusable monitoring state for schedules and automations.

- **URL**: https://apify.com/getascraper/threads-mention-delta-monitor.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.31 / 1,000 post changes

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Monitor: Public Post Changes

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F5F3FF;border:1px solid #DDD6FE;border-top:4px solid #4F46E5;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Catch public Threads post changes without reopening every profile.</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Monitor chosen Threads profiles and posts, then receive structured records when visible content is new or changed.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#3730A3">🎯 Exact targets</span><br>
<span style="font-size:12px;color:#57534E">Keep each watchlist focused on the public URLs that matter</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#3730A3">🔄 Change focused</span><br>
<span style="font-size:12px;color:#57534E">Receive new and changed posts by default</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#3730A3">💬 Mention context</span><br>
<span style="font-size:12px;color:#57534E">Review mentioned accounts beside the public post text</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#3730A3">📏 Bounded runs</span><br>
<span style="font-size:12px;color:#57534E">Control targets and records for predictable scheduled checks</span>
</td>
</tr>
</table>

### 🔍 What does Threads Monitor do?

Threads Monitor checks specific public [Threads](https://www.threads.com/) profile and post URLs. It returns structured public post records and labels each one as `new`, `changed`, or `unchanged`.

By default, unchanged posts stay out of the dataset. This keeps scheduled alerts and downstream workflows focused on real changes.

Use it for brand mention review, creator tracking, public statement monitoring, research, or an internal watchlist. This v1 accepts direct URLs only. It does not offer broad keyword search.

### 🎯 Why use it?

- **I am a communications lead** watching selected public accounts so I can review new statements without checking each profile by hand.
- **I am a researcher** building a dated record of visible posts from the moment my watchlist starts.
- **I am an automation builder** sending only new or changed records into alerts and follow-up workflows.
- **I am a social analyst** reviewing mentioned accounts beside the surrounding public post text.

### ⚙️ How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Add public URLs</span><br>
<span style="font-size:12px;color:#57534E">Paste the Threads profiles or posts you want to watch.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set the run size</span><br>
<span style="font-size:12px;color:#57534E">Choose a bounded record limit and a saved state key.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F5F3FF;border:1px solid #DDD6FE;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#4F46E5;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run or schedule</span><br>
<span style="font-size:12px;color:#57534E">Reuse the same state key to receive later changes.</span>
</td>
</tr>
</table>

### 📥 Input

| Field                | Type          | Required | Description                                                                                   |
| -------------------- | ------------- | -------- | --------------------------------------------------------------------------------------------- |
| `targetUrls`         | array of URLs | Yes      | Direct public Threads profile or post URLs. Up to 20 targets per run.                         |
| `maxItems`           | integer       | No       | Maximum unique post records inspected across all targets. Defaults to 5 and is capped at 100. |
| `includeUnchanged`   | boolean       | No       | Includes unchanged records when enabled. Defaults to false.                                   |
| `stateKey`           | string        | No       | Selects the saved comparison history. Reuse it for the same monitor.                          |
| `proxyConfiguration` | object        | No       | Optional connection settings. Direct access is the default.                                   |

Example input:

```json
{
    "targetUrls": [{ "url": "https://www.threads.com/@zuck" }],
    "maxItems": 5,
    "includeUnchanged": false,
    "stateKey": "executive-watch"
}
```

### 📤 Output

The first successful check labels discovered records as `new`. Later checks compare each canonical post URL and its public content with saved state. A changed content identifier produces `changed`; an identical one produces `unchanged`.

You can download the dataset as JSON, CSV, Excel, XML, or HTML. A simplified record from a public Threads page looks like this:

```json
{
    "postUrl": "https://www.threads.com/@zuck/post/DZpPDXbCeTt",
    "profileUrl": "https://www.threads.com/@zuck",
    "authorUsername": "zuck",
    "text": "500M monthly actives on Threads in less than 3 years. Thanks for making this platform what it is. 🙏",
    "publishedAt": "2026-06-16T10:59:56.000Z",
    "changeType": "new"
}
```

### 🧾 Data table

| Field                 | Type   | Description                                          |
| --------------------- | ------ | ---------------------------------------------------- |
| `targetUrl`           | string | Canonical input URL that produced the record.        |
| `postUrl`             | string | Canonical public post URL.                           |
| `profileUrl`          | string | Public author profile URL.                           |
| `authorUsername`      | string | Public Threads username.                             |
| `text`                | string | Visible post text when present.                      |
| `publishedAt`         | string | Source publication timestamp when available.         |
| `imageUrls`           | array  | Public post image URLs when present.                 |
| `videoUrls`           | array  | Public post video URLs when present.                 |
| `mentions`            | array  | Public account usernames mentioned in the post.      |
| `changeType`          | string | `new`, `changed`, or `unchanged`.                    |
| `fingerprint`         | string | Identifier for the current public URL and content.   |
| `previousFingerprint` | string | Previous identifier when a record was already known. |
| `firstSeenAt`         | string | Time this monitor first observed the post.           |
| `lastSeenAt`          | string | Most recent successful observation time.             |
| `collectedAt`         | string | Time this output record was collected.               |

Missing source values are omitted. The Actor does not insert placeholder data.

### 💰 Pricing

Pricing is pay per result. There is no subscription. Runs with no emitted changes create no result charges, though normal platform compute usage can still apply. Keeping `includeUnchanged` off usually produces the smallest recurring dataset.

### ⭐ Enjoying Threads Monitor?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F5F3FF;border:1px solid #DDD6FE;border-left:5px solid #4F46E5;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Caught an important public post change without checking profiles by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps social listening teams find this Actor. Your feedback also guides what we build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#4F46E5;border:1px solid #DDD6FE;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/threads-mention-delta-monitor/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

#### Can it search all Threads posts for a keyword?

No. v1 monitors only the direct public profile and post URLs you provide.

#### Does it need a Threads login?

No. It reads pages available publicly without authenticated access. Private, deleted, restricted, or login-only content is not collected.

#### Why is a repeated run empty?

That is expected when nothing changed and `includeUnchanged` is false. Enable it when you need a full current snapshot.

#### Does it provide history from before my first run?

It reads currently visible public records. Monitoring history begins when you first use a state key.

#### Is monitoring public Threads data legal?

Rules vary by country and use case. Review applicable laws, Threads terms, and your obligations before collecting or using data.

### 🔗 Other actors

- [🛰️ Telegram Channel Delta Monitor](https://apify.com/getascraper/telegram-channel-delta-monitor) ↗ - Track new and edited public Telegram channel posts.
- [📰 Newsletter Sponsor Intelligence](https://apify.com/getascraper/newsletter-sponsor-intelligence) ↗ - Find reviewable sponsor evidence in public newsletter issues.
- [📕 RedNote KOL Monitor: 小红书](https://apify.com/getascraper/rednote-kol-monitor) ↗ - Monitor known public RedNote notes and creator pages.
- [❓ Quora Q\&A Change Monitor](https://apify.com/getascraper/quora-qna-change-monitor) ↗ - Watch known public Quora questions for visible changes.

# Actor input Schema

## `targetUrls` (type: `array`):

Add direct public profile URLs such as https://www.threads.com/@zuck or individual public post URLs.

## `maxItems` (type: `integer`):

Maximum number of unique public post records inspected across all targets in one run.

## `includeUnchanged` (type: `boolean`):

When false, the dataset contains only new or changed posts. Turn this on for a complete snapshot.

## `stateKey` (type: `string`):

Reuse the same key in scheduled runs to compare against the same saved state. Use a different key for an independent monitor.

## `proxyConfiguration` (type: `object`):

Optional connection settings. Direct access is used by default.

## Actor input object example

```json
{
  "targetUrls": [
    {
      "url": "https://www.threads.com/@zuck"
    }
  ],
  "maxItems": 5,
  "includeUnchanged": false,
  "stateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "targetUrls": [
        {
            "url": "https://www.threads.com/@zuck"
        }
    ],
    "maxItems": 5,
    "stateKey": "default",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/threads-mention-delta-monitor").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 = {
    "targetUrls": [{ "url": "https://www.threads.com/@zuck" }],
    "maxItems": 5,
    "stateKey": "default",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/threads-mention-delta-monitor").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 '{
  "targetUrls": [
    {
      "url": "https://www.threads.com/@zuck"
    }
  ],
  "maxItems": 5,
  "stateKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call getascraper/threads-mention-delta-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/threads-mention-delta-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/BCvcJMhiEhaTuLcmf/builds/rYoAwbkLI1csZxUsh/openapi.json
