Faits :
A.
En date du 10 avril 2015, A._ et C._ ont été impliqués dans un accident de la route avec dégâts matériels.
D'après A._, il se trouvait au volant de son motocycle Harley Davidson à l'arrêt sur la partie gauche de la voie de droite. Au volant de son véhicule Land Rover, C._ aurait alors tenté de le dépasser en se faufilant entre le motocycle et le bord de la chaussée. Faute de distance suffisante, le conducteur de la voiture aurait percuté l'arrière droit du motocycle avec l'avant gauche de son véhicule.
Selon C._, A._ était arrêté, en raison d'un feu rouge, sur la voie de gauche, lui-même se trouvant arrêté avec son véhicule sur la voie de droite. Alors que le feu était passé au vert, A._ aurait tardivement tenté de se déporter sur la voie de droite. C._ n'aurait pas eu la possibilité de freiner ou d'éviter le motocycle et les deux véhicules se seraient percutés.
A la suite de la collision, le motocycle s'est coincé dans la carrosserie de l'automobile et a été traîné sur quelques mètres.
Les parties ne parvenant pas à s'entendre sur la répartition des responsabilités, la police est intervenue sur les lieux à la requête du motocycliste.
Des photographies des véhicules montrent l'état des lieux après l'accident. On peut y voir le motocycle appuyé contre l'automobile, son pot d'échappement coincé sous le pneu avant gauche de celle-ci. Les pneus du motocycle se trouvent sur la ligne continue.
Par courriel du 22 avril 2015, C._ a écrit à A._: " (...) Je viens donc de téléphoner à Mr D._ afin de lui demander d'établir un devis relatif à la réparation de votre Harley. Il ne peut, en l'état, car faute de temps, m'en communiquer le montant, lui ayant indiqué que j'honorerais personnellement sa facture (...) ". Selon C._, ces lignes s'inscrivaient dans une démarche destinée à "éviter des histoires" et n'emportaient pas reconnaissance de responsabilité; il aurait consenti uniquement à payer les frais de réparation de l'indicateur endommagé.
Un rapport de police a été établi en date du 18 décembre 2015. Les policiers ont retenu la version de A._. Ils ont relevé que "dans un premier temps, les parties en cause se sont arrangées à l'amiable" et que "par la suite, M. C._ est revenu sur ses dires et ne reconnaissait plus ses torts". Il n'est pas établi que C._ aurait été condamné pénalement à la suite de l'accident.
B._ SA, apériteur de la compagnie d'assurance française auprès de laquelle C._ avait assuré son véhicule, a également chargé un ingénieur analyste d'accident de procéder à l'analyse de la responsabilité des parties. Dans un rapport du 29 juillet 2016, cet expert a estimé que la version de l'accrochage donnée par C._ était correcte et que ce dernier n'était pas responsable.
B.
Après l'échec de la conciliation, A._ a introduit, le 5 octobre 2017, une demande à l'encontre de C._ et B._ SA, concluant à leur condamnation, conjointement et solidairement, au paiement d'un montant total de 10'843 fr.75, portant intérêts, à titre de frais de réparation et de frais de gardiennage du motocycle Harley Davidson, ainsi que de frais d'achat d'un scooter de remplacement.
Sur mandat du tribunal, un rapport d'expertise a été établi en date du 19 avril 2018. L'expert judiciaire y constatait notamment que rien ne permettait de déterminer laquelle des versions des parties était la bonne, mais qu'il était plus vraisemblable que l'accident se soit déroulé de la manière suivante: le conducteur de la voiture avait percuté la Harley Davidson à l'arrière droit, celle-ci circulant devant la voiture à l'extrême gauche de la voie de droite. Le taux de probabilité de cette hypothèse, qualifiée de vraisemblable, était de 51 à 74%.
Par jugement du 28 août 2018, le Tribunal de première instance du canton de Genève a débouté A._ de ses conclusions en paiement. Le demandeur n'était pas parvenu à démontrer au degré requis, à savoir celui de la certitude, que l'accident s'était déroulé de la manière qu'il avait décrite; la faute de C._ n'était donc pas établie.
Par arrêt du 18 juin 2019, la Chambre civile de la Cour de justice du canton de Genève a rejeté l'appel déposé par A._ contre le jugement précité. Les motifs qui l'ont guidée seront évoqués ci-après dans la mesure utile.
C.
A._ saisit le Tribunal fédéral d'un recours constitutionnel subsidiaire, réitérant les conclusions de sa demande.
Ni C._, ni B._ SA n'ont été invités à se déterminer sur le recours.

