diff --git a/homeassistant/components/telegram_bot/__init__.py b/homeassistant/components/telegram_bot/__init__.py
index 29dbabcbbfe09afa0aec80b6eab9a81dcaab4eb8..be1c8325c5ff7556147571b4270541344504948e 100644
--- a/homeassistant/components/telegram_bot/__init__.py
+++ b/homeassistant/components/telegram_bot/__init__.py
@@ -80,6 +80,12 @@ ATTR_VERIFY_SSL = "verify_ssl"
 ATTR_TIMEOUT = "timeout"
 ATTR_MESSAGE_TAG = "message_tag"
 ATTR_CHANNEL_POST = "channel_post"
+ATTR_QUESTION = "question"
+ATTR_OPTIONS = "options"
+ATTR_ANSWERS = "answers"
+ATTR_OPEN_PERIOD = "open_period"
+ATTR_IS_ANONYMOUS = "is_anonymous"
+ATTR_ALLOWS_MULTIPLE_ANSWERS = "allows_multiple_answers"
 
 CONF_ALLOWED_CHAT_IDS = "allowed_chat_ids"
 CONF_PROXY_URL = "proxy_url"
@@ -96,6 +102,7 @@ SERVICE_SEND_VIDEO = "send_video"
 SERVICE_SEND_VOICE = "send_voice"
 SERVICE_SEND_DOCUMENT = "send_document"
 SERVICE_SEND_LOCATION = "send_location"
+SERVICE_SEND_POLL = "send_poll"
 SERVICE_EDIT_MESSAGE = "edit_message"
 SERVICE_EDIT_CAPTION = "edit_caption"
 SERVICE_EDIT_REPLYMARKUP = "edit_replymarkup"
@@ -184,6 +191,19 @@ SERVICE_SCHEMA_SEND_LOCATION = BASE_SERVICE_SCHEMA.extend(
     }
 )
 
+SERVICE_SCHEMA_SEND_POLL = vol.Schema(
+    {
+        vol.Optional(ATTR_TARGET): vol.All(cv.ensure_list, [vol.Coerce(int)]),
+        vol.Required(ATTR_QUESTION): cv.string,
+        vol.Required(ATTR_OPTIONS): vol.All(cv.ensure_list, [cv.string]),
+        vol.Optional(ATTR_OPEN_PERIOD): cv.positive_int,
+        vol.Optional(ATTR_IS_ANONYMOUS, default=True): cv.boolean,
+        vol.Optional(ATTR_ALLOWS_MULTIPLE_ANSWERS, default=False): cv.boolean,
+        vol.Optional(ATTR_DISABLE_NOTIF): cv.boolean,
+        vol.Optional(ATTR_TIMEOUT): cv.positive_int,
+    }
+)
+
 SERVICE_SCHEMA_EDIT_MESSAGE = SERVICE_SCHEMA_SEND_MESSAGE.extend(
     {
         vol.Required(ATTR_MESSAGEID): vol.Any(
@@ -246,6 +266,7 @@ SERVICE_MAP = {
     SERVICE_SEND_VOICE: SERVICE_SCHEMA_SEND_FILE,
     SERVICE_SEND_DOCUMENT: SERVICE_SCHEMA_SEND_FILE,
     SERVICE_SEND_LOCATION: SERVICE_SCHEMA_SEND_LOCATION,
+    SERVICE_SEND_POLL: SERVICE_SCHEMA_SEND_POLL,
     SERVICE_EDIT_MESSAGE: SERVICE_SCHEMA_EDIT_MESSAGE,
     SERVICE_EDIT_CAPTION: SERVICE_SCHEMA_EDIT_CAPTION,
     SERVICE_EDIT_REPLYMARKUP: SERVICE_SCHEMA_EDIT_REPLYMARKUP,
@@ -399,6 +420,10 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
             await hass.async_add_executor_job(
                 partial(notify_service.send_location, **kwargs)
             )
+        elif msgtype == SERVICE_SEND_POLL:
+            await hass.async_add_executor_job(
+                partial(notify_service.send_poll, **kwargs)
+            )
         elif msgtype == SERVICE_ANSWER_CALLBACK_QUERY:
             await hass.async_add_executor_job(
                 partial(notify_service.answer_callback_query, **kwargs)
@@ -847,6 +872,34 @@ class TelegramNotificationService:
                 timeout=params[ATTR_TIMEOUT],
             )
 
+    def send_poll(
+        self,
+        question,
+        options,
+        is_anonymous,
+        allows_multiple_answers,
+        target=None,
+        **kwargs,
+    ):
+        """Send a poll."""
+        params = self._get_msg_kwargs(kwargs)
+        openperiod = kwargs.get(ATTR_OPEN_PERIOD)
+        for chat_id in self._get_target_chat_ids(target):
+            _LOGGER.debug("Send poll '%s' to chat ID %s", question, chat_id)
+            self._send_msg(
+                self.bot.send_poll,
+                "Error sending poll",
+                params[ATTR_MESSAGE_TAG],
+                chat_id=chat_id,
+                question=question,
+                options=options,
+                is_anonymous=is_anonymous,
+                allows_multiple_answers=allows_multiple_answers,
+                open_period=openperiod,
+                disable_notification=params[ATTR_DISABLE_NOTIF],
+                timeout=params[ATTR_TIMEOUT],
+            )
+
     def leave_chat(self, chat_id=None):
         """Remove bot from chat."""
         chat_id = self._get_target_chat_ids(chat_id)[0]
diff --git a/homeassistant/components/telegram_bot/services.yaml b/homeassistant/components/telegram_bot/services.yaml
index 6afd42dffb81c98248f122f5b0c9278e278ed846..31876bd542d912c796e549c7ba1cd2ec4b2b3134 100644
--- a/homeassistant/components/telegram_bot/services.yaml
+++ b/homeassistant/components/telegram_bot/services.yaml
@@ -678,6 +678,60 @@ send_location:
       selector:
         text:
 
+send_poll:
+  name: Send poll
+  description: Send a poll.
+  fields:
+    target:
+      name: Target
+      description: An array of pre-authorized chat_ids to send the location to. If not present, first allowed chat_id is the default.
+      example: "[12345, 67890] or 12345"
+      selector:
+        object:
+    question:
+      name: Question
+      description: Poll question, 1-300 characters
+      required: true
+      selector:
+        text:
+    options:
+      name: Options
+      description: List of answer options, 2-10 strings 1-100 characters each
+      required: true
+      selector:
+        object:
+    is_anonymous:
+      name: Is Anonymous
+      description: If the poll needs to be anonymous, defaults to True
+      selector:
+        boolean:
+    allows_multiple_answers:
+      name: Allow Multiple Answers
+      description: If the poll allows multiple answers, defaults to False
+      selector:
+        boolean:
+    open_period:
+      name: Open Period
+      description: Amount of time in seconds the poll will be active after creation, 5-600.
+      selector:
+        number:
+          min: 5
+          max: 600
+          unit_of_measurement: seconds
+    disable_notification:
+      name: Disable notification
+      description: Sends the message silently. iOS users and Web users will not receive a notification, Android users will receive a notification with no sound.
+      selector:
+        boolean:
+    timeout:
+      name: Timeout
+      description: Timeout for send poll. Will help with timeout errors (poor internet connection, etc)
+      selector:
+        number:
+          min: 1
+          max: 3600
+          unit_of_measurement: seconds
+
 edit_message:
   name: Edit message
   description: Edit a previously sent message.