Sachverhalt: A. A._ meldete sich, nachdem ein erstes Leistungsbegehren abgewiesen worden war (Verfügung vom 28. April 2005und Einspracheentscheid vom 8. September 2005; Invaliditätsgrad von 21 %), im Juli 2009 erneut bei der Invalidenversicherung zum Leistungsbezug an. Nach Abklärungen und Durchführung des Vorbescheidverfahrens sprach ihm die IV-Stelle des Kantons Zürich mit Verfügungen vom 29. Januar 2014 eine ganze Rente vom 1. Januar bis 31. Oktober 2010 und vom 1. Januar bis 30. April 2012 zu (Invaliditätsgrad von jeweils 100 %). Für die Zeit vom 1. November 2010 bis 31. Dezember 2011 und ab 1. Mai 2012 verneinte sie einen Rentenanspruch. B. Die dagegen erhobene Beschwerde wies das Sozialversicherungsgericht des Kantons Zürich mit Entscheid vom 23. April 2015 ab. C. A._ lässt mit Beschwerde in öffentlich-rechtlichen Angelegenheiten beantragen, unter Aufhebung des Entscheids vom 23. April 2015 sei ihm eine halbe Rente auszurichten; eventualiter sei die Sache zur ergänzenden medizinischen Abklärung an die Vorinstanz zurückzuweisen.