In this paper, we address the caching problem in small cell networks from a game theoretic point of view. In particular, we formulate the caching problem as a many-to-many matching game between small base stations and service providers' servers. The servers store a set of videos and aim to cache these videos at the small base stations in order to reduce the experienced delay by the end-users. On the other hand, small base stations cache the videos according to their local popularity, so as to reduce the load on the backhaul links. We propose a new matching algorithm for the many-to-many problem and prove that it reaches a pairwise stable outcome. Simulation results show that the number of satisfied requests by the small base stations in the proposed caching algorithm can reach up to three times the satisfaction of a random caching policy. Moreover, the expected download time of all the videos can be reduced significantly.