View raw JSON
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "object",
"title": "Reddit Comment Scraper Input",
"required": [
"postUrls"
],
"properties": {
"onlyOP": {
"type": "boolean",
"title": "Only original poster's comments",
"default": false,
"prefill": false,
"description": "Default false. When enabled, retain comments written by the post’s original author. This selects authorship, not top-level comments or a particular reply depth."
},
"authors": {
"type": "array",
"title": "Filter by comment author(s)",
"editor": "stringList",
"example": [
"spez"
],
"description": "Optional Reddit username list, matched without case sensitivity. An empty list disables this inclusion filter. Author exclusions are applied afterward, so a username in both lists is excluded."
},
"keywords": {
"type": "array",
"title": "Filter by keyword(s) in comment body",
"editor": "stringList",
"example": [
"thanks",
"great point"
],
"description": "Optional words or phrases. Keep comments containing at least one entry through case-insensitive substring matching. This is not semantic or whole-word matching; exclusions take precedence. Empty removes this filter."
},
"maxDepth": {
"type": "integer",
"title": "Maximum reply depth",
"example": 2,
"maximum": 100,
"minimum": 0,
"description": "Optional deepest level to retain, from 0–100: 0 top-level only; 1 also includes direct replies; 2 also includes replies to replies. Omit to disable this depth ceiling, with other limits still applying."
},
"minDepth": {
"type": "integer",
"title": "Minimum reply depth",
"example": 1,
"maximum": 100,
"minimum": 0,
"description": "Optional shallowest level to retain, from 0–100: 0 includes top-level comments; 1 keeps replies and deeper; 2 keeps replies to replies and deeper. Omit to disable this depth floor."
},
"postUrls": {
"type": "array",
"title": "Reddit Post URLs",
"editor": "stringList",
"example": [
"https://www.reddit.com/r/programming/comments/1vqukkf/nothing_like_a_monday_morning_github_outage/",
"https://www.reddit.com/comments/1tlh5aj"
],
"prefill": [
"https://www.reddit.com/r/programming/comments/1vqukkf/"
],
"minItems": 1,
"description": "Required nonempty list. Accepts full or short Reddit post URLs, specific comment permalinks, share links, redd.it links, old.reddit.com URLs, or bare post IDs with optional t3_ prefix. Invalid entries can be skipped; the prefilled target is an example."
},
"minAwards": {
"type": "integer",
"title": "Minimum total awards received",
"example": 1,
"maximum": 1000000,
"minimum": 0,
"description": "Optional inclusive minimum total awards, from 0–1,000,000. Omit to disable this criterion. Award counts are source observations, not a quality or truth assessment."
},
"commentSort": {
"enum": [
"confidence",
"top",
"new",
"controversial",
"old",
"qa"
],
"type": "string",
"title": "Sort comments by",
"default": "confidence",
"prefill": "confidence",
"enumTitles": [
"Best (Confidence)",
"Top",
"New",
"Controversial",
"Old",
"Q&A"
],
"description": "Default confidence (Best). Other modes are top, new, controversial, old and qa (Q&A). This requests the source’s retrieval order, not a guarantee of the globally newest, most popular or most negative opinion."
},
"includePost": {
"type": "boolean",
"title": "Include the parent post record",
"default": false,
"prefill": false,
"description": "Default false. If enabled, a separate parent-post record comes first for each input thread, outside the comment cap. Available title, content, aggregate counts or media references are post context, not extra comments or delivered files."
},
"maxComments": {
"type": "integer",
"title": "Maximum comments per post",
"default": 100,
"example": 100,
"maximum": 100000,
"minimum": 1,
"prefill": 30,
"description": "Requested cap per post, including nested replies: 1–100,000, default 100. Prefill 30 is an example, not the default. Filters or access can yield fewer records; this is not a spending limit or complete-thread guarantee."
},
"postedAfter": {
"type": "string",
"title": "Comments created on or after (YYYY-MM-DD)",
"editor": "datepicker",
"example": "2025-01-01",
"description": "Optional YYYY-MM-DD date. Retain comments created on or after this date in UTC, inclusive. It filters original publication time, not edit or retrieval time; the displayed example is not a default."
},
"postedBefore": {
"type": "string",
"title": "Comments created on or before (YYYY-MM-DD)",
"editor": "datepicker",
"example": "2025-12-31",
"description": "Optional YYYY-MM-DD date. Retain comments created on or before the end of this day in UTC, inclusive. It concerns original publication, not editing or retrieval."
},
"commentContext": {
"type": "integer",
"title": "Ancestor context depth (mode = focusOnTargetComment)",
"default": 3,
"maximum": 8,
"minimum": 0,
"prefill": 3,
"description": "Ancestor levels above a targeted comment, 0–8, default 3. Active only with focusOnTargetComment and a specific comment URL; ignored otherwise. It requests ancestors, not descendants."
},
"excludeAuthors": {
"type": "array",
"title": "Exclude comment author(s)",
"editor": "stringList",
"example": [
"AutoModerator"
],
"description": "Optional case-insensitive Reddit username exclusions. Applied after authors: a username listed in both is excluded. Empty removes this exclusion filter; other filters and access limits still apply."
},
"excludeKeywords": {
"type": "array",
"title": "Exclude keyword(s) in comment body",
"editor": "stringList",
"example": [
"I am a bot",
"check out my"
],
"description": "Optional case-insensitive substring exclusions. A comment containing any listed word or phrase is dropped, even if it also matches keywords. Empty removes this exclusion filter."
},
"excludeStickied": {
"type": "boolean",
"title": "Exclude stickied comments",
"default": false,
"prefill": false,
"description": "Default false. Enable to drop comments pinned by moderators, such as pinned notices. It does not classify or remove every comment written by a moderator."
},
"maxCommentScore": {
"type": "integer",
"title": "Maximum comment score",
"example": 1000,
"maximum": 1000000,
"minimum": -1000000,
"description": "Optional inclusive net-score ceiling, from −1,000,000 to 1,000,000. Net score means upvotes minus downvotes, not raw upvotes. Omit to disable this criterion; hidden or missing scores remain distinct."
},
"minCommentScore": {
"type": "integer",
"title": "Minimum comment score",
"example": 1,
"maximum": 1000000,
"minimum": -1000000,
"description": "Optional inclusive net-score floor, from −1,000,000 to 1,000,000. Zero and negative scores are valid values, not missing data. Omit to disable this criterion."
},
"excludeCollapsed": {
"type": "boolean",
"title": "Exclude collapsed comments",
"default": false,
"prefill": false,
"description": "Default false. Enable to drop comments that Reddit collapses by default. The source state does not independently establish why a comment is collapsed or that its content is false."
},
"maxCommentLength": {
"type": "integer",
"title": "Maximum comment length (characters)",
"example": 2000,
"maximum": 10000,
"minimum": 0,
"description": "Optional inclusive body-length ceiling in characters, 0–10,000. This selects comments by length; it does not truncate their text. Omit to disable this criterion."
},
"minCommentLength": {
"type": "integer",
"title": "Minimum comment length (characters)",
"example": 20,
"maximum": 10000,
"minimum": 0,
"description": "Optional inclusive body-length floor in characters, 0–10,000. This selects comments by length, not meaning or sentiment. Omit to disable it; zero is a supplied value, not omission."
},
"controversialOnly": {
"type": "boolean",
"title": "Only controversial comments",
"default": false,
"prefill": false,
"description": "Default false. Enable to keep comments Reddit flags as controversial, associated with a near-even upvote/downvote split. The flag is not negative sentiment, misinformation or a truth judgment."
},
"distinguishedFilter": {
"enum": [
"any",
"moderator",
"admin",
"none"
],
"type": "string",
"title": "Filter by distinguished status",
"editor": "select",
"default": "any",
"prefill": "any",
"enumTitles": [
"Any (default)",
"Moderator only",
"Admin only",
"Regular users only (exclude mod/admin)"
],
"description": "Default any leaves this badge unrestricted. moderator or admin selects comments posted with that official-capacity badge; none selects unbadged comments. No badge does not prove the person is not a moderator or administrator."
},
"focusOnTargetComment": {
"type": "boolean",
"title": "Focus on the specific comment in the URL",
"default": false,
"prefill": false,
"description": "Default false. For a specific comment permalink, enable to request the target and its ancestor chain rather than the thread’s other comments or descendants. It has no effect on plain post URLs and cannot guarantee unavailable content."
},
"excludeDeletedRemoved": {
"type": "boolean",
"title": "Exclude deleted/removed comments",
"default": false,
"prefill": false,
"description": "Default false. Enable to drop comments whose body or author shows a deleted or removed marker. An author marker can therefore exclude surviving text. Leaving it off may retain markers, but cannot restore deleted text."
}
},
"schemaVersion": 1
}
},
"additionalProperties": false
}