The combinatorial binding of trans-acting factors (TFs) to regulatory genomic regions is an important basis for the spatial and temporal specificity of gene regulation. We present a new computational approach that reveals how TFs are organized into combinatorial regulatory programs. We define a regulatory program to be a set of TFs that bind together at a regulatory region. Unlike other approaches to characterizing TF binding, we permit a regulatory region to be bound by one or more regulatory programs. We have developed a method called regulatory program discovery (RPD) that produces compact and coherent regulatory programs from in vivo binding data using a topic model. Using RPD we find that the binding of 115 TFs in K562 cells can be organized into 49 interpretable regulatory programs that bind ~140,000 distinct regulatory regions in a modular manner. The discovered regulatory programs recapitulate many published protein-protein physical interactions and have consistent functional annotations of chromatin states. We found that, for certain TFs, direct (motif present) and indirect (motif absent) binding is characterized by distinct sets of binding partners and that the binding of other TFs can predict whether the TF binds directly or indirectly with high accuracy. Joint analysis across two cell types reveals both cell-type-specific and shared regulatory programs and that thousands of regulatory regions use different programs in different cell types. Overall, our results provide comprehensive cell-type-specific combinatorial binding maps and suggest a modular organization of binding programs in regulatory regions.