{
  "openapi": "3.0.1",
  "info": {
    "title": "Telegram Channel Analytics: Stats, Growth & Fake Check",
    "description": "Telegram channel stats without login: exact subscribers, reach per post, ERR, growth history, ads and advertisers, fake-subscriber signals, best posting time. Compare channels, map a niche, check groups (members, online), export posts. A TGStat alternative with an API.",
    "version": "0.1",
    "x-build-id": "qPAd6vFkFeG3HLx6h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~telegram-channel-analytics/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-telegram-channel-analytics",
        "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/s_actors~telegram-channel-analytics/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-telegram-channel-analytics",
        "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/s_actors~telegram-channel-analytics/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-telegram-channel-analytics",
        "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": [
          "channels"
        ],
        "properties": {
          "mode": {
            "title": "📋 What to do",
            "enum": [
              "analyze",
              "ads",
              "mentions",
              "niche",
              "posts"
            ],
            "type": "string",
            "description": "Analyze: one row per channel or group with subscribers, reach, ERR, growth, ads, best time and a quality score; several channels are ranked against each other. Ads: the ad and promo posts of the channels, with the advertiser. Mentions: posts in the channels that mention your words, @names or links. Niche map: channels the seed channels mention, forward and promote, each analyzed. Posts: export posts with views and reactions.",
            "default": "analyze"
          },
          "channels": {
            "title": "📣 Channels or groups",
            "type": "array",
            "description": "Public channels or groups: @name, name or a t.me/name link, one per line. For the niche map: 1-5 seed channels of the niche. Private invite links (t.me/+...) cannot be read.",
            "items": {
              "type": "string"
            }
          },
          "postsToAnalyze": {
            "title": "🔢 Posts to analyze per channel",
            "minimum": 20,
            "maximum": 1000,
            "type": "integer",
            "description": "Analyze, ads and niche map: how many of the latest posts to read per channel (20 per page).",
            "default": 100
          },
          "searchTerms": {
            "title": "🔎 Words, @names or links to find",
            "type": "array",
            "description": "Mentions mode: what to look for in the channels (Telegram search inside each channel), e.g. a brand, @competitor or yoursite.com.",
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerChannel": {
            "title": "📄 Max posts per channel",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Posts and mentions modes: how many posts to return per channel (and per word).",
            "default": 100
          },
          "newerThan": {
            "title": "📅 Only posts newer than",
            "type": "string",
            "description": "Posts, ads and mentions: a date (2026-09-01) or a period (\"30 days\", \"2 weeks\", \"6 months\"). Empty = no date limit."
          },
          "includeChannelPromos": {
            "title": "🔁 Include channel promos",
            "type": "boolean",
            "description": "Ads mode: also return posts that promote other Telegram channels (invite links, \"subscribe to @...\"), not only marked ads and tracked links.",
            "default": true
          },
          "minMentions": {
            "title": "🕸️ Niche map: minimum mentions",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Only channels mentioned or forwarded at least this many times in the seed channels' posts.",
            "default": 2
          },
          "maxDiscoveredChannels": {
            "title": "🔭 Niche map: max channels",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many discovered channels to analyze (most mentioned first).",
            "default": 30
          },
          "onlyChanges": {
            "title": "🔔 Only report changes",
            "type": "boolean",
            "description": "For scheduled runs. The first run returns everything and saves the state; later runs return only new posts, new ads or new mentions, and in Analyze only channels whose subscribers changed by the percent below, that ran new ads or whose quality level changed.",
            "default": false
          },
          "alertSubscriberChangePercent": {
            "title": "📈 Analyze: report subscriber change of at least (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Monitoring in Analyze mode: report a channel when its subscribers changed by at least this many percent since the last run.",
            "default": 1
          },
          "monitorName": {
            "title": "🏷️ Monitor name",
            "type": "string",
            "description": "Separate monitors keep separate memory. Use a different name for each scheduled task.",
            "default": "default"
          },
          "maxConcurrency": {
            "title": "⚡ Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at the same time.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}