The task of downloading comprehensive datasets of event-based seismic waveforms has been made easier through the development of standardised web services, but is still highly non-trivial, as the likelihood of temporary network failures or even worse subtle data errors naturally increase when the amount of requested data is in the order of millions of relatively short segments. This is even more challenging as the typical workflow is not restricted to a single massive download but consists of fetching all possible available input data (e.g., with several repeated download executions) for a processing stage producing any desired user-defined output. Here, we present stream2segment, a highly customisable Python 2+3 package helping the user through the whole workflow of downloading, inspecting and processing event-based seismic data by means of a relational database management system as archiving storage, which has clear performance and usability advantages. Stream2segment provides an integrated processing implementation able to produce any kind of user-defined output based on a configuration file and a user-defined Python function. Stream2segment can also produce diagnostic maps or user-defined plots which, unlike existing tools, do not require external software dependencies and are not static images but interactive browser-based applications ideally suited for data inspection or annotation tasks.