{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Search Scraper — Keyword Posts with Velocity",
    "description": "Posts matching your keywords from Reddit's own search, across Reddit or inside chosen subreddits: title, address, author, subreddit, score, comment count, exact time, score and comments per hour, the query that found it. Body text and flair on request. Only-new mode. No login.",
    "version": "0.2",
    "x-build-id": "GdXFYORXPe1Zw1aJO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/foxlabs~reddit-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-foxlabs-reddit-search-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/foxlabs~reddit-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-foxlabs-reddit-search-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/foxlabs~reddit-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-foxlabs-reddit-search-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "One query per line, as you would type it into Reddit's search box: a brand, a product, a phrase in quotes, or Reddit's own operators (subreddit:python, author:spez, title:\"exact words\", self:yes, nsfw:no). A query written twice is read once.",
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "Only in these subreddits (optional)",
            "type": "array",
            "description": "Leave empty to search all of Reddit. Give subreddit names (python, r/python or an address) to search each query inside each of them: a post is delivered once per query even when several subreddits bring it.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Order",
            "enum": [
              "new",
              "relevance",
              "top",
              "comments",
              "hot"
            ],
            "type": "string",
            "description": "new (newest first; the order to use for monitoring), relevance (Reddit's own ranking), top (highest score in the period), comments (most comments), hot.",
            "default": "new"
          },
          "time": {
            "title": "Period",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "type": "string",
            "description": "Only posts from this period: hour, day, week, month, year or all time.",
            "default": "all"
          },
          "maxResultsPerQuery": {
            "title": "Maximum results per query",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many posts to deliver for each query (in all its subreddits together), from the top of the results. Reddit hands results out 100 a request and ends a search after about 250 results: a larger number stops where Reddit stops.",
            "default": 100
          },
          "maxResults": {
            "title": "Maximum results in total",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "The run stops when this many rows have been delivered. You are charged only for delivered rows.",
            "default": 100000
          },
          "postKinds": {
            "title": "Kinds of post (optional)",
            "type": "array",
            "description": "Leave empty for every kind. Choose some to get only those; a post of another kind is skipped and not charged.",
            "items": {
              "type": "string",
              "enum": [
                "text",
                "link",
                "image",
                "video",
                "gallery",
                "poll",
                "crosspost"
              ],
              "enumTitles": [
                "Text posts",
                "Link posts",
                "Image posts",
                "Video posts",
                "Galleries",
                "Polls",
                "Crossposts"
              ]
            }
          },
          "minScore": {
            "title": "Minimum score (optional)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Deliver only posts whose score is at least this."
          },
          "minComments": {
            "title": "Minimum comments (optional)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Deliver only posts with at least this many comments."
          },
          "includeAuthorInfo": {
            "title": "Add each author's karma and account age",
            "type": "boolean",
            "description": "One request per 100 authors adds each post's author record (link and comment karma, account creation date, avatar) as authorInfo. A deleted author gets null.",
            "default": false
          },
          "includeSubredditInfo": {
            "title": "Add each post's subreddit record",
            "type": "boolean",
            "description": "One request per distinct subreddit among the results adds its subscribers, active users, creation date, type and description to the rows of it (subredditInfo). Off by default: results of a wide search come from many subreddits and every row already carries the subscriber count.",
            "default": false
          },
          "includePostDetails": {
            "title": "Read each result's own post page (body text, flair, media)",
            "type": "boolean",
            "description": "A Reddit search result carries the title, the address, the author, the subreddit, the votes, the comment count and the exact time — not the post's body text, flair, media or kind. With this on, each result's own page is read as well (one extra page read per result: the run takes longer and uses more proxy traffic) and those fields are filled. Needed for the subreddit record too.",
            "default": false
          },
          "onlyNewResults": {
            "title": "Only posts not delivered before",
            "type": "boolean",
            "description": "Remember delivered posts under the list name below and skip them in later runs. Schedule the same queries hourly with the order \"new\" and each run brings only the posts it has not delivered before — a brand or topic monitor. With this on, \"Maximum results per query\" is how far down the results the Actor looks.",
            "default": false
          },
          "listName": {
            "title": "List name",
            "pattern": "^[A-Za-z0-9]([A-Za-z0-9-]{0,38}[A-Za-z0-9])?$",
            "type": "string",
            "description": "Name of the memory used by \"Only posts not delivered before\" (looked at only when that is on). Use a different name for each project. Letters, digits and hyphens (a hyphen not first or last), up to 40 characters; capitals are read as lower case.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Nothing to change for normal use: the Actor reads Reddit through Apify Proxy residential addresses, the only kind Reddit hands its guest token to (measured: residential 7 of 7 sessions, datacenter 0 of 8). Set a proxy here to send every request through it instead; a setting the platform refuses ends the run before anything is read."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}