{
  "data": {
    "id": "bC913XMWUHe0Emsxm",
    "actId": "ZB27QppaE9g40P9UW",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-10-28T08:02:24.169Z",
    "finishedAt": "2026-10-28T08:02:33.739Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 9446,
      "runTimeSecs": 9.446,
      "computeUnits": 0.010495555555555555,
      "imageSizeBytes": 357782016
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Yandex News Story Clusters Input\",\n  \"description\": \"Search Yandex News / Dzen News by keyword, browse a category, read homepage top stories, or fetch story clusters by URL. Returns every linked article, source counts, topics and dates.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"required\": [\n    \"mode\"\n  ],\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to scrape. `searchNews` searches keywords, `browseCategory` reads a rubric feed, `topStories` reads the homepage sections, and `byStoryUrls` resolves specific story clusters.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"searchNews\",\n        \"browseCategory\",\n        \"topStories\",\n        \"byStoryUrls\"\n      ],\n      \"enumTitles\": [\n        \"Search news by keyword\",\n        \"Browse a category\",\n        \"Homepage top stories\",\n        \"Fetch story clusters by URL\"\n      ],\n      \"default\": \"searchNews\",\n      \"prefill\": \"searchNews\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search queries\",\n      \"type\": \"array\",\n      \"description\": \"One or more keywords or phrases (mode=searchNews). Russian and English queries are supported. The daily-test prefill uses one query.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"Яндекс\"\n      ]\n    },\n    \"category\": {\n      \"title\": \"Category\",\n      \"type\": \"string\",\n      \"description\": \"Rubric to browse (mode=browseCategory). `all` reads all 16 rubrics in one run.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"politics\",\n        \"society\",\n        \"svo\",\n        \"business\",\n        \"world\",\n        \"sport\",\n        \"incident\",\n        \"culture\",\n        \"computers\",\n        \"science\",\n        \"auto\",\n        \"army\",\n        \"showbusiness\",\n        \"health\",\n        \"moscow\",\n        \"personal_feed\"\n      ],\n      \"enumTitles\": [\n        \"All categories\",\n        \"Politics\",\n        \"Society\",\n        \"SVO / Ukraine conflict\",\n        \"Business\",\n        \"World\",\n        \"Sport\",\n        \"Incidents\",\n        \"Culture\",\n        \"Technology\",\n        \"Science\",\n        \"Cars\",\n        \"Army and weapons\",\n        \"Show business\",\n        \"Health\",\n        \"Moscow\",\n        \"Interesting\"\n      ],\n      \"default\": \"politics\",\n      \"prefill\": \"politics\"\n    },\n    \"storyUrls\": {\n      \"title\": \"Story URLs or cluster IDs\",\n      \"type\": \"array\",\n      \"description\": \"Dzen News story or instory URLs, or bare cluster UUIDs (mode=byStoryUrls). A bare numeric persistent ID is not a valid cluster URL.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"prefill\": []\n    },\n    \"maxStories\": {\n      \"title\": \"Maximum story clusters\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum number of story clusters to return across the whole run. Yandex search depth varies by query.\",\n      \"minimum\": 1,\n      \"maximum\": 500,\n      \"default\": 20,\n      \"prefill\": 3\n    },\n    \"sortOrder\": {\n      \"title\": \"Sort order\",\n      \"type\": \"string\",\n      \"description\": \"Order of the returned search clusters (mode=searchNews). Yandex search itself is relevance-ranked; these options sort the returned set.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"newest\",\n        \"oldest\",\n        \"mostCovered\"\n      ],\n      \"enumTitles\": [\n        \"Yandex relevance\",\n        \"Newest first\",\n        \"Oldest first\",\n        \"Most covered first\"\n      ],\n      \"default\": \"newest\",\n      \"prefill\": \"newest\"\n    },\n    \"timeRange\": {\n      \"title\": \"Publication time\",\n      \"type\": \"string\",\n      \"description\": \"Keep clusters published in this window (mode=searchNews). Applied to the results Yandex returns. A custom date range overrides this field.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"day\",\n        \"week\",\n        \"month\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Past day\",\n        \"Past week\",\n        \"Past month\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"publishedAfter\": {\n      \"title\": \"Published after\",\n      \"type\": \"string\",\n      \"description\": \"Inclusive start date in YYYY-MM-DD format (mode=searchNews). Leave blank for no lower bound.\",\n      \"editor\": \"textfield\"\n    },\n    \"publishedBefore\": {\n      \"title\": \"Published before\",\n      \"type\": \"string\",\n      \"description\": \"Inclusive end date in YYYY-MM-DD format (mode=searchNews). Leave blank for no upper bound.\",\n      \"editor\": \"textfield\"\n    },\n    \"includeDomains\": {\n      \"title\": \"Include source domains\",\n      \"type\": \"array\",\n      \"description\": \"Keep a cluster when at least one linked article is from one of these domains (for example `rbc.ru`).\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"excludeDomains\": {\n      \"title\": \"Exclude source domains\",\n      \"type\": \"array\",\n      \"description\": \"Drop a cluster when any linked article is from one of these domains.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"includePublishers\": {\n      \"title\": \"Include publishers\",\n      \"type\": \"array\",\n      \"description\": \"Keep a cluster when any linked source name contains one of these values (case-insensitive).\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"excludePublishers\": {\n      \"title\": \"Exclude publishers\",\n      \"type\": \"array\",\n      \"description\": \"Drop a cluster when any linked source name contains one of these values (case-insensitive).\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"includeKeywords\": {\n      \"title\": \"Required keywords\",\n      \"type\": \"array\",\n      \"description\": \"Keep a cluster when its headline, summary or an article headline/summary contains at least one of these values.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"excludeKeywords\": {\n      \"title\": \"Excluded keywords\",\n      \"type\": \"array\",\n      \"description\": \"Drop a cluster when its headline, summary or an article headline/summary contains any of these values.\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"includeDetails\": {\n      \"title\": \"Include story details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the cluster page for topic labels, source-reported counts, images, country/region, comments and likes.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeArticles\": {\n      \"title\": \"Include article records\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit one record per linked article in every cluster. Turn this off for a story-only dataset.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"maxArticlesPerStory\": {\n      \"title\": \"Maximum articles per story\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum article records and article pages fetched per cluster. Yandex returns 100 articles per page.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 100,\n      \"prefill\": 3\n    }\n  }\n}",
    "readme": "# Yandex News Story Clusters Across Russia & the CIS\n\nYandex News groups coverage of the same event from many outlets into a story cluster. This actor reads the public Dzen News surface that now serves Yandex News, returns the clusters, and lists every linked article inside each one. Search by keyword, browse a category, read the homepage sections, or paste a story URL. No login, API key, or proxy is needed.\n\n## What this actor does\n\n- **Four ways to collect news:** keyword search, 16 category feeds, the 15 homepage sections, or specific story URLs and cluster IDs.\n- **Story clusters, not just headlines:** each story carries its cluster ID, source-reported coverage count, actual article count, unique source list, topics, image, country/region and timestamps.\n- **Every linked article:** article records include the publisher, headline, clean article URL, publication date, image and source flags.\n- **Filters and sorting** on the returned set: date window, source domain, publisher, keyword, relevance, newest, oldest or most covered.\n- **Automatic deduplication** by story ID and article ID, and empty fields are omitted rather than stored as nulls.\n\n## Output per story\n\n| Field | Description |\n|---|---|\n| `recordType` | `\"story\"` |\n| `storyId` | Story cluster ID (UUID); shared with its article records |\n| `persistentId` | Yandex's numeric story ID |\n| `storyUrl` | Canonical story page on Dzen News |\n| `headline` | Cluster headline |\n| `summary` | Short cluster summary, when Yandex provides one |\n| `category` | Broad rubric name, when available |\n| `topics` / `topicTags` | Rubric or topic labels attached to the cluster |\n| `topicIds` | Numeric rubric IDs |\n| `articleCount` | Number of publications Yandex reports for the cluster |\n| `articlesReturned` | Number of article records actually collected |\n| `sourceCount` | Number of distinct outlet names among the collected articles |\n| `sources` | Outlet names, when articles were collected |\n| `leadSource` | Outlet behind the lead article |\n| `leadArticleUrl` | Publisher URL of the lead article |\n| `publishedAt` | Cluster timestamp, ISO UTC |\n| `publishedAtRaw` | Timestamp label as shown by Yandex |\n| `imageUrl` | Cluster image, when present |\n| `country` / `region` | Story location, when Yandex reports it |\n| `importance` / `relatedStories` | Yandex story metrics |\n| `commentsCount` / `likesCount` | Interaction counts, when present |\n| `domain` | `ru` |\n| `scrapedAt` | UTC timestamp when collected |\n\n`articlesReturned`, `sourceCount` and `sources` are emitted only when `includeArticles` is true. With it off, no article records are fetched, so those article-derived fields are omitted.\n\n## Output per article\n\n| Field | Description |\n|---|---|\n| `recordType` | `\"article\"` |\n| `storyId` | Parent story cluster ID |\n| `docId` | Yandex document ID |\n| `headline` | Outlet's headline |\n| `summary` | Article snippet, when Yandex provides one |\n| `sourceName` | Outlet name |\n| `sourceUrl` | Outlet site root |\n| `articleUrl` | Clean link to the article |\n| `publishedAt` | Publication date (`YYYY-MM-DD`) |\n| `publishedAtIso` | Publication timestamp, ISO UTC |\n| `publishedAtRaw` | Timestamp label as shown by Yandex |\n| `imageUrl` | Outlet logo or article image |\n| `isForeignAgent` / `isDzenArticle` | Yandex flags |\n| `agencyId` | Yandex outlet ID |\n| `domain` | `ru` |\n| `scrapedAt` | UTC timestamp when collected |\n\n## Output per homepage record\n\n`topStories` (and the legacy `getTrending` mode) emits one `recordType: \"trending\"` record with `topics` (homepage section names), `sectionCounts`, `domain` and `scrapedAt`, followed by the story records for those sections.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `searchNews` | `searchNews`, `browseCategory`, `topStories` or `byStoryUrls` |\n| `searchQueries` | array | – | Keywords or phrases (mode=searchNews); the daily-test prefill uses `[\"Яндекс\"]` |\n| `category` | string | `politics` | Rubric slug or `all` (mode=browseCategory) |\n| `storyUrls` | array | – | Story/instory URLs or cluster UUIDs (mode=byStoryUrls) |\n| `maxStories` | integer | `20` | Maximum story clusters across the run (1–500) |\n| `sortOrder` | string | `newest` | `relevance`, `newest`, `oldest` or `mostCovered` (mode=searchNews) |\n| `timeRange` | string | `any` | `any`, `day`, `week` or `month` (mode=searchNews) |\n| `publishedAfter` | string | – | Inclusive `YYYY-MM-DD` start date (mode=searchNews) |\n| `publishedBefore` | string | – | Inclusive `YYYY-MM-DD` end date (mode=searchNews) |\n| `includeDomains` | array | `[]` | Keep clusters with an article from any listed domain |\n| `excludeDomains` | array | `[]` | Drop clusters with an article from any listed domain |\n| `includePublishers` | array | `[]` | Keep clusters matching any outlet name substring |\n| `excludePublishers` | array | `[]` | Drop clusters matching any outlet name substring |\n| `includeKeywords` | array | `[]` | Keep clusters matching any keyword in the title, summary or articles |\n| `excludeKeywords` | array | `[]` | Drop clusters matching any keyword |\n| `includeDetails` | boolean | `true` | Fetch cluster details such as topics, reported count, image and metrics |\n| `includeArticles` | boolean | `true` | Emit one record per linked article; when off, article-derived story fields are omitted |\n| `maxArticlesPerStory` | integer | `100` | Maximum articles collected per cluster (1–1000) |\n\n### Example: brand monitoring by keyword\n\n```json\n{\n  \"mode\": \"searchNews\",\n  \"searchQueries\": [\"Яндекс\", \"Яндекс Такси\"],\n  \"maxStories\": 50,\n  \"timeRange\": \"week\",\n  \"includeArticles\": true\n}\n```\n\n### Example: all categories, story records only\n\n```json\n{\n  \"mode\": \"browseCategory\",\n  \"category\": \"all\",\n  \"maxStories\": 200,\n  \"includeArticles\": false\n}\n```\n\n### Example: homepage top stories\n\n```json\n{\n  \"mode\": \"topStories\",\n  \"maxStories\": 40\n}\n```\n\n### Example: resolve specific story clusters\n\n```json\n{\n  \"mode\": \"byStoryUrls\",\n  \"storyUrls\": [\n    \"https://dzen.ru/news/story/85c864f8-36d7-5b96-ab8d-937bea5d9c9b\",\n    \"c29b2d3c-c183-546b-9a23-b9aba12e981e\"\n  ],\n  \"maxArticlesPerStory\": 300\n}\n```\n\n## Use cases\n\n- **Media monitoring:** follow a company, person or event across many Russian outlets.\n- **Share-of-voice measurement:** use the reported and returned article counts to size coverage.\n- **PR and communications:** see which outlets picked up a story and how the headline evolved.\n- **Newsroom research:** export a cluster's full article list with dates and publisher links.\n- **Risk and compliance:** monitor keywords, source domains and publication windows.\n\n## FAQ\n\n**What happened to Yandex News?**\nThe public Yandex News pages now redirect to Dzen News, which provides the same story-cluster model. This actor reads that public surface.\n\n**How many stories can one search return?**\nYandex search returns 20 clusters per page and its depth varies by query; observed runs reached 9–22 pages (roughly 175–400 unique clusters) before the result set ended. `maxStories` is a hard run-wide cap.\n\n**Why is `articleCount` different from `articlesReturned`?**\n`articleCount` is the number Yandex reports for the cluster, while `articlesReturned` is the number of article records actually collected. The two can differ in either direction: Yandex's live count changes as outlets publish or remove articles (observed 96 reported vs 122 returned, and 246 vs 362), and very large clusters may be capped by `maxArticlesPerStory`.\n\n**Are the date and sort filters applied by Yandex?**\nYandex's public search page applies them in the browser rather than in the server response. This actor applies the same filters and sorting to the set it returns, so a very old custom date range may return fewer results than a dedicated archive search.\n\n**Which categories are available?**\nAll, politics, society, SVO, business, world, sport, incidents, culture, technology, science, cars, army, show business, health, Moscow and interesting. `all` reads every feed.\n\n**Do I need a proxy or login?**\nNo. The actor connects directly and handles the site's anonymous session automatically. No cookies or credentials are required.\n\n**Can I search other regional editions or languages?**\nThe current public surface serves one Russian-language feed; the old `ru/kz/by/uz/com` edition selector no longer changes the content. Search queries can still be written in Russian, English or any language Yandex indexes.\n\n**Why is there no trending keyword list?**\nThe old “what people discuss” panel is no longer present on the homepage. `topStories` returns the homepage sections and their top clusters instead.\n\n**Does this actor download full article text?**\nNo. It returns article metadata and the publisher's URL. Full text stays on the publisher's site and may be paywalled or geo-restricted.\n\n**Is this affiliated with Yandex or Dzen?**\nNo. This is a third-party actor reading public pages; it is not affiliated with, endorsed by, or sponsored by Yandex or Dzen.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "yandex-news-story-clusters-across-russia",
      "title": "Yandex News Story Clusters Across Russia & the CIS",
      "description": "Search, browse or fetch Yandex News story clusters and get every linked article, source counts, topics, images and publication times. No login, no proxy.",
      "version": "2.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "# Yandex News Story Clusters Across Russia & the CIS\n\nYandex News groups coverage of the same event from many outlets into a story cluster. This actor reads the public Dzen News surface that now serves Yandex News, returns the clusters, and lists every linked article inside each one. Search by keyword, browse a category, read the homepage sections, or paste a story URL. No login, API key, or proxy is needed.\n\n## What this actor does\n\n- **Four ways to collect news:** keyword search, 16 category feeds, the 15 homepage sections, or specific story URLs and cluster IDs.\n- **Story clusters, not just headlines:** each story carries its cluster ID, source-reported coverage count, actual article count, unique source list, topics, image, country/region and timestamps.\n- **Every linked article:** article records include the publisher, headline, clean article URL, publication date, image and source flags.\n- **Filters and sorting** on the returned set: date window, source domain, publisher, keyword, relevance, newest, oldest or most covered.\n- **Automatic deduplication** by story ID and article ID, and empty fields are omitted rather than stored as nulls.\n\n## Output per story\n\n| Field | Description |\n|---|---|\n| `recordType` | `\"story\"` |\n| `storyId` | Story cluster ID (UUID); shared with its article records |\n| `persistentId` | Yandex's numeric story ID |\n| `storyUrl` | Canonical story page on Dzen News |\n| `headline` | Cluster headline |\n| `summary` | Short cluster summary, when Yandex provides one |\n| `category` | Broad rubric name, when available |\n| `topics` / `topicTags` | Rubric or topic labels attached to the cluster |\n| `topicIds` | Numeric rubric IDs |\n| `articleCount` | Number of publications Yandex reports for the cluster |\n| `articlesReturned` | Number of article records actually collected |\n| `sourceCount` | Number of distinct outlet names among the collected articles |\n| `sources` | Outlet names, when articles were collected |\n| `leadSource` | Outlet behind the lead article |\n| `leadArticleUrl` | Publisher URL of the lead article |\n| `publishedAt` | Cluster timestamp, ISO UTC |\n| `publishedAtRaw` | Timestamp label as shown by Yandex |\n| `imageUrl` | Cluster image, when present |\n| `country` / `region` | Story location, when Yandex reports it |\n| `importance` / `relatedStories` | Yandex story metrics |\n| `commentsCount` / `likesCount` | Interaction counts, when present |\n| `domain` | `ru` |\n| `scrapedAt` | UTC timestamp when collected |\n\n`articlesReturned`, `sourceCount` and `sources` are emitted only when `includeArticles` is true. With it off, no article records are fetched, so those article-derived fields are omitted.\n\n## Output per article\n\n| Field | Description |\n|---|---|\n| `recordType` | `\"article\"` |\n| `storyId` | Parent story cluster ID |\n| `docId` | Yandex document ID |\n| `headline` | Outlet's headline |\n| `summary` | Article snippet, when Yandex provides one |\n| `sourceName` | Outlet name |\n| `sourceUrl` | Outlet site root |\n| `articleUrl` | Clean link to the article |\n| `publishedAt` | Publication date (`YYYY-MM-DD`) |\n| `publishedAtIso` | Publication timestamp, ISO UTC |\n| `publishedAtRaw` | Timestamp label as shown by Yandex |\n| `imageUrl` | Outlet logo or article image |\n| `isForeignAgent` / `isDzenArticle` | Yandex flags |\n| `agencyId` | Yandex outlet ID |\n| `domain` | `ru` |\n| `scrapedAt` | UTC timestamp when collected |\n\n## Output per homepage record\n\n`topStories` (and the legacy `getTrending` mode) emits one `recordType: \"trending\"` record with `topics` (homepage section names), `sectionCounts`, `domain` and `scrapedAt`, followed by the story records for those sections.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `searchNews` | `searchNews`, `browseCategory`, `topStories` or `byStoryUrls` |\n| `searchQueries` | array | – | Keywords or phrases (mode=searchNews); the daily-test prefill uses `[\"Яндекс\"]` |\n| `category` | string | `politics` | Rubric slug or `all` (mode=browseCategory) |\n| `storyUrls` | array | – | Story/instory URLs or cluster UUIDs (mode=byStoryUrls) |\n| `maxStories` | integer | `20` | Maximum story clusters across the run (1–500) |\n| `sortOrder` | string | `newest` | `relevance`, `newest`, `oldest` or `mostCovered` (mode=searchNews) |\n| `timeRange` | string | `any` | `any`, `day`, `week` or `month` (mode=searchNews) |\n| `publishedAfter` | string | – | Inclusive `YYYY-MM-DD` start date (mode=searchNews) |\n| `publishedBefore` | string | – | Inclusive `YYYY-MM-DD` end date (mode=searchNews) |\n| `includeDomains` | array | `[]` | Keep clusters with an article from any listed domain |\n| `excludeDomains` | array | `[]` | Drop clusters with an article from any listed domain |\n| `includePublishers` | array | `[]` | Keep clusters matching any outlet name substring |\n| `excludePublishers` | array | `[]` | Drop clusters matching any outlet name substring |\n| `includeKeywords` | array | `[]` | Keep clusters matching any keyword in the title, summary or articles |\n| `excludeKeywords` | array | `[]` | Drop clusters matching any keyword |\n| `includeDetails` | boolean | `true` | Fetch cluster details such as topics, reported count, image and metrics |\n| `includeArticles` | boolean | `true` | Emit one record per linked article; when off, article-derived story fields are omitted |\n| `maxArticlesPerStory` | integer | `100` | Maximum articles collected per cluster (1–1000) |\n\n### Example: brand monitoring by keyword\n\n```json\n{\n  \"mode\": \"searchNews\",\n  \"searchQueries\": [\"Яндекс\", \"Яндекс Такси\"],\n  \"maxStories\": 50,\n  \"timeRange\": \"week\",\n  \"includeArticles\": true\n}\n```\n\n### Example: all categories, story records only\n\n```json\n{\n  \"mode\": \"browseCategory\",\n  \"category\": \"all\",\n  \"maxStories\": 200,\n  \"includeArticles\": false\n}\n```\n\n### Example: homepage top stories\n\n```json\n{\n  \"mode\": \"topStories\",\n  \"maxStories\": 40\n}\n```\n\n### Example: resolve specific story clusters\n\n```json\n{\n  \"mode\": \"byStoryUrls\",\n  \"storyUrls\": [\n    \"https://dzen.ru/news/story/85c864f8-36d7-5b96-ab8d-937bea5d9c9b\",\n    \"c29b2d3c-c183-546b-9a23-b9aba12e981e\"\n  ],\n  \"maxArticlesPerStory\": 300\n}\n```\n\n## Use cases\n\n- **Media monitoring:** follow a company, person or event across many Russian outlets.\n- **Share-of-voice measurement:** use the reported and returned article counts to size coverage.\n- **PR and communications:** see which outlets picked up a story and how the headline evolved.\n- **Newsroom research:** export a cluster's full article list with dates and publisher links.\n- **Risk and compliance:** monitor keywords, source domains and publication windows.\n\n## FAQ\n\n**What happened to Yandex News?**\nThe public Yandex News pages now redirect to Dzen News, which provides the same story-cluster model. This actor reads that public surface.\n\n**How many stories can one search return?**\nYandex search returns 20 clusters per page and its depth varies by query; observed runs reached 9–22 pages (roughly 175–400 unique clusters) before the result set ended. `maxStories` is a hard run-wide cap.\n\n**Why is `articleCount` different from `articlesReturned`?**\n`articleCount` is the number Yandex reports for the cluster, while `articlesReturned` is the number of article records actually collected. The two can differ in either direction: Yandex's live count changes as outlets publish or remove articles (observed 96 reported vs 122 returned, and 246 vs 362), and very large clusters may be capped by `maxArticlesPerStory`.\n\n**Are the date and sort filters applied by Yandex?**\nYandex's public search page applies them in the browser rather than in the server response. This actor applies the same filters and sorting to the set it returns, so a very old custom date range may return fewer results than a dedicated archive search.\n\n**Which categories are available?**\nAll, politics, society, SVO, business, world, sport, incidents, culture, technology, science, cars, army, show business, health, Moscow and interesting. `all` reads every feed.\n\n**Do I need a proxy or login?**\nNo. The actor connects directly and handles the site's anonymous session automatically. No cookies or credentials are required.\n\n**Can I search other regional editions or languages?**\nThe current public surface serves one Russian-language feed; the old `ru/kz/by/uz/com` edition selector no longer changes the content. Search queries can still be written in Russian, English or any language Yandex indexes.\n\n**Why is there no trending keyword list?**\nThe old “what people discuss” panel is no longer present on the homepage. `topStories` returns the homepage sections and their top clusters instead.\n\n**Does this actor download full article text?**\nNo. It returns article metadata and the publisher's URL. Full text stays on the publisher's site and may be paywalled or geo-restricted.\n\n**Is this affiliated with Yandex or Dzen?**\nNo. This is a third-party actor reading public pages; it is not affiliated with, endorsed by, or sponsored by Yandex or Dzen.\n",
      "input": {
        "title": "Yandex News Story Clusters Input",
        "description": "Search Yandex News / Dzen News by keyword, browse a category, read homepage top stories, or fetch story clusters by URL. Returns every linked article, source counts, topics and dates.",
        "type": "object",
        "schemaVersion": 1,
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to scrape. `searchNews` searches keywords, `browseCategory` reads a rubric feed, `topStories` reads the homepage sections, and `byStoryUrls` resolves specific story clusters.",
            "editor": "select",
            "enum": [
              "searchNews",
              "browseCategory",
              "topStories",
              "byStoryUrls"
            ],
            "enumTitles": [
              "Search news by keyword",
              "Browse a category",
              "Homepage top stories",
              "Fetch story clusters by URL"
            ],
            "default": "searchNews",
            "prefill": "searchNews"
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One or more keywords or phrases (mode=searchNews). Russian and English queries are supported. The daily-test prefill uses one query.",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "prefill": [
              "Яндекс"
            ]
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Rubric to browse (mode=browseCategory). `all` reads all 16 rubrics in one run.",
            "editor": "select",
            "enum": [
              "all",
              "politics",
              "society",
              "svo",
              "business",
              "world",
              "sport",
              "incident",
              "culture",
              "computers",
              "science",
              "auto",
              "army",
              "showbusiness",
              "health",
              "moscow",
              "personal_feed"
            ],
            "enumTitles": [
              "All categories",
              "Politics",
              "Society",
              "SVO / Ukraine conflict",
              "Business",
              "World",
              "Sport",
              "Incidents",
              "Culture",
              "Technology",
              "Science",
              "Cars",
              "Army and weapons",
              "Show business",
              "Health",
              "Moscow",
              "Interesting"
            ],
            "default": "politics",
            "prefill": "politics"
          },
          "storyUrls": {
            "title": "Story URLs or cluster IDs",
            "type": "array",
            "description": "Dzen News story or instory URLs, or bare cluster UUIDs (mode=byStoryUrls). A bare numeric persistent ID is not a valid cluster URL.",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "prefill": []
          },
          "maxStories": {
            "title": "Maximum story clusters",
            "type": "integer",
            "description": "Maximum number of story clusters to return across the whole run. Yandex search depth varies by query.",
            "minimum": 1,
            "maximum": 500,
            "default": 20,
            "prefill": 3
          },
          "sortOrder": {
            "title": "Sort order",
            "type": "string",
            "description": "Order of the returned search clusters (mode=searchNews). Yandex search itself is relevance-ranked; these options sort the returned set.",
            "editor": "select",
            "enum": [
              "relevance",
              "newest",
              "oldest",
              "mostCovered"
            ],
            "enumTitles": [
              "Yandex relevance",
              "Newest first",
              "Oldest first",
              "Most covered first"
            ],
            "default": "newest",
            "prefill": "newest"
          },
          "timeRange": {
            "title": "Publication time",
            "type": "string",
            "description": "Keep clusters published in this window (mode=searchNews). Applied to the results Yandex returns. A custom date range overrides this field.",
            "editor": "select",
            "enum": [
              "any",
              "day",
              "week",
              "month"
            ],
            "enumTitles": [
              "Any time",
              "Past day",
              "Past week",
              "Past month"
            ],
            "default": "any",
            "prefill": "any"
          },
          "publishedAfter": {
            "title": "Published after",
            "type": "string",
            "description": "Inclusive start date in YYYY-MM-DD format (mode=searchNews). Leave blank for no lower bound.",
            "editor": "textfield"
          },
          "publishedBefore": {
            "title": "Published before",
            "type": "string",
            "description": "Inclusive end date in YYYY-MM-DD format (mode=searchNews). Leave blank for no upper bound.",
            "editor": "textfield"
          },
          "includeDomains": {
            "title": "Include source domains",
            "type": "array",
            "description": "Keep a cluster when at least one linked article is from one of these domains (for example `rbc.ru`).",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "excludeDomains": {
            "title": "Exclude source domains",
            "type": "array",
            "description": "Drop a cluster when any linked article is from one of these domains.",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "includePublishers": {
            "title": "Include publishers",
            "type": "array",
            "description": "Keep a cluster when any linked source name contains one of these values (case-insensitive).",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "excludePublishers": {
            "title": "Exclude publishers",
            "type": "array",
            "description": "Drop a cluster when any linked source name contains one of these values (case-insensitive).",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "includeKeywords": {
            "title": "Required keywords",
            "type": "array",
            "description": "Keep a cluster when its headline, summary or an article headline/summary contains at least one of these values.",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "excludeKeywords": {
            "title": "Excluded keywords",
            "type": "array",
            "description": "Drop a cluster when its headline, summary or an article headline/summary contains any of these values.",
            "items": {
              "type": "string"
            },
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "includeDetails": {
            "title": "Include story details",
            "type": "boolean",
            "description": "Fetch the cluster page for topic labels, source-reported counts, images, country/region, comments and likes.",
            "default": true,
            "prefill": true
          },
          "includeArticles": {
            "title": "Include article records",
            "type": "boolean",
            "description": "Emit one record per linked article in every cluster. Turn this off for a story-only dataset.",
            "default": true,
            "prefill": true
          },
          "maxArticlesPerStory": {
            "title": "Maximum articles per story",
            "type": "integer",
            "description": "Maximum article records and article pages fetched per cluster. Yandex returns 100 articles per page.",
            "minimum": 1,
            "maximum": 1000,
            "default": 100,
            "prefill": 3
          }
        }
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Yandex News Story Clusters Output",
        "description": "Story clusters and their linked articles from Yandex News / Dzen News, including source counts, topics, images and publication times.",
        "properties": {
          "results": {
            "type": "string",
            "title": "Yandex News results",
            "description": "Dataset containing scraped story clusters, linked articles and homepage sections.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "memoryMbytes": 1024,
      "meta": {
        "templateId": "python-start"
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Yandex News Results",
          "views": {
            "stories": {
              "title": "Stories",
              "transformation": {
                "fields": [
                  "recordType",
                  "storyId",
                  "persistentId",
                  "headline",
                  "category",
                  "topics",
                  "articleCount",
                  "articlesReturned",
                  "sourceCount",
                  "leadSource",
                  "publishedAt",
                  "storyUrl",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "storyId": {
                    "label": "Story ID",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "category": {
                    "label": "Category",
                    "format": "text"
                  },
                  "topics": {
                    "label": "Topics",
                    "format": "array"
                  },
                  "articleCount": {
                    "label": "Sources (reported)",
                    "format": "number"
                  },
                  "articlesReturned": {
                    "label": "Articles returned",
                    "format": "number"
                  },
                  "sourceCount": {
                    "label": "Unique sources",
                    "format": "number"
                  },
                  "publishedAt": {
                    "label": "Published",
                    "format": "text"
                  },
                  "storyUrl": {
                    "label": "Story URL",
                    "format": "link"
                  }
                }
              }
            },
            "articles": {
              "title": "Articles",
              "transformation": {
                "fields": [
                  "recordType",
                  "storyId",
                  "docId",
                  "headline",
                  "sourceName",
                  "articleUrl",
                  "publishedAt",
                  "publishedAtIso",
                  "imageUrl",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "storyId": {
                    "label": "Story ID",
                    "format": "text"
                  },
                  "headline": {
                    "label": "Headline",
                    "format": "text"
                  },
                  "sourceName": {
                    "label": "Source",
                    "format": "text"
                  },
                  "articleUrl": {
                    "label": "Article URL",
                    "format": "link"
                  },
                  "publishedAt": {
                    "label": "Published",
                    "format": "text"
                  },
                  "imageUrl": {
                    "label": "Image",
                    "format": "link"
                  }
                }
              }
            },
            "trending": {
              "title": "Homepage sections",
              "transformation": {
                "fields": [
                  "recordType",
                  "topics",
                  "sectionCounts",
                  "domain",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "topics": {
                    "label": "Sections",
                    "format": "array"
                  },
                  "sectionCounts": {
                    "label": "Counts",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "2.0.1",
    "imageDigest": "fa55facdd915e246aa8952faef5a13964dc61a70d0578f68043c5f236aba3d09",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.010495555555555555
    }
  }
}