{
  "openapi": "3.0.1",
  "info": {
    "title": "Telegram Profile Scraper: Channel, Group, Bot & User Info",
    "description": "Telegram scraper for profiles in bulk: from usernames or t.me links, each telegram channel, group, bot or user with the exact subscriber or member count, title, bio, photo, verified, numeric id, newest post. Optional channel posts with views, reactions, comments and keyword search. No login.",
    "version": "0.1",
    "x-build-id": "4iJntiSeCXw0dzp3D"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hyperbach~telegram-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hyperbach-telegram-profile-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/hyperbach~telegram-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hyperbach-telegram-profile-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/hyperbach~telegram-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hyperbach-telegram-profile-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": {
          "usernames": {
            "title": "Usernames or t.me links",
            "type": "array",
            "description": "Telegram channels, groups, bots and users, one per line, in any form: `durov`, `@durov`, `https://t.me/durov`, `t.me/s/durov`, `telegram.me/durov`, a post link (`t.me/durov/548` reads the channel) or an invite link (`t.me/+AbC…`, `t.me/joinchat/…`). One row per entity: the same entity given twice is read once. A value that is not a Telegram username or link comes back as a free row that says why.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxPostsPerChannel": {
            "title": "Posts per channel",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many of each channel's posts to deliver as post rows, newest first; 0 = the profile row only (it still carries the newest post's id and date). Only channels with a public preview have posts on the web; groups, bots and users have none. With a post filter (dates, search, comments or only new posts) and 0 here, up to 100 posts per channel are read.",
            "default": 0
          },
          "postsNewerThan": {
            "title": "Posts from",
            "pattern": "^(|[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{1,4} *(day|week|month|year)s?)$",
            "type": "string",
            "description": "Only posts published on or after this date: `2026-09-01`, or a span back from today such as `30 days`, `2 weeks`, `6 months` (UTC). With `Posts per channel` at 0, up to 100 posts per channel are read.",
            "default": ""
          },
          "postsOlderThan": {
            "title": "Posts before",
            "pattern": "^(|[0-9]{4}-[0-9]{2}-[0-9]{2}|[0-9]{1,4} *(day|week|month|year)s?)$",
            "type": "string",
            "description": "Only posts published before this date (same forms as `Posts from`). The Actor jumps to that point of the channel by post id instead of reading every newer post.",
            "default": ""
          },
          "postsSearch": {
            "title": "Search in posts",
            "maxLength": 200,
            "type": "string",
            "description": "Only posts that Telegram's own channel search finds for this text (a word, a phrase or a `#hashtag`), newest first. Telegram's search is shallow on large channels: the row says how many posts it returned.",
            "default": ""
          },
          "maxCommentsPerPost": {
            "title": "Comments per post",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Comments to add to each post row (`comments`: author, handle, text, date, reactions), from the channel's linked discussion group; 0 = none. A channel without public comments says so on each post (`comments_status`). Charged per comment delivered.",
            "default": 0
          },
          "deepProfile": {
            "title": "Deep profile",
            "type": "boolean",
            "description": "One or two more requests per channel or group: the creation date (a channel's first post, Telegram's \"Channel created\" message; a group's first message), the numeric id of a public group, and a channel's linked discussion group (its id). Each fact says where it came from (`created_at_source`).",
            "default": false
          },
          "includeMarkdown": {
            "title": "Markdown",
            "type": "boolean",
            "description": "Add a `markdown` text to each profile row: the profile and its delivered posts as Markdown, for a language model's context or a note.",
            "default": false
          },
          "onlyNewPosts": {
            "title": "Only new posts",
            "type": "boolean",
            "description": "Deliver only the posts published after the newest post an earlier run of the same task delivered: run a channel list daily and get only its new posts. Each channel's profile row (today's count) is still delivered and charged on every run; add `Only changed profiles` to skip unchanged ones. Turns the memory on.",
            "default": false
          },
          "onlyChanged": {
            "title": "Only changed profiles",
            "type": "boolean",
            "description": "Deliver (and charge) a profile only when its title, description, type, verified mark, warning label, exact count, newest post or username changed since the last time it was delivered. Every delivered profile carries `change_type`, the previous count and the change. Turns the memory on.",
            "default": false
          },
          "stateStoreName": {
            "title": "Memory name",
            "pattern": "^([A-Za-z0-9._-]{1,100})?$",
            "type": "string",
            "description": "Name of the memory between runs. Given, it turns the memory on: every profile row gets the change of its count since the last delivered read, per day, and a history of counts. Empty = derived from your usernames when `Only new posts` or `Only changed profiles` is on.",
            "default": ""
          },
          "maxItems": {
            "title": "Max charged rows",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "The most profile and post rows this run delivers (and charges), together. 0 = no limit. Free rows (not found, not a username) do not count.",
            "default": 0
          },
          "runTag": {
            "title": "Run tag",
            "maxLength": 100,
            "type": "string",
            "description": "A label copied onto every row (`run_tag`), to tell runs apart in a shared dataset.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}