{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Archive Scraper — Historical Posts and Comments by Date",
    "description": "Pushshift alternative: historical Reddit posts and comments by subreddit, user or post ID and exact UTC date range from public archives. Sort by date or score. No login, no API key. Each run reports its newest item date.",
    "version": "1.0",
    "x-build-id": "EgZuvorZbugeSXuD4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/benthepythondev~reddit-archive-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-benthepythondev-reddit-archive-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/benthepythondev~reddit-archive-scraper/runs": {
      "post": {
        "operationId": "runs-sync-benthepythondev-reddit-archive-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/benthepythondev~reddit-archive-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-benthepythondev-reddit-archive-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",
            "maxItems": 50,
            "type": "array",
            "description": "One or more subreddits to archive (without r/). Optional when postIds or authors is set. The public archives cannot search all of Reddit by keyword.",
            "default": [
              "FragranceClones"
            ],
            "items": {
              "type": "string"
            }
          },
          "postIds": {
            "title": "Post IDs or links (optional)",
            "maxItems": 5000,
            "type": "array",
            "description": "Fetch these exact posts: ids like 1b9u2yn, t3_ ids or reddit.com/r/.../comments/<id>/ links. Turn on Include Comments to get the full thread with reply depth.",
            "items": {
              "type": "string"
            }
          },
          "authors": {
            "title": "Authors (optional)",
            "maxItems": 50,
            "type": "array",
            "description": "Reddit usernames (without u/) whose archived posts to fetch, across all subreddits. Date window, keyword and minimum score still apply.",
            "items": {
              "type": "string"
            }
          },
          "authorHistory": {
            "title": "Author comment history",
            "type": "boolean",
            "description": "Also return every archived comment of the listed authors, not only their posts. Posts come from the Authors list as before; comments are flat rows with type comment.",
            "default": false
          },
          "searchQuery": {
            "title": "Keyword (optional)",
            "type": "string",
            "description": "Only return posts containing this keyword, inside the subreddits above.",
            "default": ""
          },
          "commentQuery": {
            "title": "Comment keyword (optional)",
            "type": "string",
            "description": "Search the text of archived comments instead of posts. Needs subreddits or authors (the archive refuses it across all of Reddit). Rows come back as flat comment rows (type comment). Date window, minimum score and Max Posts (as the row cap) apply.",
            "default": ""
          },
          "sortOrder": {
            "title": "Post order",
            "enum": [
              "newest",
              "oldest",
              "top"
            ],
            "type": "string",
            "description": "Newest first (default), oldest first, or top by score: the highest-scored items of the newest 5,000 matches in your window (the archive has no score sort).",
            "default": "newest"
          },
          "minScore": {
            "title": "Minimum score (optional)",
            "minimum": -1000000,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only keep posts and comments with this Reddit score or higher. Leave blank to keep everything, including downvoted rows."
          },
          "afterDate": {
            "title": "After date (ISO)",
            "type": "string",
            "description": "Only include items created on or after this UTC date: YYYY-MM-DD or a full timestamp like 2024-01-31T12:00:00Z. Leave empty for no lower bound.",
            "default": ""
          },
          "beforeDate": {
            "title": "Before date (ISO)",
            "type": "string",
            "description": "Only include items created before this UTC date: YYYY-MM-DD or a full timestamp. Leave empty to start from the most recent archived posts.",
            "default": ""
          },
          "maxPosts": {
            "title": "Max Posts",
            "minimum": 1,
            "maximum": 500000,
            "type": "integer",
            "description": "Maximum number of posts to return (across all subreddits). Comments are additional.",
            "default": 10
          },
          "includeComments": {
            "title": "Include Comments",
            "type": "boolean",
            "description": "Also scrape archived comments for each post (whole thread, each comment with a depth field: 0 = reply to the post). Increases result count (and cost) significantly.",
            "default": false
          },
          "maxCommentsPerPost": {
            "title": "Max Comments per Post",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap comments fetched per post (only used when Include Comments is on). Leave empty for all."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}