Studying the movements of crowds is important for understanding and predicting the behavior of large groups of people. When analyzing such crowds, one is often interested in the long-term macro-level motions of the crowd, as opposed to the micro-level individual movements at each moment in time. A high-level representation of these motions is thus desirable. In this work, we present a scalable method for detection of crowd motion patterns, i.e., spatial areas describing the dominant motions within the crowd. For measuring crowd movements, we propose a fast, scalable, and low-cost method based on proximity graphs. For analyzing crowd movements, we utilize a three-stage pipeline: (1) represents the behavior of each person at each moment in time using a low-dimensional data point, (2) cluster these data points based on spatial relations, and (3) concatenate these clusters based on temporal relations. Experiments on synthetic datasets reveals our method can handle various scenarios including curved lanes and diverging flows. Evaluation on real-world datasets shows our method is able to extract useful motion patterns from such scenarios which could not be properly detected by existing methods. Overall, we see our work as an initial step towards rich pattern recognition.