# Changelog of Telegram Channel Scraper - Posts, Messages, Views & Media (`vero-api/telegram-channel-scraper`) Actor

- **URL**: https://apify.com/vero-api/telegram-channel-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/vero-api/telegram-channel-scraper.md

## Changelog

### 2026-10-25

- **Keyword search goes much deeper.** Search now reads the channel itself, so you get as many matching posts as you ask for (it used to stop at about 22 per channel). It searches 20,000 posts per channel, counting back from today or from **Posted before**, or your whole date range when you set **Posted after**. Search together with **Posted before** now works too. Posts must contain every word you enter, in any order and letter case.
- **Search words now match exactly as you type them**, where the old search also caught other forms of a word. For words that change their ending, enter the stem: `Украин` matches *Украина*, *Украины*, and *Украине*, and `invest` matches *investor* and *investing*.
- **`videos` is now a list of objects** with `url`, `thumbnail`, and `duration` (seconds), replacing the plain list of links. Portrait videos are no longer listed twice, and large videos that play only in the Telegram app now appear with their preview and length (`url` is empty for those).
- **New fields:** `links` (every web link in the text, including links behind words), `hashtags`, `mentions`, `edited`, `signature`, `replyToUrl`, and `linkPreview.image`.
- **Relative dates.** **Posted after** and **Posted before** accept periods like `7 days` or `1 month`, counted back from the moment the run starts, so a daily run set to `1 day` gets every post exactly once.
- Service messages ("… pinned a video") and posts Telegram shows only in its app are skipped and not charged.
- Usernames are matched without regard to letter case, so `Durov` and `durov` are scraped once. `tg://resolve?domain=…` links work. Invite links are skipped with a note instead of becoming a charged "not found" row.
- A channel that can't be loaded for a moment is retried, and if it still fails it is skipped without charge while the other channels keep going.
- Every run ends with a summary, such as "Got 100 posts from 1 channel."
- **Faster runs.** Several channels are read at once, so runs with many channels finish 2-3x faster, and each channel needs fewer round trips. Posts from different channels can now appear interleaved in the dataset; every row still carries its `channel`.
- New **Engagement** and **Media and links** tables in the Output tab.
