We investigate the algorithmic problem of selling information to agents who face a decision-making problem under uncertainty. We adopt the model recently proposed by Bergemann et al. [Bergemann et al., 2018], in which information is revealed through signaling schemes called experiments. In the single-agent setting, any mechanism can be represented as a menu of experiments. Our results show that the computational complexity of designing the revenue-optimal menu depends heavily on the way the model is specified. When all the parameters of the problem are given explicitly, we provide a polynomial time algorithm that computes the revenue-optimal menu. For cases where the model is specified with a succinct implicit description, we show that the tractability of the problem is tightly related to the efficient implementation of a Best Response Oracle: when it can be implemented efficiently, we provide an additive FPTAS whose running time is independent of the number of actions. On the other hand, we provide a family of problems, where it is computationally intractable to construct a best response oracle, and we show that it is NP-hard to get even a constant fraction of the optimal revenue. Moreover, we investigate a generalization of the original model by Bergemann et al. [Bergemann et al., 2018] that allows multiple agents to compete for useful information. We leverage techniques developed in the study of auction design (see e.g. [Yang Cai et al., 2012; Saeed Alaei et al., 2012; Yang Cai et al., 2012; Yang Cai et al., 2013; Yang Cai et al., 2013]) to design a polynomial time algorithm that computes the revenue-optimal mechanism for selling information.