What Telegram Bot Hosting Actually Costs, by Message Volume

What Telegram Bot Hosting Actually Costs, by Message Volume

Telegram bots are unusually cheap to run, and the reason is worth understanding: Telegram stores everything. Message history, media, user identity, delivery — none of it is your infrastructure. A bot is a small stateless service that reacts to events.

So the costs are not where people expect them, and the thing that gets expensive is rarely the bot.

What actually consumes resources

Not message volume, mostly. Telegram's own limits cap you well below what a modest server can handle: bulk broadcasts run at about 30 messages per second, and no more than one message per second to a single chat. You will hit Telegram's ceiling long before you hit your server's.

What does cost:

Media handling. Sending a file_id for something already on Telegram's servers costs you nothing and has no size limit. Uploading fresh media costs bandwidth and time — and the API caps uploads at 10MB for photos and 50MB for other files via multipart, or 5MB/20MB when Telegram fetches from a URL you provide. If your bot passes files through rather than reusing file_ids, that is your bandwidth bill.

Your database. Users, sessions, ticket history, funnel state, analytics. This grows monotonically and it is where the real cost accumulates.

Scheduled work. Drip sequences, renewal checks, dunning. A bot serving 100,000 subscribers with several active sequences runs a lot of timers.

Redundancy, if you need it.

Rough monthly cost by scale

Figures are indicative — providers vary enormously and prices change. The useful part is the shape, not the numbers.

Small: under ~10,000 messages/month

At this scale free hosting genuinely works. Long polling, one small process, a managed database's free tier. Do not over-engineer.

Medium: ~100,000 messages/month

The important change here is not capacity — it is always-on. Free tiers that sleep on idle become unacceptable, for reasons below.

Large: ~1,000,000 messages/month

Even here it is modest. A million messages a month is roughly 23 per minute on average — trivial compute. The cost is the database, the queue and the operational tooling.

Where it stops being cheap

Not message volume. These:

If your bot costs a lot to run, it is almost certainly one of those four, not Telegram traffic.

The cost people forget

Paid Broadcasts. Above the free 30 messages/second, broadcasting costs 0.1 Stars per message. A 100,000-message broadcast is roughly 10,000 Stars — on the order of $133 at roughly $0.0133 per Star — and a million-message one around $1,330.

It is also gated: enabling it requires at least 100,000 Stars on the bot's balance and at least 100,000 monthly active users. Most bots cannot use it, and those that can should treat it as a per-campaign expense line, not infrastructure.

Free hosting: what it actually costs

Free tiers work at small scale and fail predictably at a specific point. CPU is rarely the binding constraint.

Sleep on idle. The one that bites hardest, and the one worth understanding in detail. Free instances suspend after inactivity and can take up to a minute to wake. On webhooks, Telegram's delivery attempt may fail during the cold start — a non-2XX response is retried, and the docs say only that Telegram will "repeat the request and give up after a reasonable amount of attempts." Undelivered updates sit in a pending queue (getWebhookInfo.pending_update_count) that Telegram keeps for at most 24 hours. A cold start of a minute is normally absorbed by the retries; what you lose is latency, not usually the update. The real risk is an outage that outlasts the retry budget — and even then queued updates are recoverable within 24 hours by calling deleteWebhook without drop_pending_updates and reading them with getUpdates.

Ephemeral storage. Local files vanish on restart. Fine if all state is in a database; catastrophic if you assumed otherwise.

No persistent scheduling. Drip sequences and renewal checks need something always running. A sleeping instance does not fire timers.

Bandwidth caps, hit by media-heavy bots.

The migration cost. Moving off free hosting under pressure, at the moment you have real users, is the expensive part.

Free is genuinely fine for: development, testing, low-traffic personal bots, polling-based bots with no scheduled work.

Free stops working the moment: you take payments, run sequences, use webhooks, or have users who notice silence.

That transition happens around the point where the bot starts mattering, which is the worst possible time to be migrating.

A sensible progression

  1. Build on free, with long polling. Prove the idea.
  2. Move to a small paid instance the moment you take money or run scheduled work. $5–$10 removes an entire category of problems.
  3. Add a managed database with backups before you have data you cannot lose.
  4. Add monitoringupdate arrival rate and certificate expiry — before you need it.
  5. Add a queue when broadcasts get large enough to need retry handling.

Most bots never need step 5.

The honest summary

Hosting a Telegram bot is cheap because Telegram does the expensive parts. Ten dollars a month runs a serious bot; a hundred runs a large one.

Spend the money at step 2 — the jump from free to a small always-on instance. It is the cheapest reliability you will ever buy, and it eliminates the sleep-on-idle failure that adds cold-start latency to every message arriving in a quiet period, and the risk of an outage outlasting Telegram's retries. It is not invisible — getWebhookInfo reports pending_update_count, last_error_date and last_error_message — but you have to be looking.


Cost figures are indicative September 2026 ranges across common providers and will vary. API limits and file size caps quoted from Telegram's Bot API documentation and Bot FAQ.