
A channel publishes one post for all subscribers; a bot sends each person a separate message. A bot may message only people who started it or gave it permission. It sends about 30 messages a second at no cost, so a large broadcast takes time. Only bots with a large audience can pay Stars to send faster than that.
A bot cannot start a conversation. The person has to press Start or write to the bot privately first. A user can also let a bot write by adding it to the attachment menu, by launching its Mini App from a link or by accepting the bot's request.
Contacts from your website or CRM therefore do not let a bot write to those people first. Broadcasts may go only to users who have given the bot permission to contact them.
The audience also shrinks over time. Any user can block a bot the way they block anyone else, and some apps put a Stop Bot button in the bot's profile. The bot receives an update when a user blocks or unblocks it in a private chat, so it can take that user off its list.
| Channel post | Bot message | |
|---|---|---|
| Who receives it | Everyone who joined the channel | Each user who started the bot or allowed it to write, unless they blocked it |
| How it arrives | One post in the channel; subscribers with notifications on get an alert | A separate message in each person's chat with the bot |
| How people opt out | They mute or leave the channel | They block the bot |
| Who else can see it | Posts of a public channel can be read on the web and found by search engines | Only the recipient's private chat with the bot; not published |
| How many messages | One post for all subscribers | One message per person, about 30 a second for free |
A channel suits news meant for everyone. A bot suits messages people asked to get from it, such as order updates, booking reminders or offers they signed up for, sent to each person separately.
Without paying, a bot can send about 30 messages a second to different users, and no more than one message a second within one chat. Short bursts above the single-chat limit may pass, but then the bot gets 429 errors. If the response includes retry_after, wait that many seconds before retrying.
Paid broadcasts raise the limit to 1,000 messages a second. Each message above the free 30 a second costs 0.1 Stars from the bot's balance. Only messages sent successfully are charged, and the fee is not refunded.
The figures in the table are our arithmetic. Time is the number of users divided by the rate, and the cost is 0.1 Stars for every message above the free 30 a second. They show the shortest possible time, because the real speed also depends on the bot's server and on the pauses after errors.
| Users in the list | At 30 a second | At 1,000 a second | Stars at 1,000 a second |
|---|---|---|---|
| 10,000 | About 6 minutes | 10 seconds | 970 |
| 100,000 | About 56 minutes | 100 seconds | 9,700 |
| 1,000,000 | About 9 hours | About 17 minutes | 97,000 |
For very large lists, Telegram suggests spreading notifications over 8 to 12 hours instead. At 30 messages a second, that window holds roughly 0.9 to 1.3 million messages.
Paid broadcasts are switched on in @BotFather, and the bot then asks for them in every send by setting allow_paid_broadcast to True. A send without it stays within the free limit.
The mode requires a large Stars balance and a large monthly active audience, as counted by Telegram. Check whether your bot qualifies in @BotFather before you plan a send around it.
The audience requirement, more than the price, decides who can use the mode. A smaller bot cannot switch it on, and it loses little without it: at a steady 30 messages a second, sending 50,000 messages takes about 28 minutes before delays.
A higher limit does not widen the circle of people a bot may write to. A bot must not harass or spam users with unsolicited messages, and it must not try to get around Telegram's rate limits. Paid broadcasts in particular must be used in good faith and for legitimate business purposes.
Users must also be told about significant changes in what a bot does and be given a way to opt out of them. A new kind of broadcast, such as promotions in a bot that used to send only order updates, can be such a change.
For breaking these rules Telegram can ban the bot, temporarily or for good, and the owner's Telegram account with it. Telegram leaves compliance with local laws to the developer, so check your country's rules on marketing messages as well. To grow the list within these rules, Telegram Ads can bring people who choose to start the bot.
An ad can lead straight to a bot, and its link can carry start parameters for the bot. For each ad, Telegram reports bot starts after an ad view.
In Adstat, which works inside an agency or reseller ad account, the promoted object of an ad can be a bot. In the accounts we run, the action for a bot ad is a bot start, so the report shows what a start cost, broken down by ad. The report downloads in Excel or CSV, so it can be set beside the bot's own records.
The broadcast itself is sent and measured in the bot's own system, outside the ad report.
Is a message to a user who blocked the bot charged?
No. In paid broadcasts only messages sent successfully are charged, and a message to someone who blocked the bot does not go through. Telegram does not say whether such failed sends count toward the 30 a second, so take blocked users off the list as soon as the bot learns about the block.
Why do we get 429 errors below 30 messages a second?
Check how often the bot writes into one chat. The limit there is about one message a second, and bursts above it lead to 429 errors even when the total rate is low.
How often can a bot message its users?
Telegram does not name a number, but it forbids unsolicited messages, so send only what users expect from the bot. For the bots we advertise, we recommend no more than one notification a day.