{
  "data": {
    "id": "8NqcUjPnceaJI8pg3",
    "actId": "Xyjs2Re83cI6mCDZJ",
    "userId": "NL4ThgItAwaoBlffQ",
    "startedAt": "2026-11-06T16:20:57.525Z",
    "finishedAt": "2026-11-06T16:21:32.959Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 35355,
      "runTimeSecs": 35.355,
      "computeUnits": 0.03928333333333334,
      "imageSizeBytes": 3119793152
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "zifX0mkAFMHe8CatY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Reddit Research Scraper Input\",\n  \"description\": \"Choose one or more modes: subreddit posts, comment trees, keyword search, user profiles, or subreddit metadata. All modes work without an account, API key, or login.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode (single)\",\n      \"type\": \"string\",\n      \"description\": \"Run one mode. Prefer `modes` to combine modes in a single run.\",\n      \"enum\": [\n        \"posts\",\n        \"comments\",\n        \"search\",\n        \"users\",\n        \"subreddits\"\n      ],\n      \"enumTitles\": [\n        \"Subreddit posts\",\n        \"Comment trees\",\n        \"Keyword search\",\n        \"User profiles\",\n        \"Subreddit details\"\n      ],\n      \"default\": \"posts\",\n      \"editor\": \"select\"\n    },\n    \"modes\": {\n      \"title\": \"Modes (run several at once)\",\n      \"type\": \"array\",\n      \"description\": \"Run multiple modes in one execution, for example [\\\"posts\\\", \\\"search\\\"]. When set, this overrides the single `mode` field.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"posts\"\n      ],\n      \"default\": [\n        \"posts\"\n      ]\n    },\n    \"subreddits\": {\n      \"title\": \"Subreddits\",\n      \"type\": \"array\",\n      \"description\": \"Communities to read for posts, comments or subreddit details. Accepts bare names, r/ prefixes, or full Reddit URLs.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"python\"\n      ],\n      \"default\": [\n        \"python\"\n      ]\n    },\n    \"searchQueries\": {\n      \"title\": \"Search keywords or phrases\",\n      \"type\": \"array\",\n      \"description\": \"Keywords for search mode. Supports Reddit search syntax such as author:, flair:, site:, quotes, AND/OR/NOT and -exclusions.\",\n      \"editor\": \"stringList\",\n      \"prefill\": [\n        \"python\"\n      ],\n      \"default\": [\n        \"python\"\n      ]\n    },\n    \"searchType\": {\n      \"title\": \"Search result type\",\n      \"type\": \"string\",\n      \"description\": \"Search for posts, comments, or both.\",\n      \"enum\": [\n        \"posts\",\n        \"comments\",\n        \"both\"\n      ],\n      \"enumTitles\": [\n        \"Posts\",\n        \"Comments\",\n        \"Posts and comments\"\n      ],\n      \"default\": \"posts\",\n      \"editor\": \"select\"\n    },\n    \"searchSort\": {\n      \"title\": \"Search sort order\",\n      \"type\": \"string\",\n      \"description\": \"How to order search results.\",\n      \"enum\": [\n        \"relevance\",\n        \"hot\",\n        \"top\",\n        \"new\",\n        \"comments\"\n      ],\n      \"enumTitles\": [\n        \"Relevance\",\n        \"Hot\",\n        \"Top\",\n        \"New\",\n        \"Most comments\"\n      ],\n      \"default\": \"relevance\",\n      \"editor\": \"select\"\n    },\n    \"withinCommunity\": {\n      \"title\": \"Search inside one community (optional)\",\n      \"type\": \"string\",\n      \"description\": \"Restrict search results to a single subreddit. Leave empty to search all of Reddit.\",\n      \"editor\": \"textfield\"\n    },\n    \"maxSearchResults\": {\n      \"title\": \"Maximum search results per query\",\n      \"type\": \"integer\",\n      \"description\": \"Cap search results (posts or comments) for each query.\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 50,\n      \"editor\": \"number\"\n    },\n    \"enrichSearchResults\": {\n      \"title\": \"Load full post details for search results\",\n      \"type\": \"boolean\",\n      \"description\": \"Open the first few search-result posts to fill score, comment count, body and media. Disable for the fastest search runs.\",\n      \"default\": true,\n      \"editor\": \"checkbox\"\n    },\n    \"postUrls\": {\n      \"title\": \"Post URLs or IDs (comments mode)\",\n      \"type\": \"array\",\n      \"description\": \"Reddit post URLs or bare post IDs to read comment trees from.\",\n      \"editor\": \"stringList\",\n      \"prefill\": []\n    },\n    \"usernames\": {\n      \"title\": \"Usernames (users mode)\",\n      \"type\": \"array\",\n      \"description\": \"Reddit users to read. Accepts plain names, u/ prefixes, or full profile URLs.\",\n      \"editor\": \"stringList\",\n      \"prefill\": []\n    },\n    \"section\": {\n      \"title\": \"Profile section\",\n      \"type\": \"string\",\n      \"description\": \"Which part of a user's profile to read.\",\n      \"enum\": [\n        \"overview\",\n        \"submitted\",\n        \"comments\"\n      ],\n      \"enumTitles\": [\n        \"Overview\",\n        \"Posts\",\n        \"Comments\"\n      ],\n      \"default\": \"submitted\",\n      \"editor\": \"select\"\n    },\n    \"sort\": {\n      \"title\": \"Post sort order\",\n      \"type\": \"string\",\n      \"description\": \"How to sort subreddit listings and profile posts.\",\n      \"enum\": [\n        \"hot\",\n        \"new\",\n        \"top\",\n        \"rising\",\n        \"controversial\",\n        \"best\"\n      ],\n      \"enumTitles\": [\n        \"Hot\",\n        \"New\",\n        \"Top\",\n        \"Rising\",\n        \"Controversial\",\n        \"Best\"\n      ],\n      \"default\": \"hot\",\n      \"editor\": \"select\"\n    },\n    \"timeFilter\": {\n      \"title\": \"Time window\",\n      \"type\": \"string\",\n      \"description\": \"Time range for top/controversial sorts and search.\",\n      \"enum\": [\n        \"hour\",\n        \"day\",\n        \"week\",\n        \"month\",\n        \"year\",\n        \"all\"\n      ],\n      \"enumTitles\": [\n        \"Past hour\",\n        \"Past day\",\n        \"Past week\",\n        \"Past month\",\n        \"Past year\",\n        \"All time\"\n      ],\n      \"default\": \"day\",\n      \"editor\": \"select\"\n    },\n    \"commentSort\": {\n      \"title\": \"Comment sort order\",\n      \"type\": \"string\",\n      \"description\": \"How to order comments inside a thread.\",\n      \"enum\": [\n        \"confidence\",\n        \"top\",\n        \"new\",\n        \"controversial\",\n        \"old\",\n        \"qa\"\n      ],\n      \"enumTitles\": [\n        \"Best\",\n        \"Top\",\n        \"New\",\n        \"Controversial\",\n        \"Old\",\n        \"Q&A\"\n      ],\n      \"default\": \"confidence\",\n      \"editor\": \"select\"\n    },\n    \"maxPosts\": {\n      \"title\": \"Maximum posts per community or user\",\n      \"type\": \"integer\",\n      \"description\": \"Stop after this many posts for each subreddit or profile.\",\n      \"minimum\": 1,\n      \"maximum\": 5000,\n      \"default\": 25,\n      \"prefill\": 1,\n      \"editor\": \"number\"\n    },\n    \"maxComments\": {\n      \"title\": \"Maximum comments per post\",\n      \"type\": \"integer\",\n      \"description\": \"Stop after this many comments for each post URL.\",\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"default\": 100,\n      \"editor\": \"number\"\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum total records\",\n      \"type\": \"integer\",\n      \"description\": \"Global safety cap for the whole run, across all modes.\",\n      \"minimum\": 1,\n      \"maximum\": 100000,\n      \"default\": 1000,\n      \"prefill\": 3,\n      \"editor\": \"number\"\n    },\n    \"expandThreads\": {\n      \"title\": \"Expand comment trees\",\n      \"type\": \"boolean\",\n      \"description\": \"Load collapsed 'more comments' branches and additional profile pages when available.\",\n      \"default\": true,\n      \"editor\": \"checkbox\"\n    },\n    \"includePost\": {\n      \"title\": \"Include the post alongside its comments\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit the parent post record in comments mode in addition to its comments.\",\n      \"default\": false,\n      \"editor\": \"checkbox\"\n    },\n    \"includeSubredditInfo\": {\n      \"title\": \"Include community details with posts\",\n      \"type\": \"boolean\",\n      \"description\": \"Emit one subreddit metadata record per community in posts mode.\",\n      \"default\": false,\n      \"editor\": \"checkbox\"\n    },\n    \"includeRules\": {\n      \"title\": \"Include community rules\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the public rules list to subreddit metadata records.\",\n      \"default\": false,\n      \"editor\": \"checkbox\"\n    },\n    \"minScore\": {\n      \"title\": \"Minimum score\",\n      \"type\": \"integer\",\n      \"description\": \"Drop posts and comments with a lower score. Leave empty for no minimum.\",\n      \"minimum\": -10000000,\n      \"maximum\": 10000000\n    },\n    \"maxScore\": {\n      \"title\": \"Maximum score\",\n      \"type\": \"integer\",\n      \"description\": \"Drop posts and comments with a higher score. Leave empty for no maximum.\",\n      \"minimum\": -10000000,\n      \"maximum\": 10000000\n    },\n    \"minComments\": {\n      \"title\": \"Minimum post comment count\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only posts that have at least this many comments.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"maxPostComments\": {\n      \"title\": \"Maximum post comment count\",\n      \"type\": \"integer\",\n      \"description\": \"Keep only posts that have at most this many comments.\",\n      \"minimum\": 0,\n      \"maximum\": 10000000\n    },\n    \"minUpvoteRatio\": {\n      \"title\": \"Minimum upvote ratio\",\n      \"type\": \"number\",\n      \"description\": \"Keep only posts at or above this upvote ratio (0 to 1).\",\n      \"minimum\": 0,\n      \"maximum\": 1\n    },\n    \"maxAgeDays\": {\n      \"title\": \"Maximum age in days\",\n      \"type\": \"integer\",\n      \"description\": \"Drop posts and comments older than this many days.\",\n      \"minimum\": 1,\n      \"maximum\": 36500\n    },\n    \"postedAfter\": {\n      \"title\": \"Posted on or after\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts created on or after this date (YYYY-MM-DD, UTC).\",\n      \"editor\": \"datepicker\"\n    },\n    \"postedBefore\": {\n      \"title\": \"Posted on or before\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts created on or before this date (YYYY-MM-DD, UTC).\",\n      \"editor\": \"datepicker\"\n    },\n    \"postType\": {\n      \"title\": \"Post type\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts of this type. Choose 'all' to keep every type.\",\n      \"enum\": [\n        \"all\",\n        \"self\",\n        \"link\",\n        \"image\",\n        \"video\",\n        \"gallery\",\n        \"poll\",\n        \"crosspost\",\n        \"gif\",\n        \"multi_media\"\n      ],\n      \"enumTitles\": [\n        \"All types\",\n        \"Text\",\n        \"Link\",\n        \"Image\",\n        \"Video\",\n        \"Gallery\",\n        \"Poll\",\n        \"Crosspost\",\n        \"GIF\",\n        \"Mixed media\"\n      ],\n      \"default\": \"all\",\n      \"editor\": \"select\"\n    },\n    \"excludeStickied\": {\n      \"title\": \"Exclude stickied posts\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop pinned/stickied posts from listings and search results.\",\n      \"default\": false,\n      \"editor\": \"checkbox\"\n    },\n    \"excludeNsfw\": {\n      \"title\": \"Exclude NSFW posts\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop posts Reddit flags as NSFW (18+).\",\n      \"default\": false,\n      \"editor\": \"checkbox\"\n    },\n    \"keywordFilter\": {\n      \"title\": \"Keyword filter\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts or comments whose title, body or text contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"authorFilter\": {\n      \"title\": \"Author contains\",\n      \"type\": \"string\",\n      \"description\": \"Keep only records whose author name contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"authorAllowlist\": {\n      \"title\": \"Only these authors\",\n      \"type\": \"array\",\n      \"description\": \"Keep only records by these exact usernames (case-insensitive).\",\n      \"editor\": \"stringList\"\n    },\n    \"authorBlocklist\": {\n      \"title\": \"Exclude these authors\",\n      \"type\": \"array\",\n      \"description\": \"Drop records by these exact usernames (case-insensitive).\",\n      \"editor\": \"stringList\"\n    },\n    \"flairFilter\": {\n      \"title\": \"Flair contains\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts whose link flair contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"domainFilter\": {\n      \"title\": \"Link domain contains\",\n      \"type\": \"string\",\n      \"description\": \"Keep only posts whose link domain contains this text (case-insensitive).\",\n      \"editor\": \"textfield\"\n    },\n    \"maxDepth\": {\n      \"title\": \"Maximum comment depth\",\n      \"type\": \"integer\",\n      \"description\": \"In comments mode, drop comments nested deeper than this level.\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    }\n  },\n  \"required\": []\n}",
    "readme": "# Reddit Research Scraper — Posts, Comments, Search, Users & Communities\n\nOne run, five ways to read Reddit: subreddit feeds, complete comment trees, keyword search, user profiles, and community details. Apply the filters you need before anything reaches your dataset, so you can go from a broad topic to a clean, analysis-ready table without stitching several tools together.\n\n## What this actor does\n\n- **Subreddit posts** — collect a community's hot, new, top, rising, controversial, or best posts, with native Reddit pagination and optional post body/media details.\n- **Comment trees** — pull a post's comments with nesting depth, parent-comment linkage, scores, awards, edited/deleted flags, and optional expansion of collapsed branches.\n- **Keyword search** — search Reddit posts, comments, or both, globally or inside one community, and sort by relevance, hot, top, new, or comment count.\n- **User profiles** — read a user's profile summary (karma breakdown, cake day, account age, avatar, moderated communities, trophies) plus their posts and/or comments.\n- **Community details** — get a subreddit's description, subscriber and activity counts, creation date, type, icon/banner, and optionally its public rules.\n- **One shared filter layer** — score, age, comment count, upvote ratio, content type, flair, author, domain, keyword, NSFW, and comment depth filters run before records are saved.\n- **Mixed-mode runs** — combine any modes in one execution; every row carries a `recordType` so you can split the output at a glance.\n\n## Modes\n\n| Mode | What it reads | Best for |\n|---|---|---|\n| `posts` | A subreddit's post listing | Community monitoring, trend discovery |\n| `comments` | Comment trees from post URLs or IDs | Sentiment, moderation, discussion analysis |\n| `search` | Reddit keyword search results | Topic research across Reddit |\n| `users` | A user's profile and activity | Author research, influencer vetting |\n| `subreddits` | Community about pages | Community discovery and comparison |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `posts` | One mode: `posts`, `comments`, `search`, `users`, or `subreddits`. |\n| `modes` | array | `[\"posts\"]` | Run several modes in one execution; overrides `mode`. |\n| `subreddits` | array | `[\"python\"]` | Communities for posts, comments, or subreddit details. Accepts names, `r/` prefixes, or URLs. |\n| `searchQueries` | array | `[\"python\"]` | Keywords for search mode. |\n| `searchType` | string | `posts` | `posts`, `comments`, or `both`. |\n| `searchSort` | string | `relevance` | `relevance`, `hot`, `top`, `new`, or `comments`. |\n| `withinCommunity` | string | — | Restrict search to one subreddit. |\n| `maxSearchResults` | integer | `50` | Maximum search results per query. |\n| `enrichSearchResults` | boolean | `true` | Open the first few result posts to fill score, comment count, body, and media. |\n| `postUrls` | array | — | Post URLs or IDs for comments mode. |\n| `usernames` | array | — | Users for users mode. Accepts names, `u/` prefixes, or URLs. |\n| `section` | string | `submitted` | Profile section: `overview`, `submitted`, or `comments`. |\n| `sort` | string | `hot` | `hot`, `new`, `top`, `rising`, `controversial`, or `best`. |\n| `timeFilter` | string | `day` | `hour`, `day`, `week`, `month`, `year`, or `all`. |\n| `commentSort` | string | `confidence` | `confidence`, `top`, `new`, `controversial`, `old`, or `qa`. |\n| `maxPosts` | integer | `25` | Posts per community or user. |\n| `maxComments` | integer | `100` | Comments per post. |\n| `maxItems` | integer | `1000` | Global cap across the whole run. |\n| `expandThreads` | boolean | `true` | Load collapsed comment branches and additional profile pages. |\n| `includePost` | boolean | `false` | Include the parent post record in comments mode. |\n| `includeSubredditInfo` | boolean | `false` | Emit a community record alongside posts. |\n| `includeRules` | boolean | `false` | Add public rules to subreddit records. |\n| `minScore` | integer | — | Minimum post/comment score. |\n| `maxScore` | integer | — | Maximum post/comment score. |\n| `minComments` | integer | — | Minimum comment count on a post. |\n| `maxPostComments` | integer | — | Maximum comment count on a post. |\n| `minUpvoteRatio` | number | — | Minimum post upvote ratio (0–1). |\n| `maxAgeDays` | integer | — | Drop records older than this many days. |\n| `postedAfter` | date | — | Keep posts created on or after this date. |\n| `postedBefore` | date | — | Keep posts created on or before this date. |\n| `postType` | string | `all` | `all`, `self`, `link`, `image`, `video`, `gallery`, `poll`, `crosspost`, `gif`, or `multi_media`. |\n| `excludeStickied` | boolean | `false` | Drop pinned/stickied posts. |\n| `excludeNsfw` | boolean | `false` | Drop posts flagged NSFW. |\n| `keywordFilter` | string | — | Keep records containing this text (title, body, or comment text). |\n| `authorFilter` | string | — | Keep records whose author name contains this text. |\n| `authorAllowlist` | array | — | Keep only these exact authors. |\n| `authorBlocklist` | array | — | Exclude these exact authors. |\n| `flairFilter` | string | — | Keep posts whose link flair contains this text. |\n| `domainFilter` | string | — | Keep posts whose link domain contains this text. |\n| `maxDepth` | integer | — | Maximum comment nesting depth. |\n\n### Example: top posts from two communities\n\n```json\n{\n  \"mode\": \"posts\",\n  \"subreddits\": [\"python\", \"programming\"],\n  \"sort\": \"top\",\n  \"timeFilter\": \"week\",\n  \"maxPosts\": 50,\n  \"minScore\": 25,\n  \"excludeNsfw\": true\n}\n```\n\n### Example: a post's comment tree, shallow only\n\n```json\n{\n  \"mode\": \"comments\",\n  \"postUrls\": [\"https://www.reddit.com/r/programming/comments/1abc123/interesting_discussion/\"],\n  \"maxComments\": 200,\n  \"maxDepth\": 2,\n  \"commentSort\": \"top\"\n}\n```\n\n### Example: search posts and comments, then profile a user\n\n```json\n{\n  \"modes\": [\"search\", \"users\"],\n  \"searchQueries\": [\"vector database\"],\n  \"searchType\": \"both\",\n  \"maxSearchResults\": 30,\n  \"usernames\": [\"spez\"],\n  \"section\": \"overview\",\n  \"maxPosts\": 20\n}\n```\n\n### Example: community details with rules\n\n```json\n{\n  \"mode\": \"subreddits\",\n  \"subreddits\": [\"python\", \"MachineLearning\"],\n  \"includeRules\": true\n}\n```\n\n## Output\n\nEvery row includes `recordType` (`subreddit_post`, `comment`, `profile`, `user_profile`, `subreddit`, or `summary`).\n\n### Post records\n\n`post_id`, `post_name`, `title`, `author`, `author_id`, `author_fullname`, `author_flair`, `subreddit`, `subreddit_prefixed`, `subreddit_id`, `subreddit_subscribers`, `subreddit_type`, `content`, `content_html`, `content_url`, `url`, `permalink`, `external_url`, `url_overridden_by_dest`, `domain`, `post_hint`, `post_type`, `media_type`, `score`, `ups`, `upvote_ratio`, `num_comments`, `link_flair`, `thumbnail_url`, `created_utc`, `created_at`, `edited`, `edited_at`, `is_self`, `is_stickied`, `is_locked`, `is_archived`, `is_pinned`, `is_nsfw`, `is_spoiler`, `is_original_content`, `is_crosspost`, `is_gallery`, `total_awards_received`, `awards`, `gilded_count`, `num_crossposts`, `crosspost_parent`, `language`, `has_media`, `images`, `gallery_images`, `gallery_count`, `video_url`, `poll_data`, `title_word_count`, `post_age_seconds`, `search_term`, `crawled_at`, `source`.\n\n### Comment records\n\n`comment_id`, `comment_name`, `post_id`, `post_title`, `post_url`, `author`, `author_id`, `author_fullname`, `text`, `body_html`, `score`, `permalink`, `parent_id`, `parent_comment_id`, `parent_kind`, `parent_positions`, `depth`, `position`, `replies_count`, `subreddit`, `subreddit_prefixed`, `subreddit_id`, `is_op`, `is_edited`, `edited_at`, `is_stickied`, `is_collapsed`, `is_deleted`, `is_automod`, `is_likely_bot`, `comment_age_seconds`, `distinguished`, `controversiality`, `user_flair`, `word_count`, `body_quote_count`, `body_code_count`, `body_link_count`, `awards_count`, `total_awards_received`, `gilded_count`, `content_type`, `avatar`, `created_utc`, `created_at`, `search_term`, `crawled_at`, `source`.\n\n### Profile post records\n\nPost fields above, plus `author_metadata` with the profile summary.\n\n### User profile records\n\n`username`, `user_id`, `profile_url`, `icon_img`, `snoovatar_img`, `description`, `total_karma`, `post_karma`, `comment_karma`, `awardee_karma`, `awarder_karma`, `created_utc`, `created_at`, `account_created`, `account_age_years`, `is_mod`, `is_gold`, `has_verified_email`, `verified`, `moderated_subreddits`, `trophies`.\n\n### Subreddit records\n\n`subreddit`, `subreddit_prefixed`, `subreddit_id`, `url`, `title`, `description`, `public_description`, `subscribers`, `active_user_count`, `weekly_active_users`, `weekly_contributions`, `created_utc`, `created_at`, `subreddit_type`, `over18`, `quarantine`, `community_icon`, `icon_img`, `banner_img`, `primary_color`, `key_color`, `lang`, `rules`.\n\n### Summary record\n\nOne row at the end of every run with `modes`, `modeStats` (pushed/dropped/errors per mode), `totalPushed`, `totalErrors`, `totalDropped`, and `scrapedAt`. If nothing is emitted, a second summary row explains why.\n\n## Use cases\n\n- Track a topic across several subreddits and keep only high-scoring, recent posts.\n- Pull shallow comment trees for a quick sentiment pass without walking every reply.\n- Search Reddit for a product or phrase, then compare how different communities discuss it.\n- Vetting an author: see their profile summary, recent posts, and comment history together.\n- Compare community size, activity, and rules before launching a campaign or research project.\n\n## Limitations\n\n- Reddit may challenge individual post/comment pages on some cloud networks even when feed, search, profile, and community pages load. When that happens, comments mode emits no rows and records a mode error (visible in the summary and run status) rather than partial or fabricated data; retry from another network or use a saved copy of the thread.\n- Reddit caps listings and search at a source-side maximum; very large `maxItems` requests may stop before that number when Reddit stops paginating. Comment search returns Reddit's first server-rendered result page per query (typically 8-10 rows); post search paginates further.\n- Private, quarantined, banned, and login-only communities cannot be read anonymously.\n- Search results from older archive data may not include the newest posts; live Reddit search is used first when available.\n\n## FAQ\n\n### Do I need a Reddit account, API key, or login?\n\nNo. The actor reads public Reddit pages and public search feeds. No credentials are required.\n\n### How many records can I get?\n\nSet `maxItems` for a global cap, `maxPosts` per community/user, `maxComments` per post, and `maxSearchResults` per query. Reddit itself limits how far a listing or search can paginate; very large requests may stop at the source's own ceiling.\n\n### Why is a field missing from some records?\n\nFields that Reddit does not expose for a particular record are omitted rather than filled with empty values. For example, a text post has no external link domain, and a search-result comment has no post score.\n\n### Do the filters apply to every mode?\n\n`minScore`, `maxScore`, `maxAgeDays`, `keywordFilter`, `authorFilter`, `authorAllowlist`, `authorBlocklist`, `excludeNsfw`, and the post-level filters apply wherever the corresponding field exists. `maxDepth` applies to comments. `postedAfter` and `postedBefore` apply to posts.\n\n### Can I search inside one subreddit?\n\nYes. Set `searchQueries` and put the community name in `withinCommunity`.\n\n### What is the difference between `mode` and `modes`?\n\n`mode` runs one mode. `modes` is a list and can run several modes in one execution. When `modes` is set, it takes priority.\n\n### Why did a mode produce nothing?\n\nIts required input was empty (for example, comments mode without `postUrls`), the community/post is private or unavailable, or your filters removed every row. Check the `summary` record's `modeStats` for counts.\n\n### Is this affiliated with Reddit?\n\nNo. This is an independent tool that reads Reddit's public pages; it is not operated or endorsed by Reddit.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "reddit-multi-mode-scraper-with-advanced-pro",
      "title": "Reddit Research Scraper — Posts, Comments, Search, Users & Communities",
      "description": "Collect Reddit posts, comment trees, keyword search results, user profiles, and community details in one run. Filter by score, age, type, flair, author, domain, or NSFW status before saving. No account, API key, or login required.",
      "version": "2.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Reddit Research Scraper — Posts, Comments, Search, Users & Communities\n\nOne run, five ways to read Reddit: subreddit feeds, complete comment trees, keyword search, user profiles, and community details. Apply the filters you need before anything reaches your dataset, so you can go from a broad topic to a clean, analysis-ready table without stitching several tools together.\n\n## What this actor does\n\n- **Subreddit posts** — collect a community's hot, new, top, rising, controversial, or best posts, with native Reddit pagination and optional post body/media details.\n- **Comment trees** — pull a post's comments with nesting depth, parent-comment linkage, scores, awards, edited/deleted flags, and optional expansion of collapsed branches.\n- **Keyword search** — search Reddit posts, comments, or both, globally or inside one community, and sort by relevance, hot, top, new, or comment count.\n- **User profiles** — read a user's profile summary (karma breakdown, cake day, account age, avatar, moderated communities, trophies) plus their posts and/or comments.\n- **Community details** — get a subreddit's description, subscriber and activity counts, creation date, type, icon/banner, and optionally its public rules.\n- **One shared filter layer** — score, age, comment count, upvote ratio, content type, flair, author, domain, keyword, NSFW, and comment depth filters run before records are saved.\n- **Mixed-mode runs** — combine any modes in one execution; every row carries a `recordType` so you can split the output at a glance.\n\n## Modes\n\n| Mode | What it reads | Best for |\n|---|---|---|\n| `posts` | A subreddit's post listing | Community monitoring, trend discovery |\n| `comments` | Comment trees from post URLs or IDs | Sentiment, moderation, discussion analysis |\n| `search` | Reddit keyword search results | Topic research across Reddit |\n| `users` | A user's profile and activity | Author research, influencer vetting |\n| `subreddits` | Community about pages | Community discovery and comparison |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `posts` | One mode: `posts`, `comments`, `search`, `users`, or `subreddits`. |\n| `modes` | array | `[\"posts\"]` | Run several modes in one execution; overrides `mode`. |\n| `subreddits` | array | `[\"python\"]` | Communities for posts, comments, or subreddit details. Accepts names, `r/` prefixes, or URLs. |\n| `searchQueries` | array | `[\"python\"]` | Keywords for search mode. |\n| `searchType` | string | `posts` | `posts`, `comments`, or `both`. |\n| `searchSort` | string | `relevance` | `relevance`, `hot`, `top`, `new`, or `comments`. |\n| `withinCommunity` | string | — | Restrict search to one subreddit. |\n| `maxSearchResults` | integer | `50` | Maximum search results per query. |\n| `enrichSearchResults` | boolean | `true` | Open the first few result posts to fill score, comment count, body, and media. |\n| `postUrls` | array | — | Post URLs or IDs for comments mode. |\n| `usernames` | array | — | Users for users mode. Accepts names, `u/` prefixes, or URLs. |\n| `section` | string | `submitted` | Profile section: `overview`, `submitted`, or `comments`. |\n| `sort` | string | `hot` | `hot`, `new`, `top`, `rising`, `controversial`, or `best`. |\n| `timeFilter` | string | `day` | `hour`, `day`, `week`, `month`, `year`, or `all`. |\n| `commentSort` | string | `confidence` | `confidence`, `top`, `new`, `controversial`, `old`, or `qa`. |\n| `maxPosts` | integer | `25` | Posts per community or user. |\n| `maxComments` | integer | `100` | Comments per post. |\n| `maxItems` | integer | `1000` | Global cap across the whole run. |\n| `expandThreads` | boolean | `true` | Load collapsed comment branches and additional profile pages. |\n| `includePost` | boolean | `false` | Include the parent post record in comments mode. |\n| `includeSubredditInfo` | boolean | `false` | Emit a community record alongside posts. |\n| `includeRules` | boolean | `false` | Add public rules to subreddit records. |\n| `minScore` | integer | — | Minimum post/comment score. |\n| `maxScore` | integer | — | Maximum post/comment score. |\n| `minComments` | integer | — | Minimum comment count on a post. |\n| `maxPostComments` | integer | — | Maximum comment count on a post. |\n| `minUpvoteRatio` | number | — | Minimum post upvote ratio (0–1). |\n| `maxAgeDays` | integer | — | Drop records older than this many days. |\n| `postedAfter` | date | — | Keep posts created on or after this date. |\n| `postedBefore` | date | — | Keep posts created on or before this date. |\n| `postType` | string | `all` | `all`, `self`, `link`, `image`, `video`, `gallery`, `poll`, `crosspost`, `gif`, or `multi_media`. |\n| `excludeStickied` | boolean | `false` | Drop pinned/stickied posts. |\n| `excludeNsfw` | boolean | `false` | Drop posts flagged NSFW. |\n| `keywordFilter` | string | — | Keep records containing this text (title, body, or comment text). |\n| `authorFilter` | string | — | Keep records whose author name contains this text. |\n| `authorAllowlist` | array | — | Keep only these exact authors. |\n| `authorBlocklist` | array | — | Exclude these exact authors. |\n| `flairFilter` | string | — | Keep posts whose link flair contains this text. |\n| `domainFilter` | string | — | Keep posts whose link domain contains this text. |\n| `maxDepth` | integer | — | Maximum comment nesting depth. |\n\n### Example: top posts from two communities\n\n```json\n{\n  \"mode\": \"posts\",\n  \"subreddits\": [\"python\", \"programming\"],\n  \"sort\": \"top\",\n  \"timeFilter\": \"week\",\n  \"maxPosts\": 50,\n  \"minScore\": 25,\n  \"excludeNsfw\": true\n}\n```\n\n### Example: a post's comment tree, shallow only\n\n```json\n{\n  \"mode\": \"comments\",\n  \"postUrls\": [\"https://www.reddit.com/r/programming/comments/1abc123/interesting_discussion/\"],\n  \"maxComments\": 200,\n  \"maxDepth\": 2,\n  \"commentSort\": \"top\"\n}\n```\n\n### Example: search posts and comments, then profile a user\n\n```json\n{\n  \"modes\": [\"search\", \"users\"],\n  \"searchQueries\": [\"vector database\"],\n  \"searchType\": \"both\",\n  \"maxSearchResults\": 30,\n  \"usernames\": [\"spez\"],\n  \"section\": \"overview\",\n  \"maxPosts\": 20\n}\n```\n\n### Example: community details with rules\n\n```json\n{\n  \"mode\": \"subreddits\",\n  \"subreddits\": [\"python\", \"MachineLearning\"],\n  \"includeRules\": true\n}\n```\n\n## Output\n\nEvery row includes `recordType` (`subreddit_post`, `comment`, `profile`, `user_profile`, `subreddit`, or `summary`).\n\n### Post records\n\n`post_id`, `post_name`, `title`, `author`, `author_id`, `author_fullname`, `author_flair`, `subreddit`, `subreddit_prefixed`, `subreddit_id`, `subreddit_subscribers`, `subreddit_type`, `content`, `content_html`, `content_url`, `url`, `permalink`, `external_url`, `url_overridden_by_dest`, `domain`, `post_hint`, `post_type`, `media_type`, `score`, `ups`, `upvote_ratio`, `num_comments`, `link_flair`, `thumbnail_url`, `created_utc`, `created_at`, `edited`, `edited_at`, `is_self`, `is_stickied`, `is_locked`, `is_archived`, `is_pinned`, `is_nsfw`, `is_spoiler`, `is_original_content`, `is_crosspost`, `is_gallery`, `total_awards_received`, `awards`, `gilded_count`, `num_crossposts`, `crosspost_parent`, `language`, `has_media`, `images`, `gallery_images`, `gallery_count`, `video_url`, `poll_data`, `title_word_count`, `post_age_seconds`, `search_term`, `crawled_at`, `source`.\n\n### Comment records\n\n`comment_id`, `comment_name`, `post_id`, `post_title`, `post_url`, `author`, `author_id`, `author_fullname`, `text`, `body_html`, `score`, `permalink`, `parent_id`, `parent_comment_id`, `parent_kind`, `parent_positions`, `depth`, `position`, `replies_count`, `subreddit`, `subreddit_prefixed`, `subreddit_id`, `is_op`, `is_edited`, `edited_at`, `is_stickied`, `is_collapsed`, `is_deleted`, `is_automod`, `is_likely_bot`, `comment_age_seconds`, `distinguished`, `controversiality`, `user_flair`, `word_count`, `body_quote_count`, `body_code_count`, `body_link_count`, `awards_count`, `total_awards_received`, `gilded_count`, `content_type`, `avatar`, `created_utc`, `created_at`, `search_term`, `crawled_at`, `source`.\n\n### Profile post records\n\nPost fields above, plus `author_metadata` with the profile summary.\n\n### User profile records\n\n`username`, `user_id`, `profile_url`, `icon_img`, `snoovatar_img`, `description`, `total_karma`, `post_karma`, `comment_karma`, `awardee_karma`, `awarder_karma`, `created_utc`, `created_at`, `account_created`, `account_age_years`, `is_mod`, `is_gold`, `has_verified_email`, `verified`, `moderated_subreddits`, `trophies`.\n\n### Subreddit records\n\n`subreddit`, `subreddit_prefixed`, `subreddit_id`, `url`, `title`, `description`, `public_description`, `subscribers`, `active_user_count`, `weekly_active_users`, `weekly_contributions`, `created_utc`, `created_at`, `subreddit_type`, `over18`, `quarantine`, `community_icon`, `icon_img`, `banner_img`, `primary_color`, `key_color`, `lang`, `rules`.\n\n### Summary record\n\nOne row at the end of every run with `modes`, `modeStats` (pushed/dropped/errors per mode), `totalPushed`, `totalErrors`, `totalDropped`, and `scrapedAt`. If nothing is emitted, a second summary row explains why.\n\n## Use cases\n\n- Track a topic across several subreddits and keep only high-scoring, recent posts.\n- Pull shallow comment trees for a quick sentiment pass without walking every reply.\n- Search Reddit for a product or phrase, then compare how different communities discuss it.\n- Vetting an author: see their profile summary, recent posts, and comment history together.\n- Compare community size, activity, and rules before launching a campaign or research project.\n\n## Limitations\n\n- Reddit may challenge individual post/comment pages on some cloud networks even when feed, search, profile, and community pages load. When that happens, comments mode emits no rows and records a mode error (visible in the summary and run status) rather than partial or fabricated data; retry from another network or use a saved copy of the thread.\n- Reddit caps listings and search at a source-side maximum; very large `maxItems` requests may stop before that number when Reddit stops paginating. Comment search returns Reddit's first server-rendered result page per query (typically 8-10 rows); post search paginates further.\n- Private, quarantined, banned, and login-only communities cannot be read anonymously.\n- Search results from older archive data may not include the newest posts; live Reddit search is used first when available.\n\n## FAQ\n\n### Do I need a Reddit account, API key, or login?\n\nNo. The actor reads public Reddit pages and public search feeds. No credentials are required.\n\n### How many records can I get?\n\nSet `maxItems` for a global cap, `maxPosts` per community/user, `maxComments` per post, and `maxSearchResults` per query. Reddit itself limits how far a listing or search can paginate; very large requests may stop at the source's own ceiling.\n\n### Why is a field missing from some records?\n\nFields that Reddit does not expose for a particular record are omitted rather than filled with empty values. For example, a text post has no external link domain, and a search-result comment has no post score.\n\n### Do the filters apply to every mode?\n\n`minScore`, `maxScore`, `maxAgeDays`, `keywordFilter`, `authorFilter`, `authorAllowlist`, `authorBlocklist`, `excludeNsfw`, and the post-level filters apply wherever the corresponding field exists. `maxDepth` applies to comments. `postedAfter` and `postedBefore` apply to posts.\n\n### Can I search inside one subreddit?\n\nYes. Set `searchQueries` and put the community name in `withinCommunity`.\n\n### What is the difference between `mode` and `modes`?\n\n`mode` runs one mode. `modes` is a list and can run several modes in one execution. When `modes` is set, it takes priority.\n\n### Why did a mode produce nothing?\n\nIts required input was empty (for example, comments mode without `postUrls`), the community/post is private or unavailable, or your filters removed every row. Check the `summary` record's `modeStats` for counts.\n\n### Is this affiliated with Reddit?\n\nNo. This is an independent tool that reads Reddit's public pages; it is not operated or endorsed by Reddit.\n",
      "input": {
        "title": "Reddit Research Scraper Input",
        "description": "Choose one or more modes: subreddit posts, comment trees, keyword search, user profiles, or subreddit metadata. All modes work without an account, API key, or login.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode (single)",
            "type": "string",
            "description": "Run one mode. Prefer `modes` to combine modes in a single run.",
            "enum": [
              "posts",
              "comments",
              "search",
              "users",
              "subreddits"
            ],
            "enumTitles": [
              "Subreddit posts",
              "Comment trees",
              "Keyword search",
              "User profiles",
              "Subreddit details"
            ],
            "default": "posts",
            "editor": "select"
          },
          "modes": {
            "title": "Modes (run several at once)",
            "type": "array",
            "description": "Run multiple modes in one execution, for example [\"posts\", \"search\"]. When set, this overrides the single `mode` field.",
            "editor": "stringList",
            "prefill": [
              "posts"
            ],
            "default": [
              "posts"
            ]
          },
          "subreddits": {
            "title": "Subreddits",
            "type": "array",
            "description": "Communities to read for posts, comments or subreddit details. Accepts bare names, r/ prefixes, or full Reddit URLs.",
            "editor": "stringList",
            "prefill": [
              "python"
            ],
            "default": [
              "python"
            ]
          },
          "searchQueries": {
            "title": "Search keywords or phrases",
            "type": "array",
            "description": "Keywords for search mode. Supports Reddit search syntax such as author:, flair:, site:, quotes, AND/OR/NOT and -exclusions.",
            "editor": "stringList",
            "prefill": [
              "python"
            ],
            "default": [
              "python"
            ]
          },
          "searchType": {
            "title": "Search result type",
            "type": "string",
            "description": "Search for posts, comments, or both.",
            "enum": [
              "posts",
              "comments",
              "both"
            ],
            "enumTitles": [
              "Posts",
              "Comments",
              "Posts and comments"
            ],
            "default": "posts",
            "editor": "select"
          },
          "searchSort": {
            "title": "Search sort order",
            "type": "string",
            "description": "How to order search results.",
            "enum": [
              "relevance",
              "hot",
              "top",
              "new",
              "comments"
            ],
            "enumTitles": [
              "Relevance",
              "Hot",
              "Top",
              "New",
              "Most comments"
            ],
            "default": "relevance",
            "editor": "select"
          },
          "withinCommunity": {
            "title": "Search inside one community (optional)",
            "type": "string",
            "description": "Restrict search results to a single subreddit. Leave empty to search all of Reddit.",
            "editor": "textfield"
          },
          "maxSearchResults": {
            "title": "Maximum search results per query",
            "type": "integer",
            "description": "Cap search results (posts or comments) for each query.",
            "minimum": 1,
            "maximum": 1000,
            "default": 50,
            "editor": "number"
          },
          "enrichSearchResults": {
            "title": "Load full post details for search results",
            "type": "boolean",
            "description": "Open the first few search-result posts to fill score, comment count, body and media. Disable for the fastest search runs.",
            "default": true,
            "editor": "checkbox"
          },
          "postUrls": {
            "title": "Post URLs or IDs (comments mode)",
            "type": "array",
            "description": "Reddit post URLs or bare post IDs to read comment trees from.",
            "editor": "stringList",
            "prefill": []
          },
          "usernames": {
            "title": "Usernames (users mode)",
            "type": "array",
            "description": "Reddit users to read. Accepts plain names, u/ prefixes, or full profile URLs.",
            "editor": "stringList",
            "prefill": []
          },
          "section": {
            "title": "Profile section",
            "type": "string",
            "description": "Which part of a user's profile to read.",
            "enum": [
              "overview",
              "submitted",
              "comments"
            ],
            "enumTitles": [
              "Overview",
              "Posts",
              "Comments"
            ],
            "default": "submitted",
            "editor": "select"
          },
          "sort": {
            "title": "Post sort order",
            "type": "string",
            "description": "How to sort subreddit listings and profile posts.",
            "enum": [
              "hot",
              "new",
              "top",
              "rising",
              "controversial",
              "best"
            ],
            "enumTitles": [
              "Hot",
              "New",
              "Top",
              "Rising",
              "Controversial",
              "Best"
            ],
            "default": "hot",
            "editor": "select"
          },
          "timeFilter": {
            "title": "Time window",
            "type": "string",
            "description": "Time range for top/controversial sorts and search.",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "enumTitles": [
              "Past hour",
              "Past day",
              "Past week",
              "Past month",
              "Past year",
              "All time"
            ],
            "default": "day",
            "editor": "select"
          },
          "commentSort": {
            "title": "Comment sort order",
            "type": "string",
            "description": "How to order comments inside a thread.",
            "enum": [
              "confidence",
              "top",
              "new",
              "controversial",
              "old",
              "qa"
            ],
            "enumTitles": [
              "Best",
              "Top",
              "New",
              "Controversial",
              "Old",
              "Q&A"
            ],
            "default": "confidence",
            "editor": "select"
          },
          "maxPosts": {
            "title": "Maximum posts per community or user",
            "type": "integer",
            "description": "Stop after this many posts for each subreddit or profile.",
            "minimum": 1,
            "maximum": 5000,
            "default": 25,
            "prefill": 1,
            "editor": "number"
          },
          "maxComments": {
            "title": "Maximum comments per post",
            "type": "integer",
            "description": "Stop after this many comments for each post URL.",
            "minimum": 1,
            "maximum": 10000,
            "default": 100,
            "editor": "number"
          },
          "maxItems": {
            "title": "Maximum total records",
            "type": "integer",
            "description": "Global safety cap for the whole run, across all modes.",
            "minimum": 1,
            "maximum": 100000,
            "default": 1000,
            "prefill": 3,
            "editor": "number"
          },
          "expandThreads": {
            "title": "Expand comment trees",
            "type": "boolean",
            "description": "Load collapsed 'more comments' branches and additional profile pages when available.",
            "default": true,
            "editor": "checkbox"
          },
          "includePost": {
            "title": "Include the post alongside its comments",
            "type": "boolean",
            "description": "Emit the parent post record in comments mode in addition to its comments.",
            "default": false,
            "editor": "checkbox"
          },
          "includeSubredditInfo": {
            "title": "Include community details with posts",
            "type": "boolean",
            "description": "Emit one subreddit metadata record per community in posts mode.",
            "default": false,
            "editor": "checkbox"
          },
          "includeRules": {
            "title": "Include community rules",
            "type": "boolean",
            "description": "Add the public rules list to subreddit metadata records.",
            "default": false,
            "editor": "checkbox"
          },
          "minScore": {
            "title": "Minimum score",
            "type": "integer",
            "description": "Drop posts and comments with a lower score. Leave empty for no minimum.",
            "minimum": -10000000,
            "maximum": 10000000
          },
          "maxScore": {
            "title": "Maximum score",
            "type": "integer",
            "description": "Drop posts and comments with a higher score. Leave empty for no maximum.",
            "minimum": -10000000,
            "maximum": 10000000
          },
          "minComments": {
            "title": "Minimum post comment count",
            "type": "integer",
            "description": "Keep only posts that have at least this many comments.",
            "minimum": 0,
            "maximum": 10000000
          },
          "maxPostComments": {
            "title": "Maximum post comment count",
            "type": "integer",
            "description": "Keep only posts that have at most this many comments.",
            "minimum": 0,
            "maximum": 10000000
          },
          "minUpvoteRatio": {
            "title": "Minimum upvote ratio",
            "type": "number",
            "description": "Keep only posts at or above this upvote ratio (0 to 1).",
            "minimum": 0,
            "maximum": 1
          },
          "maxAgeDays": {
            "title": "Maximum age in days",
            "type": "integer",
            "description": "Drop posts and comments older than this many days.",
            "minimum": 1,
            "maximum": 36500
          },
          "postedAfter": {
            "title": "Posted on or after",
            "type": "string",
            "description": "Keep only posts created on or after this date (YYYY-MM-DD, UTC).",
            "editor": "datepicker"
          },
          "postedBefore": {
            "title": "Posted on or before",
            "type": "string",
            "description": "Keep only posts created on or before this date (YYYY-MM-DD, UTC).",
            "editor": "datepicker"
          },
          "postType": {
            "title": "Post type",
            "type": "string",
            "description": "Keep only posts of this type. Choose 'all' to keep every type.",
            "enum": [
              "all",
              "self",
              "link",
              "image",
              "video",
              "gallery",
              "poll",
              "crosspost",
              "gif",
              "multi_media"
            ],
            "enumTitles": [
              "All types",
              "Text",
              "Link",
              "Image",
              "Video",
              "Gallery",
              "Poll",
              "Crosspost",
              "GIF",
              "Mixed media"
            ],
            "default": "all",
            "editor": "select"
          },
          "excludeStickied": {
            "title": "Exclude stickied posts",
            "type": "boolean",
            "description": "Drop pinned/stickied posts from listings and search results.",
            "default": false,
            "editor": "checkbox"
          },
          "excludeNsfw": {
            "title": "Exclude NSFW posts",
            "type": "boolean",
            "description": "Drop posts Reddit flags as NSFW (18+).",
            "default": false,
            "editor": "checkbox"
          },
          "keywordFilter": {
            "title": "Keyword filter",
            "type": "string",
            "description": "Keep only posts or comments whose title, body or text contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "authorFilter": {
            "title": "Author contains",
            "type": "string",
            "description": "Keep only records whose author name contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "authorAllowlist": {
            "title": "Only these authors",
            "type": "array",
            "description": "Keep only records by these exact usernames (case-insensitive).",
            "editor": "stringList"
          },
          "authorBlocklist": {
            "title": "Exclude these authors",
            "type": "array",
            "description": "Drop records by these exact usernames (case-insensitive).",
            "editor": "stringList"
          },
          "flairFilter": {
            "title": "Flair contains",
            "type": "string",
            "description": "Keep only posts whose link flair contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "domainFilter": {
            "title": "Link domain contains",
            "type": "string",
            "description": "Keep only posts whose link domain contains this text (case-insensitive).",
            "editor": "textfield"
          },
          "maxDepth": {
            "title": "Maximum comment depth",
            "type": "integer",
            "description": "In comments mode, drop comments nested deeper than this level.",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": []
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Reddit Research Scraper Output",
        "description": "One dataset row per Reddit post, comment, user profile or community, plus one run summary row.",
        "properties": {
          "records": {
            "type": "string",
            "title": "Reddit records",
            "description": "Dataset containing every scraped Reddit record and the run summary.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "All Records",
              "transformation": {
                "fields": [
                  "recordType",
                  "subreddit_prefixed",
                  "title",
                  "author",
                  "score",
                  "num_comments",
                  "url",
                  "content",
                  "created_at"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "2.0.1",
    "imageDigest": "ec23d4ddae584ac18041a0d037c60fc1a3fe8f050f54334bde0e4e40a2a55262",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.03928333333333334
    }
  }
}