{
  "openapi": "3.0.1",
  "info": {
    "title": "Telegram Channel Finder",
    "description": "Turn a few Telegram channels you know into hundreds you do not. It follows the channels your seeds link to, forward from and name, then returns each one with its exact subscriber count, name, description and alphabet, filtered to the size you want. Every result says which channel led to it.",
    "version": "0.0",
    "x-build-id": "KdOen4Qpf7Uroc0mM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~telegram-channel-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-telegram-channel-finder",
        "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/apt_marble~telegram-channel-finder/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-telegram-channel-finder",
        "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/apt_marble~telegram-channel-finder/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-telegram-channel-finder",
        "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": [
          "seedChannels"
        ],
        "properties": {
          "seedChannels": {
            "title": "Seed channels",
            "type": "array",
            "description": "The channels to start from — one per line, as @name, a plain name, or a full Telegram link. Pick channels close to the topic you care about: everything the actor finds is a channel that your seeds link to, forward from, or name, so better seeds mean better results. Private invite links are skipped, because nothing about them is public.",
            "default": [
              "@durov",
              "@tginfo"
            ],
            "items": {
              "type": "string"
            }
          },
          "depth": {
            "title": "How far to explore",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many rounds of exploring to do. 1 returns the channels your seeds point at. 2 also explores the channels found in round one, and 3 goes one step further again. Each extra round widens the net a lot and drifts further from your original topic, so start at 1.",
            "default": 1
          },
          "maxChannels": {
            "title": "Maximum channels to return",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop once this many channels have been returned. This is also your bill: you pay per channel returned.",
            "default": 100
          },
          "minSubscribers": {
            "title": "Minimum subscribers",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Skip channels smaller than this. Leave at 0 to keep every size. Channels that do not publish an audience size at all are skipped whenever any size limit is set, because the filter cannot be checked against them — and so are the few whose only published figure is a rounded one that rounds across the limit you set.",
            "default": 0
          },
          "maxSubscribers": {
            "title": "Maximum subscribers",
            "minimum": 1,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Skip channels larger than this — useful when you want reachable mid-size channels rather than the giants everybody already knows. Leave empty for no upper limit; 0 is not a limit, it would leave nothing at all."
          },
          "language": {
            "title": "Written in",
            "enum": [
              "any",
              "latin",
              "cyrillic",
              "arabic",
              "hebrew",
              "greek",
              "chinese",
              "japanese",
              "korean",
              "thai",
              "devanagari",
              "armenian",
              "georgian"
            ],
            "type": "string",
            "description": "Keep only channels that write in a given alphabet, worked out from the channel's own name and description. Choose \"Any\" to keep them all. Channels with no readable name or description are reported as unknown and are skipped whenever this is set.",
            "default": "any"
          },
          "postsToScan": {
            "title": "Posts to read per channel",
            "minimum": 5,
            "maximum": 500,
            "type": "integer",
            "description": "How many recent posts to read on each channel while looking for the channels it points at. More posts find more channels and take longer; 50 is a good balance.",
            "default": 50
          },
          "includeSeedChannels": {
            "title": "Return the seed channels too",
            "type": "boolean",
            "description": "Keep this on to get a full row for each seed channel as well, with its exact subscriber count and description. Turn it off when you only want the channels you did not already know about.",
            "default": true
          },
          "country": {
            "title": "Browse from",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "pl",
              "se",
              "tr",
              "ua",
              "in",
              "sg",
              "jp",
              "br",
              "mx",
              "ae",
              "za"
            ],
            "type": "string",
            "description": "Which country to browse from if Telegram cannot be reached the usual way. A few channels are restricted in some places, so it can change what is found on the runs where it is used — but most runs never need it and are unaffected by this setting.",
            "default": "us"
          },
          "channelsAtOnce": {
            "title": "Channels at a time",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many channels to work through simultaneously. Higher finishes a big job sooner; 16 is a good balance and 32 is the ceiling.",
            "default": 6
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}