{
  "openapi": "3.0.1",
  "info": {
    "title": "Stack Overflow Scraper - Questions, Answers, Vote Count",
    "description": "Stack Overflow scraper for every Stack Exchange site: search by text or tag, fetch questions by id, sort by date, votes or activity, add the answers. Up to 2,500 per search. Official Stack Exchange API, so it never breaks. $2 per 1,000 questions.",
    "version": "0.1",
    "x-build-id": "T2IgSNeCXdEHe9s5h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/om_kh~stack-overflow-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-om_kh-stack-overflow-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/om_kh~stack-overflow-scraper/runs": {
      "post": {
        "operationId": "runs-sync-om_kh-stack-overflow-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/om_kh~stack-overflow-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-om_kh-stack-overflow-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": {
          "tags": {
            "title": "Stack Overflow tags",
            "type": "array",
            "description": "Tags to monitor (e.g. 'python', 'react', 'your-product'). Each is watched for new questions.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Text searches (optional)",
            "type": "array",
            "description": "Full-text searches, e.g. pandas merge, docker compose.",
            "items": {
              "type": "string"
            }
          },
          "questionIds": {
            "title": "Question IDs or links (optional)",
            "type": "array",
            "description": "Specific questions to fetch, by number or by link.",
            "items": {
              "type": "string"
            }
          },
          "site": {
            "title": "Stack Exchange site",
            "type": "string",
            "description": "stackoverflow, superuser, serverfault, askubuntu, math, unix... (the name in the site's address).",
            "default": "stackoverflow"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "votes",
              "activity",
              "relevance"
            ],
            "type": "string",
            "description": "Order of the questions.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max questions per search",
            "minimum": 1,
            "maximum": 2500,
            "type": "integer",
            "description": "1 to 2,500. Default 100.",
            "default": 100
          },
          "includeAnswers": {
            "title": "Include answers",
            "type": "boolean",
            "description": "Add each question's answers (score, accepted flag, body, author) in an answers field. No extra charge.",
            "default": false
          },
          "dateFrom": {
            "title": "From date (optional)",
            "type": "string",
            "description": "YYYY-MM-DD, inclusive."
          },
          "dateTo": {
            "title": "To date (optional)",
            "type": "string",
            "description": "YYYY-MM-DD, inclusive."
          },
          "minScore": {
            "title": "Minimum score (optional)",
            "type": "integer",
            "description": "Keep only questions with at least this score."
          },
          "answeredOnly": {
            "title": "With an accepted answer only",
            "type": "boolean",
            "description": "For text searches: keep only questions that have an accepted answer.",
            "default": false
          },
          "apiKey": {
            "title": "Your Stack Apps key (optional)",
            "type": "string",
            "description": "Without a key Stack Exchange allows about 300 calls a day per address, which is enough for most runs. For very large or frequent runs, register a free key at stackapps.com/apps/oauth/register and paste it here: the allowance becomes 10,000 calls a day."
          },
          "currentItems": {
            "title": "Bring your own items (optional)",
            "type": "array",
            "description": "Skip the chained fetch and pass records directly (no upstream call, no fetch fee).",
            "default": []
          },
          "maxTotalChargeUsd": {
            "title": "Maximum Vigia charge (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Hard maximum amount that this run may charge."
          },
          "sources": {
            "title": "Data source (informational)",
            "type": "array",
            "description": "Declare every upstream source before this run. Each item needs name, authorization, and estimated_cost_usd.",
            "default": [
              {
                "name": "Stack Exchange official API (first-party)",
                "authorization": "public_official",
                "estimated_cost_usd": 0
              }
            ]
          },
          "monitorEnabled": {
            "title": "Monitor only new results",
            "type": "boolean",
            "description": "The first monitored run stores a free baseline. Later runs deliver and charge only new results.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor ID (optional)",
            "type": "string",
            "description": "Pins the persistent baseline to a name of your choice, so separate targets never share state. Leave empty to derive it automatically.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}