{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Scraper: Posts, Comments, Search & Subreddits",
    "description": "Reddit scraper with upvotes and engagement metrics. Posts, comments and subreddits from any subreddit or a global search, no Reddit API key and no login. 29 post fields and 10 comment fields, AI ready JSON for LLM and RAG pipelines, lead generation and market research. Export as JSON, CSV or Excel.",
    "version": "3.1",
    "x-build-id": "azrin3JxBqXFad1bI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/makework36~reddit-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-makework36-reddit-scraper",
        "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/makework36~reddit-scraper/runs": {
      "post": {
        "operationId": "runs-sync-makework36-reddit-scraper",
        "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/makework36~reddit-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-makework36-reddit-scraper",
        "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": {
          "subreddits": {
            "title": "Subreddits",
            "type": "array",
            "description": "List of subreddit names to scrape, without the 'r/' prefix (e.g. ['technology', 'programming', 'artificial']). Each subreddit contributes up to 'maxPosts' posts. If you leave this empty, you MUST provide 'searchQuery' to search across all of Reddit. Example for tech discussion: ['technology', 'programming']. Example for trading: ['wallstreetbets', 'stocks', 'investing'].",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text search term. Combine with 'subreddits' to search within those subreddits, or leave 'subreddits' empty to search all of Reddit. Supports Reddit search syntax (e.g. 'openai AND gpt', 'flair:news', 'author:spez'). Leave empty if you only want to list posts from specific subreddits."
          },
          "maxPosts": {
            "title": "Max posts",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum posts per subreddit (or in total when you use searchQuery without subreddits). One post is one billable result at $1.50 per 1,000. Typical values: 25 for a quick look, 50-100 for research, 250+ for a dataset. The ceiling is 500.",
            "default": 50
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "hot",
              "new",
              "top",
              "rising"
            ],
            "type": "string",
            "description": "Order in which posts are returned. 'hot' = trending now, best for monitoring. 'new' = most recent, best for real-time tracking. 'top' = highest score in the 'timeFilter' window, best for historical analysis. 'rising' = gaining traction, best for spotting content early.",
            "default": "hot"
          },
          "timeFilter": {
            "title": "Time filter",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "type": "string",
            "description": "Time window for 'top' sort. Ignored for hot, new and rising. 'day' and 'week' are the common ones. Use 'all' for the all-time top posts. Example: sort='top' with timeFilter='week' returns the week's most upvoted posts.",
            "default": "day"
          },
          "includeComments": {
            "title": "Include comments",
            "type": "boolean",
            "description": "Return the comment thread of every post alongside the post. Turn it on for sentiment analysis, Q&A, thread analysis or training data. Leave it off when you only need the posts, and the run finishes sooner. From September 17, 2026, comments that arrive with their engagement metrics cost $0.70 per 1,000 comments; comments that arrive without them are free.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many comments you want per post, at most. Only used when 'includeComments' is true. Up to 1000 when engagement metrics are on, up to 100 when they are not. Typical values: 25 for a summary, 100 for the full thread. It is also what a run costs: from September 17, 2026, every comment that arrives with its metrics costs $0.0007.",
            "default": 100
          },
          "useRichData": {
            "title": "Enriched comment metrics",
            "type": "boolean",
            "description": "Post engagement metrics (score, upvoteRatio, numComments, flair, awards, postLanguage) are always collected, on every run, whatever this is set to. This field controls only whether COMMENTS also come back with their own metrics (score, depth, created, isSubmitter and parentId), since that part is not free. Leave it alone and comments get their metrics whenever it is worth the wait, for up to 25 comments per post, or always when you are not collecting comments at all. Above 25 comments per post you get the comments themselves but not their metrics, unless you turn this on. Turn it on to get comment metrics in every case and to ask for up to 1000 comments per post instead of 100. Turn it off to never get them, whatever maxCommentsPerPost is. From September 17, 2026, each comment delivered with its own metrics costs $0.70 per 1,000 comments, comments delivered without them are free, so turning this off leaves your cost exactly where it is today. If either the post or the comment metrics cannot be collected (no proxy, no session, or a real block), the run still returns its posts and comments with those fields null, and bills nothing for them."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Leave it empty and this Actor uses its own, at no proxy cost to you. Set it only if you want the run to leave through an exit IP you control; yours then takes precedence and the run log says which one was used. If you supply your own, it must be a residential or ISP proxy."
          },
          "requestDelaySecs": {
            "title": "Delay between requests (seconds)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Seconds to wait between requests to Reddit. Raise it to 5-10 if you collect many subreddits in one run and see rate-limit warnings in the log. Lower it only for small runs.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}