{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Crawler Pro - Enterprise Grade",
    "description": null,
    "version": "1.0",
    "x-build-id": "NfxRZqDubb0oh7dmw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerelite~reddit-crawler-pro-enterprise-grade/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerelite-reddit-crawler-pro-enterprise-grade",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/crawlerelite~reddit-crawler-pro-enterprise-grade/runs": {
      "post": {
        "operationId": "runs-sync-crawlerelite-reddit-crawler-pro-enterprise-grade",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/crawlerelite~reddit-crawler-pro-enterprise-grade/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerelite-reddit-crawler-pro-enterprise-grade",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "batchMode": {
            "title": "Batch mode: combine input lists",
            "type": "boolean",
            "description": "Collect all search phrases, subreddits and URLs together. Off: URLs replace global search phrases. Each list accepts up to 100 entries.",
            "default": false
          },
          "queries": {
            "title": "Search phrases",
            "maxItems": 100,
            "type": "array",
            "description": "Add one phrase per line. Enable Batch mode to collect these searches alongside Reddit URLs.",
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "Subreddits",
            "maxItems": 100,
            "type": "array",
            "description": "Add community names, one per line, for example technology or r/Python. Leave subreddit keywords empty for feeds, or add keywords below to search each listed community.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Reddit URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Add post, comment, subreddit, search or public user URLs, one per line. Enable Include comments to collect threads. Comment links collect their owning post and thread. Enable Batch mode to combine URLs with search phrases.",
            "items": {
              "type": "string"
            }
          },
          "maxPosts": {
            "title": "Maximum posts per input",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many accepted posts for each search phrase, subreddit feed or URL. Duplicate posts appear only once. The total can be larger when you provide several inputs.",
            "default": 50000
          },
          "scrapeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Collect comments alongside posts. Comments are saved as separate rows with links to their post and parent comment. Turn off for posts only.",
            "default": false
          },
          "maxComments": {
            "title": "Maximum comments per post",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Used only when Include comments is enabled. Counts comments that pass your comment date filters. Fewer comments may be available than requested.",
            "default": 50000
          },
          "subredditKeywords": {
            "title": "Keywords inside each subreddit",
            "maxItems": 100,
            "type": "array",
            "description": "Optional phrases, one per line. Each phrase is searched in every named subreddit. Leave empty for community feeds. These phrases do not change the Reddit URLs list.",
            "items": {
              "type": "string"
            }
          },
          "subredditName": {
            "title": "Additional subreddit (optional)",
            "type": "string",
            "description": "Add one more community alongside the Subreddits list. The same subreddit keywords and filters apply."
          },
          "subredditSort": {
            "title": "Subreddit order",
            "enum": [
              "relevance",
              "hot",
              "top",
              "new",
              "comments"
            ],
            "type": "string",
            "description": "Order for named subreddits and their keyword searches. Best match uses Hot for a feed. Explicit ordering in a Reddit URL takes precedence unless Newest first for date filters is enabled.",
            "default": "relevance"
          },
          "subredditTimeframe": {
            "title": "Subreddit post age",
            "enum": [
              "all",
              "year",
              "month",
              "week",
              "day",
              "hour"
            ],
            "type": "string",
            "description": "Keep subreddit posts within this rolling time window. Applies to named subreddits and subreddit URLs without their own time window. Custom post dates below apply as well.",
            "default": "all"
          },
          "sort": {
            "title": "Global search order",
            "enum": [
              "relevance",
              "hot",
              "top",
              "new",
              "comments"
            ],
            "type": "string",
            "description": "Order for Search phrases. Search URLs use the sort in their URL, or Best match when none is provided. Newest first for date filters can override this setting.",
            "default": "relevance"
          },
          "timeframe": {
            "title": "Global search post age",
            "enum": [
              "all",
              "year",
              "month",
              "week",
              "day",
              "hour"
            ],
            "type": "string",
            "description": "Keep global search results within this rolling time window. Search URLs use the time window in their URL, or All time when none is provided. Custom post dates below apply as well.",
            "default": "all"
          },
          "dateFrom": {
            "title": "Posts from",
            "type": "string",
            "description": "Include posts created on or after this date, in UTC. Leave empty for no lower date limit. The JSON input also accepts an ISO timestamp."
          },
          "dateTo": {
            "title": "Posts through",
            "type": "string",
            "description": "Include posts through the end of this UTC date. Leave empty for no upper date limit. The JSON input also accepts an ISO timestamp."
          },
          "commentDateFrom": {
            "title": "Comments from",
            "type": "string",
            "description": "Include comments created on or after this UTC date. Used only when Include comments is enabled. Leave empty for no lower date limit."
          },
          "commentDateTo": {
            "title": "Comments through",
            "type": "string",
            "description": "Include comments through the end of this UTC date. Used only when Include comments is enabled. Leave empty for no upper date limit."
          },
          "forceSortNewForTimeFilteredRuns": {
            "title": "Newest first for date filters",
            "type": "boolean",
            "description": "Use Newest order when a post date or post age filter is set. This helps scan recent posts. Explore more results can still add other search orders.",
            "default": false
          },
          "strictSearch": {
            "title": "Require every search term",
            "type": "boolean",
            "description": "Send search terms to Reddit as quoted terms joined with AND. Applies to keyword searches; leave off for normal Reddit search behavior.",
            "default": false
          },
          "strictTokenFilter": {
            "title": "Check every term in the results",
            "type": "boolean",
            "description": "Keep posts only when every search term occurs as a whole token in the title, body or URL. This can return fewer results than Reddit search shows.",
            "default": false
          },
          "maximize_coverage": {
            "title": "Explore more search results",
            "type": "boolean",
            "description": "Try additional search orders such as Newest, Top and Most comments, then remove duplicates. Takes longer and does not guarantee complete historical coverage. Applies to keyword searches and search URLs.",
            "default": false
          },
          "sentiment_analysis": {
            "title": "Add sentiment analysis",
            "type": "boolean",
            "description": "Add positive, negative, neutral or mixed sentiment and scores. These are estimates.",
            "default": false
          },
          "detectLanguage": {
            "title": "Detect original language",
            "type": "boolean",
            "description": "Add the language of the original title and text. Automatically included with English translation or Text Insights. Very short, emoji-only and empty records bypass enrichment and have empty extra fields.",
            "default": false
          },
          "translateToEnglish": {
            "title": "Translate to English",
            "type": "boolean",
            "description": "Translate eligible non-English titles and text to English. Original fields are preserved. English text needs no translation. See translation.status and complete for coverage; unsupported languages are explicit.",
            "default": false
          },
          "analyzeText": {
            "title": "Add Text Insights analysis",
            "type": "boolean",
            "description": "Add sentiment, all 28 emotion scores, topic, entities, intent, ranked keywords and embeddings. Enable English translation for non-English records. Very short records are skipped. Scores are estimates, not calibrated probabilities of correctness.",
            "default": false
          },
          "content_analysis": {
            "title": "Add content categories",
            "type": "boolean",
            "description": "Add topic categories where available. Unmatched content stays uncategorized.",
            "default": false
          },
          "detectBrands": {
            "title": "Detect brands and products",
            "type": "boolean",
            "description": "Identify brands and products with supporting text. Works independently of Text Insights. Enable translation for non-English text.",
            "default": false
          },
          "brandNames": {
            "title": "Brand watchlist (optional)",
            "maxItems": 50,
            "type": "array",
            "description": "Brand or product names to match exactly, one per line. Used with Detect brands and products. Matches are distinguished from AI estimates.",
            "items": {
              "type": "string"
            }
          },
          "detectBuyingIntent": {
            "title": "Detect buying intent",
            "type": "boolean",
            "description": "Find buying, comparison, switching and cancellation signals with supporting text. Uncertain results are left empty.",
            "default": false
          },
          "analyzeFeatureSentiment": {
            "title": "Analyze product feature sentiment",
            "type": "boolean",
            "description": "Find opinions about individual features, such as positive camera feedback and negative battery feedback. Includes supporting text.",
            "default": false
          },
          "extractCustomerProblems": {
            "title": "Extract customer problems",
            "type": "boolean",
            "description": "Find product complaints and feature requests with supporting text. These are AI estimates.",
            "default": false
          },
          "trackTrends": {
            "title": "Track keyword trends",
            "type": "boolean",
            "description": "Compare unique collected records from the last 7 days with the previous 7 days. Uses creation dates and your account history. Counts describe your collected sample, not all Reddit.",
            "default": false
          },
          "trendKeywords": {
            "title": "Trend keywords",
            "maxItems": 20,
            "type": "array",
            "description": "Required when Track keyword trends is enabled. Up to 20 literal words or phrases, one per line. Searches original text and complete English translations.",
            "items": {
              "type": "string"
            }
          },
          "trendKey": {
            "title": "Trend collection name",
            "minLength": 1,
            "maxLength": 80,
            "type": "string",
            "description": "Use the same name across runs to combine their trend history. The default keeps different source selections separate. Counts are snapshots when each record is delivered.",
            "default": "default"
          },
          "commentSort": {
            "title": "Comment order",
            "enum": [
              "confidence",
              "top",
              "new",
              "old",
              "controversial",
              "qa"
            ],
            "type": "string",
            "description": "Choose how Reddit orders each thread while comments are collected. Used only when Include comments is enabled.",
            "default": "confidence"
          },
          "maxPages": {
            "title": "Maximum listing pages",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Limit pages fetched for each feed or search branch. Higher values may find more posts but take longer. The post limit still applies.",
            "default": 1000
          },
          "maxCommentRounds": {
            "title": "Maximum comment collection rounds",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Limit additional comment collection rounds per post. Set to 0 to use only the initial results. Reaching this limit may leave a thread incomplete.",
            "default": 5000
          },
          "maxRunSeconds": {
            "title": "Maximum collection time",
            "minimum": 10,
            "maximum": 86400,
            "type": "integer",
            "description": "Stop server collection after this many seconds. Results already saved remain available. A time limit can produce a partial run; check the run summary.",
            "default": 3600
          },
          "mcpConnectors": {
            "title": "Summary delivery connectors",
            "maxItems": 20,
            "type": "array",
            "description": "Optional connector IDs supplied by the Actor owner. Selecting an ID sends that connector a run summary with counts and storage links. Full Reddit records are not sent. Leave empty for normal scraping.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}