{
  "id": 4790863,
  "title": "A scraper isn’t a monitor: detecting new Telegram posts with Apify and n8n",
  "url": "https://urgent.news/2026/09/01/a-scraper-isnt-a-monitor-detecting-new-telegram-posts-with-apify-and",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-01T05:09:38.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/apify/a-scraper-isnt-a-monitor-detecting-new-telegram-posts-with-apify-and-n8n-31f5"
  },
  "original_language": "en",
  "account": "The actor retrieved five recent Telegram posts, each with an ID, timestamp, and permalink. However, it could not determine which of these posts were truly new without prior knowledge. The actor retrieved visible content at a given snapshot, but \"newness\" requires a comparison between the current snapshot and a previous one. To achieve this, the tutorial introduces a state layer that provides a stable identity for every record, partitions the state by Telegram channel, incorporates a first-run policy, prevents duplicates across executions, warns when the polling window may be too small, and handles failures gracefully when state is missing or malformed. This design is applicable to various workflows that need to identify changes, such as price trackers, job monitors, lead feeds, and inventory checks. The code and examples for this article are available in a companion package. The workflow stops at notification candidates, leaving the determination of actual changes to the downstream n8n workflow. Retrieval and change detection are separate tasks. The actor only returns visible messages, while the n8n workflow compares these messages with durable state to identify new items.",
  "summary": "My Actor run succeeded. It returned five recent Telegram posts, each with an ID, timestamp, and permalink. Then I asked the question the automation actually needed to answer: Which posts are new? The honest answer was: the current run cannot know by itself. Nothing had failed. The Actor had done its job. It had retrieved what was visible now. But “new” is not a property contained in one snapshot;…",
  "key_points": [
    "Actor retrieves five recent Telegram posts with ID, timestamp, and permalink",
    "Introduces state layer for stable record identity and partitioning by channel",
    "n8n workflow compares messages with durable state to identify new items"
  ],
  "editors_take": "Adding a state layer to track changes enables accurate detection of new posts, a crucial distinction that broadens the application of scrapers beyond simple data retrieval to dynamic monitoring workflows.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}