# Brand monitoring

Watch your accounts, your competitors, and the comments under both. Daily sweeps from cache, live reads when something is going on, and a clear answer when a post disappears.

For teams like Stalkr, Brand24, Sprout Social, Agorapulse, Later.

## Why teams use Openhandle.

The signal is in the comments, hours before it reaches you.

### Example: Watchlist · competitor post · Tuesday 14:03

**Basic scraper**

| Check | Result | Code | Alert |
|---|---|---|---|
| 14:00 · post | 2,411 likes | 200 | None |
| 14:01 · comments | 38 new | 200 | Spike |
| 14:03 · post | error | 500 | None |

The post was deleted at 14:02. The scraper returned a generic error, your pipeline retried for an hour, and the takedown went unnoticed.

**Openhandle**

| Check | Result | Code | Alert |
|---|---|---|---|
| 14:00 · post | 2,411 likes | 200 | None |
| 14:01 · comments | 38 new | 200 | Spike |
| 14:03 · post | not found | 404 | Deleted |

Same post, same minute. A definitive not-found code turns the deletion into an alert you can act on.

| Without Openhandle | With Openhandle |
|---|---|
| **Problems surface in comments first.** Product faults, scams using your name, and PR incidents show up under posts hours before they reach your inbox. | **Comment streams with authors.** Paginated comments and replies with normalized author profiles. Impersonators and repeat complainers become a query. |
| **Competitor tracking is screenshots.** Someone screenshots competitor accounts every Friday. That is homework, not data. | **Same pipeline for every account.** Your accounts, competitor accounts, partner accounts. One schema, one job, one integration. |
| **Live reads around the clock.** During an incident hour-old numbers are useless. Running live reads every hour of every day is waste. | **Cache by default, live when it matters.** Sweep from the 24-hour cache. Flip the same call to live for the hours an incident is running. |
| **Deleted posts leave a hole.** When a post disappears mid-monitoring, most tools return a generic error. The disappearance was the signal. | **Deletion is an answer.** A deleted post returns a definitive not-found code, not a mystery error. Disappearance becomes an event you can alert on. |

## How a monitoring job works.

1. **Sweep daily from cache.** Profiles and the comments under recent posts, yours and theirs, once a day from the 24-hour cache.
2. **Alert on what changed.** New comments, new posts, a spike, or a post that returned not-found. Each one is a normal response you can match on.
3. **Go live during an incident.** Switch the same calls to live for the hours it matters, then back to cache when it is over.

Live read during an incident:

```bash
curl "https://api.openhandle.dev/v1/instagram/posts/DAbCdEfGhIj/comments?freshness=live" \
  -H "Authorization: Bearer $OPENHANDLE_API_KEY"
```

```json
{
  "platform": "instagram",
  "resource": "comments",
  "capturedAt": "2026-09-02T14:03:52Z",
  "source": "live",
  "data": [
    {
      "id": "18021499870",
      "text": "is this the official account? got a DM from a lookalike",
      "author": { "handle": "s.okafor", "isVerified": false, … },
      "metrics": { "likes": 12, "replies": 3 }
    },
    …
  ],
  "nextCursor": "eyJvZmZzZXQiOjIwfQ"
}
```

Read live, right now. The next cursor is opaque and each page is one request, so you read exactly the pages you need.

## Know what changed and when.

- **Proper invoicing.** Card payment, an invoice for every charge. Nothing prepaid, nothing that expires.
- **A person answers.** Chat directly with the people who build Openhandle through Crisp.

## Documentation

- [Private and deleted accounts](https://openhandle.dev/docs/guides/private-and-deleted-accounts)
- [Envelope and errors](https://openhandle.dev/docs/concepts/envelope-and-errors)
- [Freshness and caching](https://openhandle.dev/docs/concepts/freshness-and-caching)
