{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Subreddit Members Scraper With User Profiles",
    "description": "Find Reddit users engaging in your niche. This actor scrapes subreddit members so you can target influencers, track audience trends, or discover where potential customers spend time online.",
    "version": "0.1",
    "x-build-id": "yS5SZmw02f8pXGtrl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~reddit-subreddit-members-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-reddit-subreddit-members-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/scrapio~reddit-subreddit-members-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-reddit-subreddit-members-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/scrapio~reddit-subreddit-members-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-reddit-subreddit-members-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": {
          "redditTargets": {
            "title": "🧭 Subreddits, profiles or keywords",
            "type": "array",
            "description": "One entry per line. Accepts r/python, https://www.reddit.com/r/python/, u/spez, https://www.reddit.com/user/spez/, or a plain keyword such as web scraping. Anything that is not a subreddit or a profile is treated as a search query.",
            "items": {
              "type": "string"
            }
          },
          "targets": {
            "title": "🔁 Compatibility input: targets",
            "type": "array",
            "description": "Same meaning as the field above, kept under the original key so existing run configurations and API callers keep working. When both are supplied this one wins.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "🔁 Compatibility input: startUrls",
            "type": "array",
            "description": "Alternative alias for the target list. Used only when neither of the two fields above is supplied.",
            "items": {
              "type": "string"
            }
          },
          "subredditNames": {
            "title": "➕ Extra subreddit names",
            "type": "array",
            "description": "Plain subreddit names to append to the sweep, without the r/ prefix. Merged with everything above and de-duplicated.",
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "🔁 Compatibility input: subreddits",
            "type": "array",
            "description": "Original key for the extra subreddit list. When both are supplied this one wins.",
            "items": {
              "type": "string"
            }
          },
          "sort_order": {
            "title": "📡 Subreddit feed",
            "enum": [
              "new",
              "hot",
              "top",
              "rising"
            ],
            "type": "string",
            "description": "Listing to read for each subreddit.",
            "default": "new"
          },
          "topTimeWindow": {
            "title": "🗓️ Time window for the top feed",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "type": "string",
            "description": "Only used when the feed above is top. Reddit silently serves today's top when no window is sent, so a window is always sent explicitly.",
            "default": "month"
          },
          "maxPosts": {
            "title": "📝 Posts to scan per subreddit",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many submissions to read per subreddit or per keyword search. More posts means more distinct participants, not more detail per participant.",
            "default": 25
          },
          "maxComments": {
            "title": "💬 Comments to scan per subreddit",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many entries of the subreddit comment firehose to read. Set to 0 to skip comments. The comment firehose surfaces accounts that almost never appear in the post listings.",
            "default": 25
          },
          "discoveryEngine": {
            "title": "🔀 Discovery engine",
            "enum": [
              "auto",
              "oldreddit",
              "arcticshift"
            ],
            "type": "string",
            "description": "auto reads Reddit's own www.reddit.com JSON API (via an anonymous-session warm-up, no login needed) and falls back to the third-party Arctic Shift archive when Reddit blocks the request. arcticshift skips Reddit entirely (no proxy needed, chronological only, roughly one hour behind live, and no hot or rising ranking). The 'oldreddit' enum value is kept for backwards compatibility with existing input JSON; it now also reads the www.reddit.com JSON API, not old.reddit.com HTML - old.reddit.com stopped serving listings to anonymous sessions and now redirects them to a login wall.",
            "default": "auto"
          },
          "keywordSearchScope": {
            "title": "🔍 Keyword search scope",
            "enum": [
              "global",
              "targetSubreddits"
            ],
            "type": "string",
            "description": "Where free-text keyword entries are searched. Restricting to the listed subreddits makes every discovered account attributable to one of your targets.",
            "default": "global"
          },
          "fetchDetails": {
            "title": "🪪 Fetch the profile card",
            "type": "boolean",
            "description": "Read each account's public profile JSON for post karma, comment karma, total karma, account creation date, account age in days, trophies, the Reddit-employee flag, Reddit Premium status and avatar image. Up to two requests per unique account (the profile card, then trophies).",
            "default": true
          },
          "requireRealUserId": {
            "title": "🆔 Keep only accounts with a real Reddit ID",
            "type": "boolean",
            "description": "Drop discovered accounts whose genuine t2_ Reddit ID could not be read (deleted or removed authors). Applied before any profile request and before billing.",
            "default": false
          },
          "minPostKarma": {
            "title": "⬆️ Minimum post karma",
            "minimum": 0,
            "type": "integer",
            "description": "Drop accounts below this post karma. 0 disables the filter.",
            "default": 0
          },
          "minCommentKarma": {
            "title": "⬆️ Minimum comment karma",
            "minimum": 0,
            "type": "integer",
            "description": "Drop accounts below this comment karma. 0 disables the filter.",
            "default": 0
          },
          "minAccountAgeDays": {
            "title": "🕰️ Minimum account age in days",
            "minimum": 0,
            "type": "integer",
            "description": "Drop accounts younger than this. Useful for filtering out throwaways. 0 disables the filter.",
            "default": 0
          },
          "maxAccountAgeDays": {
            "title": "🌱 Maximum account age in days",
            "minimum": 0,
            "type": "integer",
            "description": "Drop accounts older than this, for finding newcomers. 0 disables the filter.",
            "default": 0
          },
          "excludeAuthors": {
            "title": "🚫 Usernames to exclude",
            "type": "array",
            "description": "Case-insensitive usernames to skip entirely. These accounts cost neither a profile request nor a charged row.",
            "items": {
              "type": "string"
            }
          },
          "dropWhenProfileUnavailable": {
            "title": "🧹 Drop accounts whose profile could not be read",
            "type": "boolean",
            "description": "Off by default: unreadable profiles are still returned, flagged, and exempted from the karma and age filters. Turn on only if you want a strictly enriched dataset.",
            "default": false
          },
          "maxConcurrentUsers": {
            "title": "⚡ Concurrent profile requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many profile cards to fetch at once. Lower is gentler on the exits and on Reddit.",
            "default": 3
          },
          "requestDelay": {
            "title": "⏱️ Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Extra pause added after each request. Raise it if you see blocked responses in the log.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "What actually gates access to Reddit's JSON API is a one-time anonymous-session cookie (see the discovery engine note above), not IP reputation in general - but live testing on the Apify platform itself found Apify's own outbound IP range specifically is blocked by Reddit even with a fully warmed session, so Apify's RESIDENTIAL proxy group is used by default to avoid a guaranteed-to-fail first attempt on every run. Set this to `{\"useApifyProxy\": false}` to try a direct connection first (useful if you run this actor's code somewhere with an unflagged egress IP); a non-residential configuration is automatically escalated to RESIDENTIAL if it gets blocked.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}