Dzen.ru Scraper - Articles, Videos, Channels & Comments

Scrape Dzen.ru (ex Yandex.Zen): articles, videos and channels. Full article text with likes and comment counts, channel subscriber counts with their on-page publications, video metadata. Paste any Dzen link; incremental mode reports only new and changed content.

Open actor on Apify ↗Need a custom scraper?Telegram @abotapi ↗

What Dzen.ru Scraper can do

  • Two lanes in one actor. Feed mode walks Dzen's discovery feed page by page; URL mode deep-dives pasted article, video and channel links.
  • Channel monitoring. Paste channel links and get the channel record (subscriber count included) plus its articles, newest first, as far back as Max records allows - incremental mode reports only the new ones on scheduled runs.
  • Full article records. Title, description, body text, images, author channel, like and comment counts.
  • Comments included. Turn on Include comments to get each article's and video's comments (text, author, date, likes, dislikes, emoji reactions and reply count) inside its record, plus a separate Comments output with one row per comment. Sort by popularity, newest or oldest.
  • Built for schedules. Incremental mode returns only new and changed content on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
  • Reliable RU connection. Runs over a residential RU connection by default, the setup Dzen was tested on.

Choose what to collect

These inputs let you configure Dzen.ru Scraper - Articles, Videos, Channels & Comments. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestringChoose 'feed' to walk Dzen's discovery feed page by page, 'url' to scrape pasted Dzen links (article, video, channel), or 'search' to search Dzen by keyword.

Choices: feed, url, search

searchQueriesarrayKeywords or phrases to search Dzen for, one per row (Russian works best). Each query's results are returned until Max records or Max pages is reached.
searchTypestringWhich kind of results to return: everything, only articles, only videos (including shorts), or only channels. Channels found by search carry a rounded subscriber count (for example 15.3K).

Choices: all, articles, videos, channels

urlsarrayURL mode only. Paste article links (dzen.ru/a/...), video links (dzen.ru/video/watch/...), or channel links (dzen.ru/). Mixed sets are fine.
channelSortstringFor channel links: which publications come first. Most popular first is the channel's own top list.

Choices: newest, popular, oldest

channelContentstringFor channel links: return the channel's articles (each read in full), its videos, or its shorts (both returned straight from the channel's listing, which makes them much faster).

Choices: articles, videos, shorts

fetchArticleTextbooleanOff (default): a channel's articles come from the channel's listing: title, lead paragraph, comment count, read time, date and cover image. That is fast and costs only the record. On: each article is read in full (complete text and all its images), charged as Full page read on top of the record. Pasted article and video links are always read in full and charged the same way.
includeCommentsbooleanTurn on to collect each article's and video's comments (text, author, date, likes, dislikes, reactions, reply count). Channels have no comments. Replies to comments are counted in commentReplies but not returned.
maxCommentsPerPostintegerUpper limit of comments per article or video. Does not count toward Max records. With Most popular first, Dzen returns at most 20 comments per post.
commentsSortstringWhich comments come first. Most popular first returns at most 20 per post; Newest first and Oldest first can return all of them.

Choices: top, newest, oldest

maxItemsintegerMaximum number of records to return across the whole run. This is the run's cap. Use 0 for unlimited.
maxPagesintegerMaximum number of result pages read per feed or search query. 0 means no limit: the run then stops only at Max records.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning records already collected there. For recurring monitoring instead, use Incremental changes below (the two are mutually exclusive once Incremental has saved state).
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching record as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records, which is how a like-count jump or a new channel publication is spotted. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed).
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the link set.
emitUnchangedbooleanOff by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned every link, so never when Max records capped it or when Resume was used.
ignoreFieldsForChangesarrayOutput field names that should NOT make a record count as UPDATED. views is always ignored, because view counts rise on almost every run. Add likes, commentsCount or subscribers here if you only want to hear about new content, not engagement changes. Ignored fields are still returned in the output.
mcpConnectorsarrayOptional. Each selected connector receives a condensed summary per record; the full record always stays in the dataset. Leave empty to skip.
notionParentPageUrlstringURL (or id) of the Notion page under which record pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on records written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

idid
dzenTypeType (text)
titleTitle
urlLink (link)
publicationDatePublished (text)
textPreviewPreview (text)
textContenttextContent
imagesimages
authorNameChannel (text)
authorUrlauthorUrl
subscribersSubscribers (number)
likesLikes (number)
commentsCountComments (number)
viewsViews (number)
videoUrlvideoUrl
coverImagecoverImage
verifiedverified
collectionContextcollectionContext
detailFetchedDetail fetched (boolean)
changeTypeChange type (incremental mode) (text)
changedFieldsChanged fields (incremental mode) (text)
firstSeenAtFirst seen (incremental mode) (text)
lastSeenAtLast seen (incremental mode) (text)
commentscomments
commentIdcommentId
commentTextComment
commentAuthorCommenter
commentAuthorUrlCommenter channel (link)
commentAuthorAvatarcommentAuthorAvatar
commentAuthorVerifiedcommentAuthorVerified
commentDateDate (date)
commentLikesLikes (number)
commentDislikesDislikes (number)
commentRepliesReplies (number)
commentPinnedPinned (boolean)
commentReactionscommentReactions
commentImagescommentImages

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "article:arjYU4pA7HGwblbw",
  "dzenType": "article",
  "title": "Article headline",
  "url": "https://dzen.ru/a/arjYU4pA7HGwblbw",
  "publicationDate": "2026-09-29T10:00:00Z",
  "textPreview": "Short description from the page",
  "textContent": "Full article body text...",
  "images": [
    "https://avatars.dzeninfra.ru/get-zen-pub/..."
  ],
  "authorName": "Channel Name",
  "subscribers": null,
  "likes": 124,
  "commentsCount": 44,
  "comments": [],
  "views": null,
  "collectionContext": null,
  "detailFetched": true,
  "changeType": null,
  "changedFields": [],
  "firstSeenAt": null,
  "lastSeenAt": null
}

Ways to use this data

  • Media analytics: track subscriber counts, like counts and comment counts across Dzen channels on a schedule.
  • Content monitoring: walk the discovery feed daily and get only the new publications.
  • Journalism and research: pull full article text and metadata for RU-media datasets.
  • Competitive tracking: monitor specific channels' publication cadence and engagement.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

How do comments work?

Comments sit inside their article or video record, in the comments list, so each post stays one record. The Comments output (next to the default output on the run page, or ?view=comments through the API) shows one row per comment next to the post's title and link, ready for CSV or Excel. Only top-level comments are returned; commentReplies tells you how many replies each has. With Most popular first, Dzen shows at most 20 comments per post; choose Newest first or Oldest first to get more. In incremental mode a post's comments are returned (and charged) again only when the post itself is NEW, UPDATED or REAPPEARED. A new comment changes commentsCount, which counts as a change.

What is the difference between feed, URL and search mode?

Feed mode walks Dzen's discovery feed and returns a broad, paginated stream of publications. URL mode deep-dives specific links: full article text, channel subscriber counts and their articles, videos or shorts in newest, most popular or oldest order, and video metadata. Search mode returns Dzen's search results for your queries, optionally only articles, only videos or only channels. Channels found by search carry a rounded subscriber count (for example 15.3K); paste the channel link in URL mode for the exact figure.

Can I monitor a channel for new publications?

Yes. Paste the channel link, turn on Incremental mode, and schedule the run. Each run then returns only new and updated records, and unchanged ones are not billed.

Why did my run fail instead of returning an empty dataset?

If Dzen refuses every request, the run stops with a clear message so "no results" is never confused with "nothing could be read". Run it again in a few minutes.