{
  "openapi": "3.0.1",
  "info": {
    "title": "Telegram Keyword Search Scraper & Monitor",
    "description": "Search 1,400+ big public Telegram channels for any keyword with Telegram's own search. Every result really contains your keyword. Export posts, views and reactions, and monitor brands, tickers and topics on a schedule. No login, no API key.",
    "version": "0.1",
    "x-build-id": "hltfUibKjljmYLpva"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/marvinkruell~telegram-keyword-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-marvinkruell-telegram-keyword-search-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/marvinkruell~telegram-keyword-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-marvinkruell-telegram-keyword-search-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/marvinkruell~telegram-keyword-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-marvinkruell-telegram-keyword-search-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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Words or phrases to search for, for example a brand, product, ticker or topic. Each keyword is searched separately.",
            "items": {
              "type": "string"
            }
          },
          "channels": {
            "title": "Channels to search",
            "type": "array",
            "description": "Public channels you already know. Use a username, @username or t.me link. These are always searched, in addition to the channels found automatically.",
            "items": {
              "type": "string"
            }
          },
          "useDirectory": {
            "title": "Search the largest public channels",
            "type": "boolean",
            "description": "Search your keywords in the largest active public Telegram channels from our channel directory (news, crypto, tech, finance and more, in many languages). This is where most mentions are found.",
            "default": true
          },
          "directoryChannels": {
            "title": "How many large channels",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "How many of the largest directory channels to search for each keyword. More channels find more mentions and take longer.",
            "default": 150
          },
          "languages": {
            "title": "Channel languages",
            "type": "array",
            "description": "Only search directory channels in these languages. Leave empty for all languages.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "ru",
                "uk",
                "ar",
                "fa",
                "es",
                "pt",
                "de",
                "fr",
                "it",
                "tr",
                "id",
                "hi",
                "zh",
                "ja",
                "ko",
                "he",
                "th"
              ],
              "enumTitles": [
                "English",
                "Russian",
                "Ukrainian",
                "Arabic",
                "Persian",
                "Spanish",
                "Portuguese",
                "German",
                "French",
                "Italian",
                "Turkish",
                "Indonesian",
                "Hindi",
                "Chinese",
                "Japanese",
                "Korean",
                "Hebrew",
                "Thai"
              ]
            },
            "default": []
          },
          "discoverChannels": {
            "title": "Find topic channels on the web",
            "type": "boolean",
            "description": "Also look up channels about each keyword through web search engines and Telegram search sites.",
            "default": true
          },
          "maxChannelsPerKeyword": {
            "title": "Channels per keyword",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many automatically found channels with matches to keep per keyword. Channels you list yourself are always included.",
            "default": 15
          },
          "expandViaForwards": {
            "title": "Follow forwards and mentions",
            "type": "boolean",
            "description": "Also search channels that matching posts forward from or mention. This finds related channels that search engines miss.",
            "default": true
          },
          "since": {
            "title": "Time window",
            "type": "string",
            "description": "Only return posts newer than this. Use a window like \"24 hours\", \"7 days\" or \"3 months\", or a date like 2026-10-01. In monitor mode this applies to the first run only.",
            "default": "30 days"
          },
          "matchFilter": {
            "title": "How closely posts must match",
            "enum": [
              "any",
              "all_words",
              "exact_phrase"
            ],
            "type": "string",
            "description": "Telegram's search also finds related words (for example \"BTC\" for \"bitcoin\"). Choose whether to keep those.",
            "default": "all_words"
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many posts in total, newest first. You pay per result, so this is also your cost cap.",
            "default": 200
          },
          "maxResultsPerChannel": {
            "title": "Maximum results per channel",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many matching posts to take from a single channel for each keyword.",
            "default": 40
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer views than this.",
            "default": 0
          },
          "minSubscribers": {
            "title": "Minimum channel subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip channels with fewer subscribers than this.",
            "default": 0
          },
          "monitorKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Give your monitor a name, for example \"my-brand\", and schedule this Actor. Each run then returns only posts that are new since the last run with the same name, and you only pay for those."
          },
          "slackWebhookUrl": {
            "title": "Slack alert (incoming webhook URL)",
            "type": "string",
            "description": "Send new matches to a Slack channel. Create an incoming webhook in Slack and paste its URL here."
          },
          "telegramBotToken": {
            "title": "Telegram alert: bot token",
            "type": "string",
            "description": "Send new matches to a Telegram chat. Create a bot with @BotFather, paste its token here, and add the chat ID below."
          },
          "telegramChatId": {
            "title": "Telegram alert: chat ID",
            "type": "string",
            "description": "The chat, group or channel the bot should post to, for example 123456789 or @mychannel. The bot must be allowed to post there."
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Send new matches as JSON (title, count, posts, summary) to your own endpoint, Make, Zapier or n8n."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many Telegram pages to load at the same time.",
            "default": 24
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Telegram pages are loaded directly first, which is fastest. If Telegram slows a request down, the retry goes through this proxy. The default works for most runs.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}