{
  "openapi": "3.0.1",
  "info": {
    "title": "Stack Overflow Question Monitor and Tag Alert Feed",
    "description": "Watches Stack Overflow for questions matching your tags, keywords, score floor, and age window. Dedupes across runs. Output JSON, CSV, or Excel. For devtool founders, DevRel teams, and technical marketers turning Stack Overflow intent into pipeline.",
    "version": "0.1",
    "x-build-id": "EzhBe9pDThxd6meS2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapemint~stackoverflow-lead-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapemint-stackoverflow-lead-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/scrapemint~stackoverflow-lead-monitor/runs": {
      "post": {
        "operationId": "runs-sync-scrapemint-stackoverflow-lead-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/scrapemint~stackoverflow-lead-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-scrapemint-stackoverflow-lead-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": {
          "tags": {
            "title": "Tags to watch",
            "type": "array",
            "description": "Stack Overflow tag slugs. Example: python, react, postgresql, vector-database, langchain. Find any tag slug in the URL of its tag page. Leave empty if using searchQueries instead.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Full text queries against Stack Overflow titles and bodies. Example: vector database alternative, langchain memory leak. Leave empty if only using tags.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (client side filter)",
            "type": "array",
            "description": "Only questions whose title or body contains any of these keywords are kept. Case insensitive. Leave empty to keep everything the tag or query returned.",
            "items": {
              "type": "string"
            }
          },
          "site": {
            "title": "Stack Exchange site",
            "type": "string",
            "description": "The Stack Exchange site to query. stackoverflow covers programming. Other popular sites: serverfault, superuser, dba, askubuntu, datascience, ai.stackexchange, devops.stackexchange.",
            "default": "stackoverflow"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "creation",
              "activity",
              "votes",
              "relevance"
            ],
            "type": "string",
            "description": "creation orders by newest first. activity orders by last activity (new answers, edits). votes orders by score. relevance is for search queries.",
            "default": "creation"
          },
          "maxAgeHours": {
            "title": "Max age in hours",
            "minimum": 0,
            "maximum": 8760,
            "type": "integer",
            "description": "Skip questions older than this many hours. Applied locally after API returns results. 0 keeps everything.",
            "default": 168
          },
          "minScore": {
            "title": "Minimum score",
            "minimum": -100,
            "maximum": 10000,
            "type": "integer",
            "description": "Skip questions with a score below this. Zero score is the default state for brand new questions. Negative is for downvoted ones.",
            "default": 0
          },
          "onlyUnanswered": {
            "title": "Unanswered questions only",
            "type": "boolean",
            "description": "Keep only questions with zero answers. Strong lead gen signal for devtool founders since these are open intent.",
            "default": false
          },
          "onlyNoAcceptedAnswer": {
            "title": "No accepted answer only",
            "type": "boolean",
            "description": "Keep only questions that have not yet accepted an answer. Includes questions with answers that did not resolve the asker's issue.",
            "default": false
          },
          "includeBody": {
            "title": "Include question body",
            "type": "boolean",
            "description": "Pull the full question body with formatting stripped. Turn off to save dataset space if you only need titles and tags.",
            "default": true
          },
          "maxQuestionsPerSource": {
            "title": "Max questions per tag or query",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Per source cap. Stack Exchange API returns up to 100 per page, the actor paginates until this cap or the end of results.",
            "default": 100
          },
          "maxQuestionsTotal": {
            "title": "Maximum questions per run",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on questions pushed to the dataset per run. Controls cost.",
            "default": 200
          },
          "dedupe": {
            "title": "Deduplicate across runs",
            "type": "boolean",
            "description": "Skip question IDs already pushed on previous runs. IDs are stored in the key value store under SEEN_IDS. Turn off to return every match on every run.",
            "default": true
          },
          "apiKey": {
            "title": "Stack Exchange API key (optional)",
            "type": "string",
            "description": "Without a key you get 300 API calls per day. With a free key from stackapps.com/apps/oauth/register you get 10,000 per day. Leave blank if your schedule fits under 300 calls."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy settings. The Stack Exchange API is public and rate friendly, a proxy is only needed if you are running many actors from one IP."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}