{
  "openapi": "3.0.1",
  "info": {
    "title": "Reddit Leads / Purchase Intent Finder",
    "description": "Find Reddit posts and comments where people ask for recommendations, alternatives, tools or services. Explainable 0–100 intent score, HOT/WARM/COLD tiers, competitor-switching, budget and urgency, vendor filtering, one row per person, only-new monitoring. No Reddit login or API key.",
    "version": "1.0",
    "x-build-id": "2g15JxC566AW698J4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/coregent~reddit-leads-purchase-intent-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-coregent-reddit-leads-purchase-intent-finder",
        "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-leads-purchase-intent-finder/runs": {
      "post": {
        "operationId": "runs-sync-coregent-reddit-leads-purchase-intent-finder",
        "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-leads-purchase-intent-finder/run-sync": {
      "post": {
        "operationId": "run-sync-coregent-reddit-leads-purchase-intent-finder",
        "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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "What your buyers are looking for — a product category, a service, a problem. One per line, e.g. CRM, plumber, website builder, accounting software. Each keyword is searched across Reddit (or in each subreddit below), and every post and comment found is scored for purchase intent.",
            "default": [
              "CRM"
            ],
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Products or companies whose unhappy users you want to find, e.g. HubSpot, Salesforce, Monday.com. Each is searched by name; posts and comments asking for an alternative, switching away, or complaining about one are flagged COMPETITOR_REPLACEMENT / ALTERNATIVE_REQUEST / CURRENT_SOLUTION_PROBLEM.",
            "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"
            }
          },
          "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": "MONTH"
          },
          "sort": {
            "title": "Search sort",
            "enum": [
              "NEW",
              "RELEVANCE",
              "TOP",
              "HOT",
              "COMMENTS"
            ],
            "type": "string",
            "description": "Reddit's search ordering. NEW finds the freshest leads; RELEVANCE and TOP find the strongest matches across the whole window.",
            "default": "NEW"
          },
          "maxPostsPerKeyword": {
            "title": "Max posts per keyword",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many posts to scan for each keyword and competitor — per subreddit when subreddits are listed. Reddit's search itself stops at roughly 250 results per query, sort and time window.",
            "default": 100
          },
          "scanComments": {
            "title": "Scan comments",
            "type": "boolean",
            "description": "Also score the comments of threads where people ask, compare, complain or name a competitor. Many of the best leads are replies — \"same here, did you find one?\" or \"we're switching too\".",
            "default": true
          },
          "maxCommentsPerPost": {
            "title": "Max comments per thread",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many of each thread's top comments to score (replies included). 25–50 covers the comments most people read.",
            "default": 50
          },
          "includeSubredditNewPosts": {
            "title": "Also scan each subreddit's newest posts",
            "type": "boolean",
            "description": "Besides the keyword searches, read the newest posts of every listed subreddit. They still have to mention a keyword or competitor to qualify. Useful for small communities where search misses fresh posts.",
            "default": false
          },
          "minIntentScore": {
            "title": "Minimum intent score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "0–100. A plain \"What CRM should I use?\" scores 50; adding a budget, a deadline or a competitor to leave pushes it toward 100. Each lead's scoreBreakdown shows exactly where its points came from.",
            "default": 50
          },
          "intentTiers": {
            "title": "Intent tiers",
            "uniqueItems": true,
            "type": "array",
            "description": "HOT (70+): clear near-term action — a budget, a deadline, actively switching or hiring. WARM (50–69): a real need or comparison with less urgency. COLD (below 50): a relevant pain point with little current buying intent — also lower the minimum score to receive these.",
            "items": {
              "type": "string",
              "enum": [
                "HOT",
                "WARM",
                "COLD"
              ],
              "enumTitles": [
                "HOT",
                "WARM",
                "COLD"
              ]
            },
            "default": [
              "HOT",
              "WARM"
            ]
          },
          "intentPhrases": {
            "title": "Extra intent phrases",
            "type": "array",
            "description": "Your own buying phrases, matched as whole words, e.g. \"need a quote\", \"shortlisting vendors\". A match adds the CUSTOM_INTENT_PHRASE signal.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludePhrases": {
            "title": "Exclude phrases",
            "type": "array",
            "description": "Drop any post or comment containing one of these, e.g. \"I sell\", \"my agency\", \"affiliate\", \"discount code\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeAuthors": {
            "title": "Exclude authors",
            "type": "array",
            "description": "Reddit usernames to ignore — your own account, competitor staff, known bots. u/name or name.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeVendors": {
            "title": "Filter out vendors and self-promotion",
            "type": "boolean",
            "description": "Drop posts and comments that promote a product or service (\"we offer\", \"DM me\", \"I built\", affiliate and promo codes). Counted in the run summary as vendorsFiltered.",
            "default": true
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "LEAD",
              "MENTION"
            ],
            "type": "string",
            "description": "LEAD: one row per Reddit user, with their highest-intent post or comment as bestSource and every other qualifying mention in allMatchedSources. MENTION: one row per qualifying post or comment.",
            "default": "LEAD"
          },
          "includeAuthorProfile": {
            "title": "Include author karma and account age",
            "type": "boolean",
            "description": "Look up each delivered lead's public karma and account creation date. Never charged separately. Accounts Reddit marks as automated are dropped.",
            "default": true
          },
          "includeReplyAngle": {
            "title": "Suggest a reply angle",
            "type": "boolean",
            "description": "Add a one-line, rule-based suggestion of what a helpful reply would address (their competitor, budget or deadline). A prompt for a human, never an automated message.",
            "default": false
          },
          "onlyNewLeads": {
            "title": "Only new leads (monitoring)",
            "type": "boolean",
            "description": "Remember what earlier runs delivered and skip it: an author already delivered is not delivered again (LEAD), a post or comment already delivered is not delivered again (MENTION). For scheduled hourly or daily runs.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "A name for the memory 'Only new leads' uses, e.g. web-agency-leads. Runs with the same key share it. Leave empty to derive one from your keywords, competitors and subreddits."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many searches and threads are read at once (1–5). Reddit's own rate limits are respected per connection.",
            "default": 3
          },
          "debugMode": {
            "title": "Debug mode",
            "type": "boolean",
            "description": "Write every scored post and comment — kept or dropped, with its signals — to the key-value store record DEBUG_MENTIONS.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Datacenter proxy (the default) or no proxy both work. Apify RESIDENTIAL proxy is refused and fails the run at startup: Reddit pages are large and residential bandwidth is billed to the Actor, while Reddit serves the same data to datacenter addresses. To route through your own residential provider, use Custom proxy URLs — that traffic goes through your account and is honoured.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}