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.
Considérant en droit :
1.
Le recours est dirigé contre un arrêt final (art. 90 LTF) rendu en matière civile (art. 72 al. 1 LTF) par un tribunal supérieur d'un canton, qui a statué sur recours (art. 75 LTF). La cause atteint la valeur litigieuse de 15'000 fr. ouvrant le recours en matière civile dans les affaires relevant du droit du bail à loyer (art. 74 al. 1 let. a LTF; cf. ATF 137 III 389 consid. 1.1 p. 390; 136 III 196 consid. 196 consid. 1.1 p. 197). Au surplus, le recours est exercé par la partie qui a succombé dans sa conclusion tendant à faire constater la validité du congé anticipé et qui a donc qualité pour recourir (art. 76 al. 1 LTF). Déposé dans le délai (art. 100 al. 1 LTF) et la forme (art. 42 LTF) prévus par la loi, le recours est en principe recevable, sous réserve de l'examen des griefs particuliers.
2.
Sous le grief d'établissement inexact des faits (art. 97 LTF), la recourante reproche à la cour cantonale de ne pas avoir repris intégralement dans son arrêt les témoignages du courtier D._ et de F._, employée au service de courtage de la régie. La recourante se borne à affirmer, de manière toute générale, que ces déclarations sont d'une importance primordiale pour juger de la cause. Plus loin dans son mémoire, elle évoque spécifiquement deux éléments ressortant desdits témoignages, qui n'auraient pas été retenus de manière arbitraire dans la décision entreprise: le fait que le courtier D._ a laissé un message sur le téléphone portable de l'intimée et l'impossibilité pour la régie de faire visiter l'appartement à des acheteurs potentiels avant d'expertiser l'appartement.
2.1. Le Tribunal fédéral conduit son raisonnement juridique sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut s'en écarter que si les faits ont été établis de façon manifestement inexacte - ce qui correspond à la notion d'arbitraire au sens de l'art. 9 Cst. (ATF 140 III 115 consid. 2 p. 117; 137 I 58 consid. 4.1.2 p. 62; 137 II 353 consid. 5.1 p. 356) - ou en violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF). Si l'auteur du recours se plaint d'un tel grief, encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF). L'exception prévue à l'art. 105 al. 2 LTF ne permet pas aux parties de rediscuter dans leurs mémoires les faits de la cause comme si elles plaidaient devant un juge d'appel. La partie recourante qui, sur la base de l'art. 97 al. 1 LTF, entend faire rectifier ou compléter un état de fait doit expliquer de manière circonstanciée en quoi les conditions d'une telle modification seraient réalisées (ATF 140 III 16 consid. 1.3.1 p. 18; 137 II 353 consid. 5.1 p. 356; 136 I 184 consid. 1.2 p. 187), au même titre que la partie qui invoque une violation de l'interdiction constitutionnelle de l'arbitraire dans l'appréciation des preuves et l'établissement des faits (cf. art. 106 al. 2 LTF; ATF 137 I 58 consid. 4.1.2 p. 62; 134 II 244 consid. 2.2 p. 246; 133 II 249 consid. 1.4.3 p. 254 s.).
2.2. Dans la mesure où elle se contente de prétendre que les deux témoignages invoqués auraient dû être repris tels quels dans l'arrêt cantonal, la recourante formule un grief irrecevable, faute d'une motivation correspondant aux exigences en la matière.
En ce qui concerne le premier des deux faits que la cour cantonale n'aurait pas retenus de manière arbitraire, il résulte bien des constatations de l'arrêt attaqué que les locataires ont eu vent par le courtier D._ d'un projet de deuxième vente de l'appartement loué. On ne voit dès lors pas en quoi le fait que ledit courtier ait laissé un message sur le répondeur de l'intimée apporterait un élément supplémentaire, de quelque façon pertinent pour l'issue de la cause. En tout cas, la recourante ne l'explique pas de manière circonstanciée, de sorte que le grief est irrecevable faute de motivation adéquate.
Pour la même raison, le grief tiré d'un établissement inexact des faits est irrecevable sur le second point. En effet, la recourante se limite à prétendre, sans explication, que la cour cantonale a ignoré arbitrairement le témoignage F._ selon lequel la régie ne pouvait faire visiter l'appartement à d'éventuels acheteurs dès lors qu'elle n'avait pu le voir pour expertise.
3.
La recourante se plaint d'une violation de l'art. 257f al. 3 et de l'art. 257h al. 2 CO. A titre liminaire, elle critique un avis de doctrine cité dans la décision attaquée, selon lequel l'inspection de l'objet loué en vue d'une vente suppose une résiliation préalable du bail. Par ailleurs, elle soutient que la cour cantonale a pris en compte des critères étrangers à l'art. 257h al. 2 CO. A son sens, le droit à une inspection de l'objet loué en vue d'une vente suppose uniquement une intention réelle de vendre et des démarches concrètes dans ce sens. Or, ces conditions seraient réalisées en l'espèce, dès lors que les locataires connaissaient la volonté de revendre de la propriétaire et que la visite souhaitée, destinée à expertiser l'appartement, constituait une démarche concrète et justifiée en vue de la vente. Selon la recourante, les intimés étaient donc tenus de tolérer l'inspection par la régie et ont violé leur devoir de diligence en ne donnant pas suite aux nombreuses demandes de contact des courtiers.
Au surplus, la recourante fait valoir que la résiliation du bail était nécessaire afin de pouvoir procéder à la vente de l'appartement. Contrairement à ce que la cour cantonale a admis dans une motivation subsidiaire, le refus persistant des locataires de laisser visiter l'appartement constituerait ainsi une violation du contrat d'une gravité telle qu'elle rendait la poursuite du bail insupportable pour la recourante.
3.1. L'art. 257f al. 3 CO confère au bailleur le droit de résilier le bail de manière anticipée lorsque le maintien du contrat lui est devenu insupportable parce que le locataire, nonobstant une protestation écrite, persiste à enfreindre son devoir de diligence; les baux d'habitation peuvent être résiliés moyennant un délai de congé minimum de 30 jours pour la fin d'un mois.
La résiliation fondée sur l'art. 257f al. 3 CO suppose tout d'abord, de la part du locataire, une violation du devoir de diligence en rapport avec l'usage de la chose louée (ATF 132 III 109 consid. 5 p. 113 s.; 123 III 124 consid. 2a p. 126). Cette violation peut consister dans le refus de procéder aux opérations préalables à des réparations que le locataire doit tolérer conformément à l'art. 257h al. 1 CO (arrêt 4C.306/2003 du 20 février 2004 consid. 3.3 in SJ 2004 I 439) ou dans le refus d'autoriser l'inspection de la chose louée dans les cas prévus à l'art. 257h al. 2 CO (ROGER WEBER, in Basler Kommentar, Obligationenrecht I, 6 e éd. 2015, n° 5 ad art. 257h CO; DAVID LACHAT, in Commentaire romand, Code des obligations I, 2e éd. 2012, n° 7 ad art. 257h CO; PETER R. BURKHALTER/EMMANUELLE MARTINEZ-FAVRE, Le droit suisse du bail à loyer, 2011, adaptation française de la 3e éd. du SVIT Kommentar de RAYMOND BISANG ET AL., n. 59b ad art. 257f CO p. 166, n. 22 ad art. 257h CO p. 180; PIERRE WESSNER, in Droit du bail à loyer - Commentaire pratique, Bohnet/Montini éd., 2010, n. 28 ad art. 257f CO p. 269; CAROLE AUBERT, in Droit du bail à loyer - Commentaire pratique, Bohnet/Montini éd., 2010, n. 16 ad art. 257h CO p. 291; PETER HIGI, Zürcher Kommentar, 4e éd. 1995, n° 43 ad art. 257h CO). Aux termes de l'art. 257h al. 2 CO, 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. Lorsque la demande de visite est justifiée par une vente, le bailleur doit avoir entrepris des démarches concrètes en vue d'aliéner son bien (WEBER, op. cit., n° 3 ad art. 257h CO; LACHAT, op. cit., n° 4 ad art. 257h CO; AUBERT, op. cit., n. 14 ad art. 257h CO p. 290; HIGI, op. cit., n° 37 ad art. 257h CO); en revanche, il ne doit pas avoir résilié le bail (à durée indéterminée) (une telle condition, posée dans l'adaptation française du SVIT Kommentar [BURKHALTER/MARTINEZ-FAVRE, op. cit., n. 20 ad art. 257h CO], ne figure du reste pas dans la version originale en allemand [RAYMOND BISANG ET AL., SVIT Kommentar, 3e éd. 2008, n. 20 ad art. 257h CO]).
Pour justifier une résiliation anticipée fondée sur l'art. 257f al. 3 CO, la violation par le locataire de son devoir de diligence doit en outre être persistante et rendre insupportable le maintien du contrat pour le bailleur, ce qui suppose un manquement d'une certaine gravité. Le juge apprécie librement, selon les règles du droit et de l'équité (art. 4 CC), si la résiliation anticipée répond à un motif suffisamment grave. Il se prononcera en fonction de l'ensemble des circonstances concrètes du cas particulier (ATF 132 III 109 consid. 2 p. 111; arrêt précité du 20 février 2004 consid. 3.5). Le Tribunal fédéral ne contrôle qu'avec réserve une décision d'équité prise en dernière instance cantonale. Il intervient lorsque la décision s'écarte sans raison des règles établies par la doctrine et la jurisprudence en matière de libre appréciation, ou lorsqu'elle s'appuie sur des faits qui, dans le cas particulier, ne devaient jouer aucun rôle, ou encore lorsqu'elle ignore des éléments qui auraient absolument dû être pris en considération; en outre, le Tribunal fédéral redresse les décisions rendues en vertu d'un pouvoir d'appréciation lorsqu'elles aboutissent à un résultat manifestement injuste ou à une iniquité choquante (ATF 138 III 252 consid. 2.1 p. 254; 136 III 278 consid. 2.2.1 p. 279; 135 III 121 consid. 2 p. 123).
3.2. En l'espèce, les locataires se sont déclarés d'accord, dans leur lettre du 15 juin 2012, avec le principe des visites, tout en souhaitant connaître leur nombre et leur programmation. Avant et après ce courrier, ils n'ont toutefois pas donné suite aux demandes de prise de contact des courtiers.
Dans un premier temps, lorsque le courtier D._ cherche à obtenir un rendez-vous de la part des locataires, l'absence de réaction de ceux-ci n'apparaît pas comme une violation du devoir de diligence. En effet, la seule évocation d'un projet de revente par le courtier mandaté par le propriétaire précédent, juste après la première vente, ne suffit pas pour établir et opposer aux locataires une intention concrète dans ce sens de la part de la bailleresse. Et il ne ressort pas des constatations de la cour cantonale que la bailleresse elle-même ait alors fait part clairement aux intimés, directement ou par l'intermédiaire de la gérance, de sa volonté réelle de revendre rapidement le bien qu'elle venait d'acquérir. En particulier, les premiers courriers de la régie, laquelle assure à la fois la gérance et le courtage, se limitent à rappeler la teneur de l'art. 257h al. 2 CO, qui ne concerne pas exclusivement le droit d'inspection en vue d'une vente, mais également les visites nécessaires dans le cadre de l'entretien.
C'est dans sa lettre du 5 juillet 2012 que la régie exprime pour la première fois précisément le but de la requête d'inspection: il s'agit d'expertiser le bien que la nouvelle propriétaire envisage de remettre en vente, mais qui n'est pas encore commercialisé; la régie demande aux locataires de la contacter afin de fixer un rendez-vous. Les intimés n'en font rien et la régie les relance un mois et demi plus tard en leur fixant un délai de quinze jours pour se manifester. Les locataires ne réagissent pas.
Si l'on admet qu'une visite à fin d'expertise constitue une étape nécessaire en vue d'une vente suivant de quelques mois l'acquisition du bien, force est alors de reconnaître qu'en ne réagissant pas aux demandes de prise de contact de la régie, les locataires ont méconnu leur obligation de tolérer l'inspection de la chose louée. Cependant, un tel manquement n'apparaît pas, dans les circonstances de l'espèce, suffisamment grave pour justifier une résiliation anticipée du bail. En particulier, l'inertie des locataires durant l'été 2012, attribuée par eux à des difficultés personnelles, relève plus de la négligence que d'un refus caractérisé de laisser la bailleresse ou sa représentante exercer le droit d'inspection garanti par l'art. 257h al. 2 CO. Du reste, les intimés n'avaient créé aucune difficulté pour faire visiter l'appartement à plusieurs reprises avant la vente conclue quelques mois plus tôt. En jugeant, dans sa motivation subsidiaire, que la poursuite du bail n'était pas insupportable pour la recourante au regard de l'ensemble des éléments du cas présent, la cour cantonale n'a pas abusé du pouvoir d'appréciation qui lui est reconnu en la matière.
Le grief tiré de la violation de l'art. 257f al. 3 et de l'art. 257h al. 2 CO se révèle mal fondé, de sorte que les juges genevois n'ont pas méconnu le droit fédéral en constatant l'inefficacité du congé anticipé notifié par la bailleresse.
4.
Sur le vu de ce qui précède, le recours sera rejeté dans la mesure où il est recevable.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (art. 66 al. 1 LTF). En revanche, elle n'aura pas à verser des dépens aux intimés, qui ne sont pas représentés par un avocat (cf. art. 68 al. 2 LTF et art. 1 du règlement sur les dépens dans les causes portées devant le Tribunal fédéral [RS 173.110.210.3]).
Par ces motifs, le Tribunal fédéral prononce:
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'500 fr., sont mis à la charge de la recourante.
3.
Il n'est pas alloué de dépens.
4.
Le présent arrêt est communiqué aux parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 7 décembre 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann