# Instagram Watchdog (`socialwatchdog/instagram-watchdog`) Actor

Real-time monitor for new & deleted posts, reels, stories, and profile changes.

- **URL**: https://apify.com/socialwatchdog/instagram-watchdog.md
- **Developed by:** [SocialWatchdog](https://apify.com/socialwatchdog) (community)
- **Features:** Limited permissions
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.30 / 1,000 monitoring runs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Instagram Watchdog: Posts, Reposts, 24h Stories & Stealth Deletions

> **Automated 24/7 monitoring for any Instagram account.** Get instant alerts for new posts, deleted reels, temporary 24-hour stories, reposts, and profile updates. Automatically archives full media files for new posts so you never lose evidence. **100% automated (no Instagram login or cookies required).**

***

#### What You Can Track

- 🚨 **Deleted Posts & Reels:**
  - **New Posts (Published while monitoring):** Every photo, reel (.mp4), and story published after you start monitoring is automatically saved. If deleted later, you receive the complete recovered video file or HD photo.
  - **Feed Posts (Page 1 Surveillance - Top 12 Posts):** High-speed surveillance audits the creator's Page 1 feed. If an existing post gets deleted or archived, you receive full forensic proof: original caption, cover photo preview, post timestamp, and engagement stats (past video files from before you started monitoring cannot be downloaded retroactively).
- 🔄 **Dedicated Reposts, Removals & False Un-Repost Shield:**
  - **New Reposts (Shared while monitoring):** Get instant alerts when they share new content to their Reposts tab, including original creator attribution, caption, and direct link.
  - **Feed Reposts (Page 1 Surveillance - Top 12 Reposts):** Watches existing reposts on Page 1 of their profile. If they quietly remove or un-repost one, you get an alert with the original creator, caption, and removal timestamp.
  - **Zero False Alarms Shield:** If a repost vanishes because the *original creator* deleted the post, deactivated their account, set their profile to private (`🔒`), or the post was age-restricted, the watchdog detects this and suppresses the alert—you ONLY get alerted for intentional un-reposts made by the tracked user.
- 📸 **24-Hour Stories:** Catches and saves active stories automatically before the 24-hour window expires.
- 🆕 **New Uploads & Collabs:** Instant notification when a new photo, reel, or joint collaboration post is published.
- 👤 **Profile & Identity Changes:** Tracks edits to bio text, links, profile pictures, display names, and public username handles.
- 🔒 **Privacy Changes & Account Lifecycle:**
  - **Public ⇄ Private Switches:** Get alerted immediately when an account switches from Public to Private (`🔒 PRIVACY_CHANGED`) or opens back up from Private to Public (`🔓`).
  - **Account Deactivations & Bans:** If an account is deactivated, banned, or temporarily taken down, SocialWatchdog alerts you with `🚨 ACCOUNT_DEACTIVATED` and preserves historical records in storage.
  - **Reactivations & Restorations:** When the account returns online, you receive an immediate alert (`🎉 ACCOUNT_REACTIVATED`) with the exact restoration timestamp.
- 👥 **Multi-Account Monitoring:** Monitor up to 5 accounts in a single task (e.g. `leomessi, cristiano`).

***

#### Quick Start (3 Steps)

1. **Enter Username(s):** Type the Instagram handle(s) you want to monitor (up to 5 handles separated by commas, e.g. `leomessi, cristiano`).
2. **Choose What to Monitor:** Leave default options on to track everything (posts, stories, reposts, bio), or customize them to your needs.
3. **Run & Schedule:** Click **Start** to create the initial snapshot. Then click **Schedule** to run automatically every 15 minutes for continuous 24/7 protection.

> 💡 **Tip:** Connect Apify integrations (Email, Slack, Discord, or Webhooks) in the **Integrations** tab to receive alerts directly to your phone or inbox the second something changes.

***

#### Simple, Transparent Pricing

- **$0.0033 per check** (covers up to 5 accounts in one task).
- **~$9.50 / month** for 24/7 monitoring on a 15-minute schedule.
- **Only ~$4.50 / month net** after Apify's standard $5.00/month free credit.
- **$0.00 extra fees:** All video downloads, photo archiving, and alert notifications are 100% free with no bandwidth surcharges.

| Schedule | Cost per Month | With Apify Free Credit ($5/mo) | Accounts Covered |
| :--- | :--- | :--- | :--- |
| **Every 15 minutes (Recommended)** | ~$9.50 / mo | **~$4.50 / mo** | Up to 5 accounts |
| **Every 30 minutes** | ~$9.50 / mo | **~$4.50 / mo** | Up to 5 accounts |
| **Every 1 hour** | ~$9.50 / mo | **~$4.50 / mo** | Up to 5 accounts |

***

#### Settings & Options

| Field | Description | Default |
| :--- | :--- | :--- |
| **Usernames** (`username`) | Instagram handle(s) to monitor (up to 5, e.g. `leomessi, cristiano`). | *Required* |
| **Save Media** (`archiveMedia`) | Automatically download and save raw .mp4 reel videos and photos for new posts. | `true` (On) |
| **Track Posts** (`trackPosts`) | Monitor new photo/reel uploads and Page 1 stealth deletions (top 12 posts). | `true` (On) |
| **Track Reposts** (`trackReposts`) | Monitor the dedicated Reposts tab for new shares and quiet un-reposts (top 12 reposts). Includes False Un-Repost Shield. | `true` (On) |
| **Track Stories** (`trackStories`) | Monitor temporary 24-hour stories and save media. | `true` (On) |
| **Track Profile** (`trackBio`, `trackAvatar`) | Alert on changes to biography, links, avatar picture, and handle. | `true` (On) |
| **Track Privacy** (`trackPrivacy`) | Alert immediately when an account switches between Public and Private. | `true` (On) |
| **Track Lifecycle** (`trackLifecycle`) | Alert when an account deactivates, is banned, or reactivates back online. | `true` (On) |
| **Custom Storage** (`customKvStoreName`) | Optional storage name to keep media saved permanently forever. | *Empty* |

***

#### Sample Alert Outputs

##### 1. Deleted Post / Reel Alert

```json
{
  "eventType": "POST_DELETED",
  "username": "leomessi",
  "shortCode": "Cxyz123",
  "mediaType": "video",
  "caption": "Big news coming tomorrow... stay tuned!",
  "mediaUrl": "https://api.apify.com/v2/key-value-stores/.../records/REEL_leomessi_Cxyz123.mp4",
  "details": "Post was removed from public feed. Prior caption: 'Big news coming tomorrow... stay tuned!'",
  "detectedAt": "2026-11-09T14:30:00.000Z"
}
```

##### 2. New 24-Hour Story Alert

```json
{
  "eventType": "NEW_STORY",
  "username": "leomessi",
  "storyId": "3345123456789012345",
  "mediaType": "video",
  "mediaUrl": "https://api.apify.com/v2/key-value-stores/.../records/STORY_leomessi_3345123456789012345.mp4",
  "expiresAt": "2026-11-10T14:30:00.000Z",
  "detectedAt": "2026-11-09T14:32:00.000Z"
}
```

##### 3. Privacy Shift Alert (Public ⇄ Private)

```json
{
  "eventType": "PRIVACY_CHANGED",
  "username": "leomessi",
  "eventSummary": "🔒 Privacy changed to Private 🔒",
  "details": "Account was previously Public and is now locked to approved followers only.",
  "url": "https://www.instagram.com/leomessi/",
  "detectedAt": "2026-11-09T18:15:00.000Z"
}
```

##### 4. Account Deactivation & Reactivation Alerts

```json
{
  "eventType": "ACCOUNT_DEACTIVATED",
  "username": "leomessi",
  "eventSummary": "🚨 Account deactivated, banned, or deleted",
  "details": "Account was previously active and is no longer reachable on Instagram. Historical snapshots and media preserved.",
  "detectedAt": "2026-11-09T18:20:00.000Z"
}
```

*When the account returns online:*

```json
{
  "eventType": "ACCOUNT_REACTIVATED",
  "username": "leomessi",
  "eventSummary": "🎉 Account reactivated / restored online",
  "details": "Account has returned online and is accessible again!",
  "detectedAt": "2026-11-09T19:45:00.000Z"
}
```

***

#### Frequently Asked Questions

- **What happens if an account goes private or deactivates?**\
  Unlike typical scrapers that crash or throw errors when an account disappears, SocialWatchdog stays active on intelligent standby. It alerts you the second an account flips to private or deactivates, keeps all previously saved media safely preserved in storage, and continuously listens for the moment the creator comes back online or goes public again.
- **Can I download full video files for posts from the past?**\
  No. Full video files (.mp4) are downloaded for **new posts and stories published after you start monitoring**. For older posts that were already published before you started, if they get deleted later, the watchdog retrieves their full caption, cover image preview, post timestamp, and metrics.
- **How does repost tracking work for past vs. new reposts?**
  - **New Reposts:** The moment the tracked user shares content to their dedicated Reposts tab, you receive an immediate alert (`🔁 REPOST_ADDED`) with the original creator's username, caption, and post link.
  - **Past Reposts (Rolling 12-Repost Surveillance Window):** The watchdog maintains a rolling memory of their Page 1 reposts (up to 12 reposts). If an existing repost quietly disappears from their profile, the watchdog performs forensic status verification:
    - If the original post was deleted by the creator, the creator deactivated their account, set their profile to private (`🔒`), or restricted the post, the alert is **suppressed** to eliminate false positives.
    - If the original creator is confirmed still active and public, it confirms a **genuine intentional un-repost** made by the tracked user, firing a verified alert (`❌ REPOST_REMOVED`) with the original creator's username, caption, and removal timestamp.
- **Do I need to log into Instagram or provide cookies?**\
  No. The actor operates completely independently without your credentials or cookies.
- **Will the creator know I'm watching their stories?**\
  No. Stories are retrieved anonymously without your profile appearing in the story viewers list.
- **How do I receive instant alerts on my phone?**\
  Go to the **Integrations** tab in Apify Console and connect Email, Telegram, Slack, or Webhooks.

# Actor input Schema

## `username` (type: `array`):

Add up to 5 accounts to monitor (e.g. verge, leomessi).

## `archiveMedia` (type: `boolean`):

Preserve high-resolution photos, reels, and stories for all newly detected uploads and deleted content.

## `customKvStoreName` (type: `string`):

Name or ID of the Key-Value Store where the media files will be stored. Omit to store in the default watchdog store. Using a named Key-Value store bypasses the 7-day data retention limit and stores the content forever until manually deleted.<br><br>The name can consist of letters, digits, underscores, or hyphens without spaces.

## `trackPosts` (type: `boolean`):

Alert when a creator publishes a new photo or reel, or deletes/archives an existing post from their Page 1 feed (top 12 posts).

## `trackStories` (type: `boolean`):

Alert when a creator posts a new 24h story or deletes a story early. Direct video & HD links included. 100% anonymous with zero viewer footprint.

## `trackReposts` (type: `boolean`):

Alert when a creator reshares content, joins a co-authored post, or removes an existing repost. Automatically maintains a high-speed Page 1 rolling memory window (top 12 reposts).

## `trackBio` (type: `boolean`):

Alert when creator updates biography text or links.

## `trackAvatar` (type: `boolean`):

Alert and capture new profile picture uploads.

## `trackPrivacy` (type: `boolean`):

Alert when an account switches between Public and Private.

## `trackHandleChanges` (type: `boolean`):

Detect if an account changes their public Instagram handle.

## `trackLifecycle` (type: `boolean`):

Alert if an account is deactivated, banned, or restored.

## `trackFollowers` (type: `boolean`):

Alert when an account gains or loses followers (default OFF to prevent noisy alerts).

## `minFollowerDelta` (type: `integer`):

Only trigger an alert if follower change reaches this number (e.g. 10 or 50).

## `trackFollowing` (type: `boolean`):

Alert on following count changes (followed/unfollowed).

## `resetBaseline` (type: `boolean`):

Clear previously stored memory and re-seed a fresh baseline snapshot for the specified accounts.

## Actor input object example

```json
{
  "username": [
    "verge"
  ],
  "archiveMedia": true,
  "trackPosts": true,
  "trackStories": true,
  "trackReposts": true,
  "trackBio": true,
  "trackAvatar": true,
  "trackPrivacy": true,
  "trackHandleChanges": true,
  "trackLifecycle": true,
  "trackFollowers": false,
  "minFollowerDelta": 10,
  "trackFollowing": false,
  "resetBaseline": 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 = {
    "username": [
        "verge"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("socialwatchdog/instagram-watchdog").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 = { "username": ["verge"] }

# Run the Actor and wait for it to finish
run = client.actor("socialwatchdog/instagram-watchdog").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "username": [
    "verge"
  ]
}' |
apify call socialwatchdog/instagram-watchdog --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,socialwatchdog/instagram-watchdog"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/tMrYDPi814pYL7ImX/builds/FKHESHNcPitOTcwsg/openapi.json
