{
  "openapi": "3.0.1",
  "info": {
    "title": "Telegram Scraper - Channel Posts, Keywords & IOCs, No Login",
    "description": "Telegram scraper for public channels: posts, views, reactions and media, plus keyword hits, extracted indicators (CVE, IP, hash, wallet, domain, handle) and related channels. No login, no phone number.",
    "version": "1.0",
    "x-build-id": "Wfc9BTsldNoqYYm4M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ntriqpro~telegram-channel-osint/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ntriqpro-telegram-channel-osint",
        "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/ntriqpro~telegram-channel-osint/runs": {
      "post": {
        "operationId": "runs-sync-ntriqpro-telegram-channel-osint",
        "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/ntriqpro~telegram-channel-osint/run-sync": {
      "post": {
        "operationId": "run-sync-ntriqpro-telegram-channel-osint",
        "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": {
          "channels": {
            "title": "Channels",
            "maxItems": 500,
            "type": "array",
            "description": "Public Telegram channels to read: a name, @name or a t.me link. Paid Apify plans read up to 500 channels per run with full history. Free plan runs are a preview: 2 channels, the 10 newest posts of each (text cut at 280 characters), 1 indicator of each kind, 3 related channels and 1 keyword. Charged per channel checked ($0.005) and per row delivered ($0.004).",
            "items": {
              "type": "string"
            }
          },
          "postUrls": {
            "title": "Post URLs",
            "type": "array",
            "description": "Single posts to fetch by address, for example https://t.me/telegram/100. Each post found is one post row. A post the same run already delivered with its channel is not charged a second time; a notice row says so. (paid Apify plans only — free plan runs ignore this and say so)",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerChannel": {
            "title": "Max posts per channel",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "How many posts to read per channel, newest first (1 to 50,000, as far as the public preview reaches). Filters below apply to the posts read. Free plan runs return up to 10 newest posts per channel (fewer when this is below 10)."
          },
          "lastNDays": {
            "title": "Only the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Stop at posts older than this many days. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "sinceDate": {
            "title": "Only posts since",
            "type": "string",
            "description": "Stop at posts older than this date (YYYY-MM-DD). (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "before": {
            "title": "Start before post number",
            "minimum": 1,
            "type": "integer",
            "description": "Start reading backwards from this post number instead of the newest post. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Words or phrases to look for in the posts read (case-insensitive, partial match). Each channel × keyword gives one keyword result row with the match count, first and last match and the top posts, even when nothing matched. Free plan runs check the first keyword only.",
            "items": {
              "type": "string"
            }
          },
          "onlyMatching": {
            "title": "Only posts that match a keyword",
            "type": "boolean",
            "description": "Deliver post rows only for posts that contain at least one keyword. A channel is stopped after 100 pages in a row without a matching post. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Skip posts with fewer views than this. A channel is stopped after 100 pages in a row without a matching post."
          },
          "indicatorKinds": {
            "title": "Indicator kinds",
            "type": "array",
            "description": "Which indicators to extract from post text as their own rows, deduplicated per channel: CVE IDs, IPv4 addresses, file hashes (MD5, SHA-1, SHA-256), wallet addresses (BTC, ETH, TRON), emails, phone numbers, domains, @mentions and t.me channel links. Free plan runs show 1 indicator of each kind and say how many more were found.",
            "items": {
              "type": "string",
              "enum": [
                "cve",
                "ipv4",
                "hash",
                "wallet",
                "email",
                "phone",
                "domain",
                "mention",
                "channel_link"
              ],
              "enumTitles": [
                "CVE IDs",
                "IPv4 addresses",
                "File hashes",
                "Wallet addresses",
                "Emails",
                "Phone numbers",
                "Domains",
                "@mentions",
                "t.me channel links"
              ]
            }
          },
          "includeRelatedChannels": {
            "title": "Related channels",
            "type": "boolean",
            "description": "Collect the channels this channel forwards from, links to or mentions, and look each one up once for its name, subscriber count, verified badge and whether its preview is open. One row per related channel. Free plan runs show 3."
          },
          "incremental": {
            "title": "New posts only (monitoring)",
            "type": "boolean",
            "description": "Remember the last post number per channel and return only newer posts on the next run with the same monitor key. Deleted posts are never delivered again; a new baseline is taken only when the channel's newest post number is more than 200 below the saved one. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "monitorKey": {
            "title": "Monitor key",
            "type": "string",
            "description": "Name of the saved position used by \"New posts only\". Use a different key for each schedule that should keep its own position. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "full",
              "minimal",
              "rag"
            ],
            "type": "string",
            "description": "Shape of the post rows: full (every field), minimal (address, date, text, views) or rag (Markdown text and links for LLM pipelines). Formats other than full work on paid plans. (paid Apify plans only — free plan runs ignore this and say so)"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. The default datacenter proxy is enough for public channel previews."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}