Is there a limit to size of data stored in update_option()?

The option_value column in the database is LONGTEXT, meaning it can hold up to 4GB of text.

But keep in mind that WordPress loads all options on every page load by default, and storing large values for options you only intend to use on a single page is inefficient. Either set the autoload argument of update_option() and add_option() to false, or store the data in a custom table and only query it when you need it.