Considérant en droit :
1.
1.1. La valeur litigieuse de cette affaire civile pécuniaire n'atteint pas le seuil de 30'000 fr. exigé par l'<ref-law> pour la recevabilité du recours en matière civile. Le recourant admet par ailleurs implicitement qu'aucune des exceptions prévues par l'<ref-law> n'est réalisée. Partant, seul le recours constitutionnel subsidiaire est ouvert (<ref-law>).
1.2. Le recours a été déposé en temps utile (art. 117 et 100 LTF) contre une décision finale (art. 117 et 90 LTF) prise en dernière instance cantonale et sur recours par un tribunal supérieur (art. 114 et 75 LTF), par une partie qui a pris part à la procédure devant l'autorité précédente et a un intérêt juridique à la modification de la décision (<ref-law>).
2.
2.1. Comme son intitulé l'indique, le recours constitutionnel subsidiaire peut être formé pour violation des droits constitutionnels (<ref-law>). Le Tribunal fédéral n'examine que les griefs expressément soulevés et motivés conformément au principe d'allégation (art. 106 al. 2 et art. 117 LTF). Le recourant doit indiquer quel droit ou principe constitutionnel a été violé par l'autorité précédente et dans quelle mesure, en présentant une argumentation claire et circonstanciée; des critiques simplement appellatoires ne sont pas admissibles (<ref-ruling> consid. 1.2.2 p. 286; <ref-ruling> consid. 2.4 p. 368; <ref-ruling> consid. 2.2 p. 232; <ref-ruling> consid. 2.2 p. 246).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il peut rectifier ou compléter les constatations de l'autorité précédente si les faits ont été établis en violation du droit au sens de l'<ref-law> (<ref-law>). La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'<ref-law> (<ref-ruling> consid. 2.3 p. 266 et les arrêts cités).
3.
Le recourant invoque la protection de l'arbitraire qui lui est garantie par l'art. 9 Cst.
3.1. Une décision est arbitraire, donc contraire à l'art. 9 Cst., lorsqu'elle viole gravement une norme ou un principe juridique clair et indiscuté, ou contredit d'une manière choquante le sentiment de la justice et de l'équité. Le Tribunal fédéral ne s'écarte de la solution retenue par l'autorité cantonale de dernière instance que si la décision attaquée apparaît insoutenable, en contradiction manifeste avec la situation effective, adoptée sans motifs objectifs ou en violation d'un droit certain. En outre, il ne suffit pas que les motifs de la décision soient insoutenables; encore faut-il que celle-ci soit arbitraire dans son résultat. Il ne suffit d'ailleurs pas non plus qu'une solution différente de celle retenue par l'autorité cantonale puisse être tenue pour également concevable ou apparaisse même préférable (<ref-ruling> consid. 7.3 p. 174; <ref-ruling> consid. 4.3 p. 380; <ref-ruling> consid. 2.1 p. 18 s.).
En matière d'appréciation des preuves, le Tribunal fédéral n'intervient, du chef de l'art. 9 Cst., que si le juge du fait n'a manifestement pas compris le sens et la portée d'un moyen de preuve, a omis sans raisons objectives de tenir compte des preuves pertinentes ou a effectué, sur la base des éléments recueillis, des déductions insoutenables (<ref-ruling> consid. 2.3 p. 266; <ref-ruling> consid. 4.2 p. 234).
3.2. En l'espèce, il est constant que le recourant et l'intimé ont eu un accrochage, lequel a occasionné exclusivement des dégâts matériels. Est litigieuse la question de savoir si C._ a commis une faute, ce qui suppose de déterminer préalablement le déroulement de l'accident. La cour cantonale a retenu qu'il n'existait pas d'éléments permettant de remettre en cause la conclusion de l'expertise, à savoir que le déroulement des faits ne pouvait être élucidé avec certitude. Il s'ensuit, selon l'autorité précédente, que la preuve d'une faute de l'intimé n'a pas été apportée, le recourant n'étant pas parvenu à démontrer que l'accident s'était déroulé de la manière dont il l'avait décrit.
3.2.1. Selon le recourant, les juges genevois auraient apprécié de manière arbitraire le rapport de police. Il est d'avis que la cour cantonale a dénié sans justification toute force probante à ce document, qui suffirait pourtant à démontrer la version des faits du motocycliste.
La Cour de justice a considéré que les policiers intervenus après l'accident n'avaient pas été en mesure d'établir le déroulement de celui-ci. Certes, leur rapport allait plutôt dans le sens de la thèse défendue par le recourant. Cela étant, leurs conclusions n'étaient pas fondées sur un procès-verbal d'audition ou des éléments précis, mais sur un prétendu arrangement à l'amiable et un revirement ultérieur de l'intimé, ce qui était antinomique puisque le recourant lui-même expliquait que les policiers avaient été appelés précisément parce que les parties ne parvenaient pas à rédiger un constat amiable. Sur le vu de ces éléments, les juges cantonaux pouvaient sans arbitraire retenir que le rapport de police n'était pas probant. Comme le recourant le fait observer, il est vrai que les rapports établis par des agents publics revêtent généralement une force probante élevée. Tel ne saurait toutefois être le cas lorsque l'on ne parvient pas à comprendre quels éléments ont guidé les conclusions des agents, comme c'est le cas ici. Partant, les juges cantonaux n'ont pas versé dans l'arbitraire en s'écartant des conclusions du rapport de police.
3.2.2. Le recourant invoque ensuite une appréciation arbitraire de la force probante des photographies prises lors de l'accident. Les juges précédents ne pourraient en effet se fonder sur ces prises de vue pour retenir que l'accident se serait déroulé ainsi que le décrit l'intimé, tout en les écartant dès lors qu'il s'agissait d'examiner si celui-ci était en faute. Un tel raisonnement serait contradictoire et arbitraire.
Les juges cantonaux ont estimé que lesdites photographies n'étaient pas de nature à démontrer une faute de l'intimé: le Tribunal de première instance les avait appréciées pour conclure qu'elles corroboraient plutôt la thèse de l'intimé; de son côté, le recourant exposait lui-même qu'elles ne permettaient pas de déterminer la position du motocycle au moment du choc. L'on ne discerne aucun arbitraire dans ces considérations.
3.2.3. A lire le recours, l'expertise du 19 avril 2018 permettait d'établir le déroulement de l'accident. Il serait arbitraire de s'en distancer sans en indiquer les motifs.
Le recourant fait injustement reproche aux juges genevois de s'être écartés des conclusions de l'expertise. En effet, la cour cantonale a relevé qu'il incombait au recourant d'établir les éléments de fait propres à fonder juridiquement la faute prétendument commise par C._, le degré de preuve requis étant la certitude. L'expertise judiciaire concluait à cet égard qu'il n'était pas possible d'établir à un degré supérieur à 74% que l'accident s'était déroulé de la manière décrite par le recourant. Les juges cantonaux pouvaient ainsi sans arbitraire retenir que la version du recourant n'était pas établie avec certitude.
3.2.4. Le recourant ne saurait non plus être suivi lorsqu'il fait grief à l'autorité précédente de ne pas avoir ordonné l'administration de nouveaux moyens de preuve. En effet, il n'établit nullement avoir requis dans ses précédentes écritures, ainsi qu'il lui incombait notamment en vertu de la maxime des débats applicable au présent litige, l'administration de moyens de preuve supplémentaires qui n'auraient pas été administrés par les juges cantonaux. Au surplus, la Cour de justice n'était pas tenue d'administrer d'office d'autres preuves, ce qui scelle le sort du grief.
3.3. Le recourant reproche finalement aux juges précédents de n'avoir arbitrairement pas appliqué l'<ref-law> au cas présent. Il fait valoir que la Cour de justice a omis, à tort, de prendre en considération le courriel du 22 avril 2015 de C._, par lequel ce dernier affirmait au recourant qu'il "honorerai[t] personnellement cette facture" relative à la réparation du motocycle. Ce faisant, il aurait ainsi été démontré que le dommage a bien été causé par la faute de C._. Le recourant relève en outre la condamnation pénale de l'intimé, connue des juges cantonaux, qui démontrerait sa responsabilité.
Force est d'emblée d'observer que, sous couvert d'une non-application arbitraire de la règle relative à la responsabilité du détenteur de véhicule automobile en cas de dégâts matériels, le recourant fait, en réalité, à nouveau grief à la cour cantonale d'avoir établi les faits de manière arbitraire. Il n'en est rien: il ressort expressément de l'arrêt attaqué que l'intimé avait consenti à prendre en charge les frais de réparation d'un indicateur endommagé "afin d'éviter des histoires" et sans reconnaissance de responsabilité. Il n'est pas arbitraire de considérer que cet e-mail s'inscrivait dans le cadre de cette démarche.
S'agissant de la prétendue condamnation pénale de C._, les juges cantonaux ont refusé de prendre cet élément en considération au motif qu'il s'agissait d'un fait nouveau, pour l'introduction duquel le recourant n'avait pas respecté les conditions de l'<ref-law>. Le recourant n'élève aucun grief à l'encontre de ce raisonnement, de sorte qu'on ne saurait retenir que les faits auraient été constatés de manière manifestement incomplète sur ce point.
Le grief de non-application arbitraire de l'<ref-law> se réduisant en définitive à celui d'arbitraire dans la constatation des faits, il n'y a pas lieu de s'y pencher plus avant.
4.
Sur le vu de ce qui précède, le recours doit être rejeté.
Le recourant, qui succombe, prendra à sa charge les frais de la procédure fédérale (<ref-law>). Aucune indemnité de dépens ne sera octroyée aux intimés, lesquels n'ont pas été invités à se déterminer sur le recours.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Chambre civile de la Cour de justice du canton de Genève.
Lausanne, le 29 octobre 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann