{
  "openapi": "3.0.1",
  "info": {
    "title": "B2B Reddit Conversation Monitor",
    "description": "Find the Reddit threads that name a company, its competitors, or a product category. Enter a domain, category keywords, or a topic and get tagged threads and comments (complaint, switching, buying intent, alternative request) with an intent score, plus summary rows. CSV or Clay ready.",
    "version": "0.1",
    "x-build-id": "EesSIqDrLsUpmk0x9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~b2b-reddit-conversation-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-b2b-reddit-conversation-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/mambalabs~b2b-reddit-conversation-monitor/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-b2b-reddit-conversation-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/mambalabs~b2b-reddit-conversation-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-b2b-reddit-conversation-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "company",
              "category",
              "gap"
            ],
            "type": "string",
            "description": "What to look for. Company needs company_domain or domains. Category needs category_keywords. Gap needs a topic, subreddits, or both.",
            "default": "company"
          },
          "company_domain": {
            "title": "Company domain",
            "type": "string",
            "description": "Company mode. One company website, for example smartlead.ai. Brand names are resolved from it unless you give brand_names."
          },
          "domains": {
            "title": "Domains (batch)",
            "type": "array",
            "description": "Company mode. Several domains, one per line. Each gets its own rows and summary. Up to 50.",
            "items": {
              "type": "string"
            }
          },
          "brand_names": {
            "title": "Brand names",
            "type": "array",
            "description": "Company mode. Names to search for, as the company writes them, for example Smartlead. When empty, the brand name comes from Mamba Labs Company Identity Resolver (see the setting below) or the homepage title. Give it for a brand whose name is also a common word.",
            "items": {
              "type": "string"
            }
          },
          "product_names": {
            "title": "Product names",
            "type": "array",
            "description": "Company mode. Product names to search for beside the brand.",
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Company mode. Competitor names for share of voice and displacement signals. When empty and discover_competitors is on, competitors are found in the brand threads from comparison, alternative, and switching phrasing.",
            "items": {
              "type": "string"
            }
          },
          "discover_competitors": {
            "title": "Discover competitors",
            "type": "boolean",
            "description": "Company mode. Find competitors in the brand threads when none are given. A name must appear in two or more threads.",
            "default": true
          },
          "max_competitors": {
            "title": "Max competitors",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Company mode. Up to 5 competitors get share of voice columns and their own searches.",
            "default": 5
          },
          "use_identity_resolver": {
            "title": "Resolve brand names with Company Identity Resolver",
            "type": "boolean",
            "description": "Company mode, used only when brand_names is empty. Runs Mamba Labs Company Identity Resolver from your account to read the brand name; Apify charges you that actor's own result event (0.007 USD per domain). Off: the homepage title is used, at no extra charge.",
            "default": true
          },
          "category_keywords": {
            "title": "Category keywords",
            "type": "array",
            "description": "Category mode. Product lane phrases, one per line, for example cold email tools or sales engagement platform.",
            "items": {
              "type": "string"
            }
          },
          "known_companies": {
            "title": "Known companies",
            "type": "array",
            "description": "Category and gap modes. Company or product names to always count when they appear, beside the names found by pattern.",
            "items": {
              "type": "string"
            }
          },
          "topic": {
            "title": "Topic",
            "type": "string",
            "description": "Gap mode. What the questions are about, for example cold email deliverability. Used to search each subreddit and to find subreddits when none are given."
          },
          "topic_terms": {
            "title": "More topic queries",
            "type": "array",
            "description": "Gap mode. Extra search phrases for the same need, for example data enrichment and enrich leads beside the topic lead enrichment. Reddit search returns only posts that carry every word of a query, so a two word topic can be narrow. Up to 10.",
            "items": {
              "type": "string"
            }
          },
          "subreddits": {
            "title": "Subreddits",
            "type": "array",
            "description": "Limit every search to these subreddits, without the r/. When empty, company and category modes search all of Reddit and gap mode finds subreddits from the topic.",
            "items": {
              "type": "string"
            }
          },
          "exclude_subreddits": {
            "title": "Exclude subreddits",
            "type": "array",
            "description": "Rows from these subreddits are dropped, without the r/.",
            "items": {
              "type": "string"
            }
          },
          "vendor_subreddits": {
            "title": "Vendor subreddits",
            "enum": [
              "exclude",
              "flag",
              "include"
            ],
            "type": "string",
            "description": "A vendor's own subreddit (named after the brand, a competitor, or a company found in the run, such as r/smartlead) is read as marketing. Exclude drops those threads. Flag returns them with vendor_subreddit true and leaves them out of share of voice and every summary count. Include returns them with vendor_subreddit true and counts them. A subreddit you name in Subreddits is never treated as a vendor subreddit.",
            "default": "exclude"
          },
          "discover_subreddits": {
            "title": "Discover subreddits",
            "type": "boolean",
            "description": "Gap mode. Find up to 8 subreddits from the topic when none are given. The list used is in the run summary and on every theme row.",
            "default": true
          },
          "since_days": {
            "title": "Date window (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only threads posted in the last this many days.",
            "default": 90
          },
          "max_threads": {
            "title": "Max threads per input",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Thread rows per input in company and gap modes, and threads read in category mode. Each thread row is one thread-row charge.",
            "default": 100
          },
          "include_comments": {
            "title": "Comment rows",
            "type": "boolean",
            "description": "Return comments as their own rows (comment-row charge): in company mode, comments that name the brand or a competitor; in category mode, comments that name a company or a category keyword; in gap mode, answers that name a tool. Default: on in company and gap modes, off in category mode. Comments are read for tool names and answer status either way, up to Threads to open for comments."
          },
          "max_comment_threads": {
            "title": "Threads to open for comments",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many threads per input are opened to read comments, highest intent first. Default 20 in company mode, 30 in category mode, 50 in gap mode. 0 reads no comments."
          },
          "max_comments_per_thread": {
            "title": "Max comments per thread",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Comments read from each opened thread, top comments first.",
            "default": 25
          },
          "comment_depth": {
            "title": "Comment depth",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Reply levels read in each opened thread. 1 reads only top level replies.",
            "default": 2
          },
          "include_hacker_news": {
            "title": "Add Hacker News",
            "type": "boolean",
            "description": "Also search Hacker News through its public search API (no key). Rows carry source hacker_news.",
            "default": false
          },
          "max_charge_usd": {
            "title": "Max charge per run (USD)",
            "type": "string",
            "description": "Stop before a row would push this run past this amount. Empty: no limit beyond the one you set in Apify."
          },
          "only_new": {
            "title": "Only new results",
            "type": "boolean",
            "description": "For scheduled runs. Skip threads and comments an earlier run with the same state key already returned. Skipped rows are free. The seen list is kept in a key-value store in your account.",
            "default": false
          },
          "state_key": {
            "title": "State key",
            "type": "string",
            "description": "Names the seen list for only_new. Use one key per schedule. Empty: a key made from the input."
          },
          "webhook_url": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional https URL. At the end of the run the actor POSTs JSON with a Slack compatible text field, the run summary, and the top rows by intent score. A Slack incoming webhook URL works as is."
          },
          "webhook_top_n": {
            "title": "Webhook top rows",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many rows the webhook carries.",
            "default": 10
          },
          "proxy_mode": {
            "title": "Proxy",
            "enum": [
              "auto",
              "residential"
            ],
            "type": "string",
            "description": "Reddit refuses requests that do not come through a proxy. Auto uses the Apify datacenter proxy and moves to residential addresses only when Reddit refuses. Residential only is slower and is for runs where auto keeps being refused. This is a reliability choice; under pay per event the proxy is not billed to you.",
            "default": "auto"
          },
          "source_tag": {
            "title": "Source tag",
            "type": "string",
            "description": "Internal attribution tag for published tasks. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}