{
  "openapi": "3.0.1",
  "info": {
    "title": "Stocktwits Scraper - Messages, Sentiment & New Posts Monitor",
    "description": "For traders, quant researchers and sentiment analysts: Stocktwits messages for tickers, users and trending, with text, author, Bullish/Bearish label, likes and time. On 2026-09-21, 14 of 30 $AAPL posts had a label. Monitoring mode returns only new posts. Unofficial. Public data only.",
    "version": "0.1",
    "x-build-id": "y9rjbaPZuHHfj5wId"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~stocktwits-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-stocktwits-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/neverempty~stocktwits-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-stocktwits-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/neverempty~stocktwits-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-stocktwits-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": {
          "symbols": {
            "title": "Symbols (tickers)",
            "type": "array",
            "description": "Stocktwits symbols whose message stream to read: AAPL, $TSLA, BRK.B, or a stocktwits.com/symbol/... link. Crypto symbols end in .X: BTC.X is Bitcoin, while BTC is a different, exchange-traded symbol (every row shows the symbol and title Stocktwits answered with). One per line; commas and spaces also separate entries. A repeated symbol is read and charged once and the repeat gets a free 'duplicate' row. If you leave symbols, usernames and trending all out with monitoring off, the example symbols AAPL, TSLA and BTC.X are read; with monitoring on at least one is required.",
            "items": {
              "type": "string"
            }
          },
          "usernames": {
            "title": "Usernames",
            "type": "array",
            "description": "Stocktwits users whose own messages to read: howardlindzon, @howardlindzon or a stocktwits.com/<username> link. Not case-sensitive.",
            "items": {
              "type": "string"
            }
          },
          "includeTrending": {
            "title": "Include the trending message stream",
            "type": "boolean",
            "description": "On = also read Stocktwits' trending message stream (messages across all symbols).",
            "default": false
          },
          "maxMessagesPerStream": {
            "title": "Maximum messages per stream",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Each symbol, user or trending stream returns at most its latest 30 messages: this Actor reads only the first page of a stream, because Stocktwits' robots.txt disallows the paging URLs. With monitoring off, the newest messages that pass the sentiment filter are returned per stream, up to this number. In monitoring mode it limits only the first check of a stream; later checks return every new message found. A message that appears in two streams of the same run (for example $AAPL and $TSLA) is returned and charged once.",
            "default": 30
          },
          "sentiment": {
            "title": "Sentiment filter",
            "enum": [
              "any",
              "bullish",
              "bearish",
              "labeled",
              "unlabeled"
            ],
            "type": "string",
            "description": "Return only messages with this sentiment label. Authors set the label themselves (Bullish or Bearish) and many messages have none. Messages that do not match are not returned and not charged.",
            "default": "any"
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only messages posted since the last run",
            "type": "boolean",
            "description": "Off = every run returns the latest messages of each stream, charged per row. On = the first run of a stream returns up to maxMessagesPerStream messages and remembers the newest message id; later runs return only messages newer than the remembered one. **In monitoring mode every stream read costs $0.30 per 1,000 stream checks, whether or not it has new messages**, plus the row price for the messages returned. Example: 20 symbols checked every 30 minutes = 28,800 checks a month = $8.64. If all 30 messages of a stream are new since the last check, older new messages may have been missed and a free 'possible-gap' row says so: check busy streams more often. Remembered per stream; do not put the same stream in two schedules that can run at the same time.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered and start over",
            "type": "boolean",
            "description": "Clears everything remembered for every stream, so the next monitoring run treats each stream as a first check again. This affects all your monitoring runs, because the memory is stored per stream rather than per list. Turn it off again after one run: left on in a schedule, every run is a first check.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}