{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Brand Mention Monitor",
    "description": "Monitor Reddit for mentions of your brand, products, competitors and tracked keywords. New posts and comments with relevance, sentiment, complaint / praise / comparison / switching signals and only-new scheduled monitoring. No Reddit login or API key.",
    "version": "1.0",
    "x-build-id": "8uUeMuMIR09jtq0Gn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~reddit-brand-mention-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-reddit-brand-mention-monitor",
        "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/coregent~reddit-brand-mention-monitor/runs": {
      "post": {
        "operationId": "runs-sync-coregent-reddit-brand-mention-monitor",
        "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/coregent~reddit-brand-mention-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-reddit-brand-mention-monitor",
        "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": {
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Your brands and products, one per line, e.g. Notion, HubSpot, Canva. Each is searched on Reddit (all of Reddit, or each subreddit below) and every post and comment that names it becomes a mention row. Required unless you give keywords; with neither, the run monitors the example brand Notion.",
            "items": {
              "type": "string"
            }
          },
          "aliases": {
            "title": "Aliases",
            "type": "object",
            "description": "Other spellings of each brand, as JSON: { \"OpenAI\": [\"Open AI\", \"ChatGPT\"] }. A match on an alias is attributed to its brand (canonicalBrand) and named in matchedAlias. An alias is only searched separately when it does not already contain the brand name; \"notion app\" is found by the Notion search.",
            "default": {}
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competitor brands, e.g. Obsidian, Coda. Their mentions are monitored too, and a mention that names your brand and a competitor is flagged as a comparison. Phrases like \"switched from X to Y\" or \"alternative to X\" set the switching and alternative signals.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Other tracked terms: campaign names, slogans, product features, launches, founders. Matched and searched like brands, with no canonical brand attached.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "Subreddits (optional)",
            "type": "array",
            "description": "Restrict the search to these communities. SaaS, r/SaaS and https://www.reddit.com/r/SaaS/ all work. Leave empty to search all of Reddit.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchCompetitors": {
            "title": "Search competitors",
            "type": "boolean",
            "description": "Run a separate Reddit search for each competitor. Turn off to use competitors only to classify mentions of your own brands (comparisons, switching); this halves the searches when you list as many competitors as brands.",
            "default": true
          },
          "scanPosts": {
            "title": "Return post mentions",
            "type": "boolean",
            "description": "Return posts whose title or body names a tracked term.",
            "default": true
          },
          "scanComments": {
            "title": "Scan comments",
            "type": "boolean",
            "description": "Read the first comments of every post that names a tracked term and return the comments that mention it too. Complaints, recommendations and comparisons are often in the replies. A comment that names no term itself can still qualify when its thread does and it talks about the product (matchType PARENT_CONTEXT).",
            "default": true
          },
          "maxPostsPerTerm": {
            "title": "Max posts per term",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many posts to scan for each brand, searched alias, competitor and keyword, per subreddit when subreddits are listed. Reddit's search stops at roughly 250 results per query, sort and time window.",
            "default": 100
          },
          "maxCommentsPerPost": {
            "title": "Max comments per post",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many comments to read in each thread, top comments first.",
            "default": 50
          },
          "timeRange": {
            "title": "Posted within",
            "enum": [
              "HOUR",
              "DAY",
              "WEEK",
              "MONTH",
              "YEAR",
              "ALL"
            ],
            "type": "string",
            "description": "Only posts from this window. Use DAY or HOUR for scheduled monitoring.",
            "default": "WEEK"
          },
          "sort": {
            "title": "Search sort",
            "enum": [
              "NEW",
              "RELEVANCE",
              "TOP",
              "COMMENTS"
            ],
            "type": "string",
            "description": "Reddit's search ordering. NEW is right for monitoring; RELEVANCE, TOP and COMMENTS find the strongest or busiest matches across the whole window.",
            "default": "NEW"
          },
          "onlyNewMentions": {
            "title": "Only new mentions",
            "type": "boolean",
            "description": "For scheduled monitoring: return (and charge for) only mentions this monitor has not delivered before. Memory is kept per monitor key in a named key-value store on your account.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "A name for this monitor's memory, e.g. notion-brand-monitor. Use the same key on every scheduled run. Without one, a key is derived from your terms and subreddits, so changing them starts a fresh memory. Setting a key with only-new mode off still records what was delivered, so rows show whether a mention is new."
          },
          "baselineMode": {
            "title": "First run",
            "enum": [
              "RETURN_CURRENT",
              "BASELINE_ONLY"
            ],
            "type": "string",
            "description": "What the FIRST run of a new monitor key does in only-new mode. RETURN_CURRENT returns the current mentions in the time window. BASELINE_ONLY remembers them without returning or charging any, so the next run returns only mentions that appear after it.",
            "default": "RETURN_CURRENT"
          },
          "minimumRelevance": {
            "title": "Minimum relevance",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop mentions below this relevance score (0–100). A brand named in a post title with product words nearby scores 75+; a plain mention 40; a lowercase common word with nothing product-like nearby (\"an apple\") 20; a search result whose body could not be read 15. Raise it for ambiguous brand names.",
            "default": 30
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Drop any post or comment containing one of these words or phrases, e.g. \"apple pie\", \"linear algebra\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeAuthors": {
            "title": "Exclude authors",
            "type": "array",
            "description": "Reddit usernames to leave out: your brand account, employees, known bots or promoters. u/name and name both work.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeSentiment": {
            "title": "Sentiment",
            "type": "boolean",
            "description": "POSITIVE / NEUTRAL / NEGATIVE / MIXED and a score from -1 to +1, read from the sentences that name the term. Rule-based and inferred: treat it as a signal, not a verdict.",
            "default": true
          },
          "includeMentionCategory": {
            "title": "Mention category",
            "type": "boolean",
            "description": "primaryCategory and secondaryCategories: COMPLAINT, PRAISE, BUG_REPORT, SUPPORT_ISSUE, FEATURE_REQUEST, COMPARISON, ALTERNATIVE_REQUEST, SWITCHING_INTENT, PURCHASE_INTENT, RECOMMENDATION, PRODUCT_FEEDBACK, QUESTION, CAMPAIGN_MENTION, GENERAL_MENTION.",
            "default": true
          },
          "includeIntent": {
            "title": "Intent signals",
            "type": "boolean",
            "description": "signals (SWITCHING_INTENT, ALTERNATIVE_REQUEST, COMPARISON_INTENT, SUPPORT_INTENT, RECOMMENDATION_INTENT, CANCEL_OR_CHURN_INTENT, FEATURE_REQUEST, BUYING_INTENT) and the switchingIntent flag.",
            "default": true
          },
          "includeBuyingIntent": {
            "title": "Buying-intent flag",
            "type": "boolean",
            "description": "buyingIntent: true when the writer is considering buying, subscribing or upgrading (\"should I get Notion Plus?\", \"is it worth it?\").",
            "default": true
          },
          "includeVelocitySummary": {
            "title": "Velocity summary",
            "type": "boolean",
            "description": "Add observedMentionVelocity to the run summary: mentions in the last hour / 24 hours / 7 days, and per-term counts of new, positive, negative, complaint, comparison and purchase-intent mentions.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Datacenter proxy (the default) or no proxy. Apify Residential is refused: the run fails at start. To route through your own residential provider, use Custom proxy URLs.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Searches and comment threads processed in parallel. Reddit paces each IP; higher values mostly help with many terms.",
            "default": 3
          },
          "debugMode": {
            "title": "Debug mode",
            "type": "boolean",
            "description": "Write every evaluated post and comment, kept or dropped, with its relevance breakdown and matched phrases, to the DEBUG_MENTIONS record.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}