Faits : A. A.B._ et B.B._ (ci-après: les époux B._) sont locataires d'un appartement de cinq pièces situé au septième étage de l'immeuble sis 9, rue... (GE). Le loyer annuel hors charges s'élève à 24'000 fr. En 2011, C._, alors propriétaire, a mis en vente l'appartement précité. Chargé de l'estimation et de la vente, le courtier D._ a organisé cinq à six visites, qui se sont déroulées sans problème avec l'accord des époux B._. Le 11 janvier 2012, la Régie E._ SA (ci-après: la régie), nouvellement en charge de la gérance, a informé les locataires que la propriétaire de l'appartement depuis le 10 décembre 2011 était A._ SA (ci-après: la bailleresse). Cette société achète des biens pour les revendre; après avoir acquis l'appartement, elle a confié des mandats de vente à la régie et au courtier D._. Ce dernier n'a pas obtenu de réponse de la part des locataires lorsqu'il a cherché à organiser de nouvelles visites de l'appartement. Par lettre du 30 mars 2012, la régie a demandé aux locataires de prendre contact avec elle; elle expliquait vouloir effectuer une visite de l'appartement, sans autres détails. Par plis des 20 avril et 21 mai 2012, elle s'est derechef adressée aux locataires afin de fixer un rendez-vous destiné à une visite de l'appartement, rappelant simplement la teneur de l'art. 257h al. 2 CO. Les trois courriers susmentionnés sont restés sans réponse. Le 5 juin 2012, la régie a écrit aux locataires les lignes suivantes: " Nous vous rappelons expressément et pour la énième fois que l'art. 257h al. 2 CO mentionne clairement que le locataire doit autoriser le bailleur à inspecter la chose dans la mesure où cet examen est nécessaire à l'entretien, à la vente ou à une location ultérieure. Par conséquent, la situation ne pouvant perdurer ainsi, nous vous sommons de prendre contact avec [la] collaboratrice dans un délai de quinze jours afin qu'une visite de l'appartement loué puisse être effectuée d'ici au 30 juin 2012. La présente vaut sommation au sens de l'article 257f al. 3 CO. Faute d'obtempérer aux instructions précitées, la bailleresse sera en mesure de résilier votre bail moyennant un délai de congé minimum de trente jours pour la fin d'un mois (...). " Par courrier du 15 juin 2012, les locataires ont répondu n'avoir aucune réserve à propos d'éventuelles visites, dont ils souhaitaient connaître le nombre et la programmation afin qu'elles s'accordent avec leurs propres disponibilités professionnelles. Ils tenaient toutefois à rappeler les nombreuses visites effectuées avant la vente du logement par le précédent propriétaire et faisaient part de leur étonnement au sujet du projet d'une nouvelle vente, dont ils n'avaient eu vent que par le courtier D._; ils précisaient à cet égard qu'"il [leur] aurait été agréable, en [leur] qualité de locataires, d'être informés, de manière claire et précise, de cette seconde vente." Le 5 juillet 2012, la régie a répondu qu'il s'agissait à ce stade d'une inspection pour expertiser l'objet que la propriétaire envisageait de mettre en vente et qu'aucune commercialisation n'était entreprise à ce jour; elle requérait une prise de contact afin de fixer un rendez-vous. Sans nouvelles des locataires, la régie a sommé ces derniers, par lettre du 20 août 2012, de lui communiquer notamment leurs coordonnées téléphoniques dans un délai de quinze jours afin qu'une visite de l'appartement puisse être organisée avant le 10 septembre; elle a ajouté que le bail pourrait être résilié si les locataires ne donnaient pas suite à ce courrier, qui valait sommation au sens de l'art. 257f al. 3 CO. Les locataires n'ont pas réagi. Par avis du 12 septembre 2012 notifié à chacun des époux B._, la bailleresse a résilié le bail pour le 31 octobre 2012. B. Le 11 octobre 2012, les époux B._ ont formé une requête en constatation de l'inefficacité du congé devant la Commission de conciliation en matière de baux et loyers. Le 7 février 2013, la régie a pu effectuer une visite de l'appartement aux fins d'expertise. Non conciliée le 19 mars 2013, la cause a été portée devant le Tribunal des baux et loyers du canton de Genève. Par jugement du 7 novembre 2014, le tribunal a constaté que le congé du 12 septembre 2012 était inefficace. Statuant le 27 avril 2015 sur appel de A._ SA, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé la décision de première instance. En substance, la cour cantonale a jugé que les locataires n'étaient pas tenus de tolérer la visite en vue d'expertise de la chose louée, dès lors qu'une nouvelle expertise n'apparaissait pas indispensable après l'estimation ayant précédé la récente vente et que les intéressés n'étaient pas en mesure de comprendre qu'un projet de vente concret existait en été 2012. Bien que particulièrement peu réactifs, les locataires n'avaient pas enfreint leur devoir de diligence; au demeurant, une éventuelle violation n'aurait pas revêtu une gravité telle que la poursuite du bail aurait été insupportable. Une voire deux des conditions cumulatives de l'art. 257f al. 3 CO n'étaient ainsi pas réalisées. C. A._ SA interjette un recours en matière civile. A titre principal, elle demande au Tribunal fédéral de déclarer valable la résiliation notifiée pour le 31 octobre 2012 et de refuser toute prolongation du bail; elle conclut subsidiairement au renvoi de la cause à la cour cantonale. Les époux B._ proposent le rejet du recours, voire l'annulation du congé en tant que contraire à la bonne foi. Invitée à se déterminer, la Chambre des baux et loyers se réfère aux considérants de son arrêt.