{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Subreddit Members Scraper With Source Posts",
    "description": "Scrape Reddit subreddit members and source posts to discover active users, usernames, post history, engagement, scores, and subreddit activity. Analyze communities, identify relevant audiences, research competitors, uncover leads, and build targeted datasets for marketing and market research.",
    "version": "0.1",
    "x-build-id": "jfaRoJUrK0cuFI6BA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~reddit-subreddit-members-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-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/scrapier~reddit-subreddit-members-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-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/scrapier~reddit-subreddit-members-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-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": {
          "targets": {
            "title": "Subreddits · redditors · search terms",
            "type": "array",
            "description": "Mixed entrypoints. Accepts full URLs (https://www.reddit.com/r/python), r/<subreddit>, u/<username>, or a plain keyword that is run as a Reddit search. Anything that is not a subreddit or a redditor becomes a search term.",
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "Extra subreddit names",
            "type": "array",
            "description": "Plain subreddit names to sweep in addition to the list above, e.g. python, webscraping, learnprogramming.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (alias of the list above)",
            "type": "array",
            "description": "Alias kept for backwards compatibility with older run configurations. Used only when the first list is empty.",
            "items": {
              "type": "string"
            }
          },
          "sort_order": {
            "title": "Feed to read",
            "enum": [
              "new",
              "hot",
              "top",
              "rising"
            ],
            "type": "string",
            "description": "new = freshest participants · hot = current front page (measured 98.6% overlap with new on r/python, so it rarely adds people) · top = highest-scoring in the chosen window · rising = early movers (small feed)."
          },
          "topTimeWindow": {
            "title": "Time window for top / search",
            "enum": [
              "hour",
              "day",
              "week",
              "month",
              "year",
              "all"
            ],
            "type": "string",
            "description": "Applied to the 'top' feed and to keyword searches. Reddit silently treats a missing window as 'day', so this is always sent explicitly.",
            "default": "week"
          },
          "maxPosts": {
            "title": "Posts to read per feed",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many posts to read per subreddit feed, per search, or per redditor overview. Reddit serves 100 per page; higher values paginate.",
            "default": 10
          },
          "maxComments": {
            "title": "Comments to read per subreddit",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "How many items to read from the subreddit's live comment firehose. Set 0 to skip it. The comment feed is the surface that adds the most people the post feeds never show.",
            "default": 10
          },
          "includeCommentFeed": {
            "title": "Read the comment firehose",
            "type": "boolean",
            "description": "Turn off to collect participants from post feeds only. Measured on r/python: only 2.1% of comment-feed authors also appear in the 'new' post feed.",
            "default": true
          },
          "searchWithinSubreddits": {
            "title": "Keep search terms inside the listed subreddits",
            "type": "boolean",
            "description": "On: a search term is run with restrict_sr inside every subreddit you listed, and every row says which one it came from. Off: the term is searched across all of Reddit.",
            "default": true
          },
          "enrichFromArchive": {
            "title": "Fill post body text from the Arctic Shift archive",
            "type": "boolean",
            "description": "Looks up the exact post and comment ids already discovered on arctic-shift.photon-reddit.com to add post body text, upvote ratio and author flair. Third-party archive, no SLA, roughly one hour behind live. When it is unavailable those fields stay null and sourceTextSource records which surface supplied the text.",
            "default": true
          },
          "emitContributionDataset": {
            "title": "Also emit every individual contribution",
            "type": "boolean",
            "description": "Writes one extra, uncharged row per post/comment into a separate '<runId>-contributions' dataset, so the summary on each participant row can be audited item by item.",
            "default": true
          },
          "minSourceScore": {
            "title": "Minimum score on the discovering item",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop participants whose posts/comments all scored below this. Items whose score Reddit hides are treated as not meeting the floor. Leave at 0 to keep everything.",
            "default": 0
          },
          "sourceTextKeywords": {
            "title": "Keywords in the post title or body",
            "type": "array",
            "description": "Case-insensitive substring match over the post title, the post/comment body and the link flair. Matches are listed back on each row in matchedKeywords, so the filter is auditable.",
            "items": {
              "type": "string"
            }
          },
          "keywordMatchAll": {
            "title": "Require every keyword",
            "type": "boolean",
            "description": "Off: keep an item that matches any keyword. On: keep only items that match all of them.",
            "default": false
          },
          "minContributions": {
            "title": "Minimum contributions in this run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Keep only participants seen this many times or more across everything that was swept. 1 keeps everyone; 2+ isolates regulars from one-off visitors.",
            "default": 1
          },
          "excludeAuthors": {
            "title": "Usernames to exclude",
            "type": "array",
            "description": "Skip these accounts entirely - moderators, AutoModerator, known bots. Case-insensitive, with or without the u/ prefix.",
            "items": {
              "type": "string"
            }
          },
          "maxParticipants": {
            "title": "Cap on charged participant rows",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard ceiling on how many participants are pushed and charged. 0 means no cap. Highest-scoring evidence is kept first.",
            "default": 0
          },
          "fetchDetails": {
            "title": "Add karma and account age",
            "type": "boolean",
            "description": "Fetches old.reddit.com/user/<name>/ once per participant. Total karma, Reddit Gold and avatar are NOT collectable any more (they only ever existed on about.json, which now returns 403) - those columns stay null and profileFetched tells you whether the page was actually read.",
            "default": true
          },
          "maxConcurrentUsers": {
            "title": "Parallel profile requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many profile-card requests run at once. Lower it if profile pages start coming back blocked.",
            "default": 3
          },
          "requestDelay": {
            "title": "Pause between requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Base pause added before each request, with a small random jitter on top.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Residential egress is mandatory for Reddit: every Apify datacenter group returned HTTP 403 on 100% of requests when measured. The actor pins the RESIDENTIAL group and keeps any country you choose.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}