Faits :
A.
Par jugement du 20 avril 2018, le Tribunal criminel du Littoral et du Val-de-Travers a condamné X._ à une peine privative de liberté ferme de 3 ans, sous déduction de la détention subie avant jugement, peine partiellement complémentaire à cinq peines prononcées entre le 10 octobre 2013 et le 24 avril 2017, pour vols par métier, tentatives de vols par métier, violations de domicile et séjour illégal. Le tribunal a prononcé l'expulsion de X._ du territoire suisse pour une durée de 10 ans.
B.
Statuant sur appel de X._ et appel joint du ministère public, la Cour pénale du Tribunal cantonal neuchâtelois les a rejetés par jugement du 19 décembre 2018.
En substance, le jugement cantonal repose sur les faits suivants.
Entre mai 2013 et mai 2017, X._ s'est emparé de clés cachées dans des boîtes aux lettres de différentes personnes pour pénétrer sans droit dans 26 logements et y a soustrait, dans un dessein d'enrichissement illégitime, de nombreux biens et valeurs patrimoniales pour un préjudice total de plus de 150'000 francs. Il a également soustrait à l'arrachée, dans un bus, un smartphone d'une valeur de 370 francs.
Entre le 12 juillet 2016 et le 11 mai 2017, il a séjourné illégalement sur territoire helvétique.
C.
X._ forme un recours en matière pénale auprès du Tribunal fédéral contre le jugement cantonal. Il conclut, avec suite de frais et dépens, à sa libération des chefs de vols par métier, tentatives de vols par métier et de violations de domicile et à l'allocation d'une indemnité à titre de tort moral pour détention avant jugement, à raison de 200 fr. par jour. Il requiert le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
Le recourant conteste s'être rendu coupable des infractions qui lui sont reprochées. Il invoque l'arbitraire dans l'établissement des faits et considère que la présomption d'innocence a été violée.
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 2.3.1 p. 244). En matière d'appréciation des preuves et d'établissement des faits, il n'y a arbitraire que lorsque l'autorité ne prend pas en compte, sans aucune raison sérieuse, un élément de preuve propre à modifier la décision, lorsqu'elle se trompe manifestement sur son sens et sa portée, ou encore lorsque, en se fondant sur les éléments recueillis, elle en tire des conclusions insoutenables (<ref-ruling> consid. 1.1 p. 503; <ref-ruling> consid. 2.3 p. 266 et les références citées). Le Tribunal fédéral n'examine la violation de droits fondamentaux que si ce moyen est invoqué et motivé par le recourant de manière précise (<ref-law>), c'est-à-dire s'il a été expressément soulevé et exposé de manière claire et détaillée. Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 2.4 p. 368 et les références citées). Lorsque l'autorité cantonale a forgé sa conviction quant aux faits sur la base d'un ensemble d'éléments ou d'indices convergents, il ne suffit pas que l'un ou l'autre de ceux-ci ou même chacun d'eux pris isolément soit à lui seul insuffisant. L'appréciation des preuves doit en effet être examinée dans son ensemble. Il n'y a ainsi pas d'arbitraire si l'état de fait retenu pouvait être déduit de manière soutenable du rapprochement de divers éléments ou indices. De même, il n'y a pas d'arbitraire du seul fait qu'un ou plusieurs arguments corroboratifs sont fragiles, si la solution retenue peut être justifiée de façon soutenable par un ou plusieurs autres arguments de nature à emporter la conviction (arrêts 6B_1283/2018 du 14 février 2019 consid. 1.1; 6B_435/2018 du 19 septembre 2018 consid. 3.2.1; 6B_1154/2017 du 27 avril 2018 consid. 1.1; 6B_1183/2016 du 24 août 2017 consid. 1.1).
La présomption d'innocence, garantie par les <ref-law>, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large (<ref-ruling> consid. 2a p. 40 s.; arrêt 6B_804/2017 du 23 mai 2018 consid. 2.2.3.1 destiné à la publication). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 503; <ref-ruling> consid. 7 p. 82; arrêt 6B_804/2017 du 23 mai 2018 consid. 2.2.3.3 destiné à la publication).
1.2. Pour établir les faits, la cour cantonale s'est fondée sur un faisceau d'indices concordants et a apprécié les preuves pour chaque cas particulier de vol.
En substance, elle a retenu que le recourant avait été observé à plusieurs reprises ouvrant des boîtes à lait et passant sa main dans des boîtes aux lettres. Cela ressortait notamment d'un enregistrement vidéo. La filature de police avait permis de constater que le recourant passait d'immeuble en immeuble, ouvrant les boîtes à lait et passant sa main dans les boîtes aux lettres. A cela s'ajoutait que le recourant avait été retrouvé avec des objets volés lors de son arrestation, en juillet 2016, alors qu'il tentait d'écouler des bijoux dans une bijouterie. Ces biens provenaient d'un vol commis selon le mode opératoire décrit, la plaignante concernée ayant précisé que son conjoint avait laissé la clé dans la boîte aux lettres pour un réparateur. Il ressortait de relevés de surveillance téléphonique du recourant et des explications détaillées et cohérentes de A._, employée dans une boutique de vente d'or, que le recourant écoulait son butin par l'intermédiaire de cette dernière. En l'espace de deux semaines, le recourant avait obtenu 5'420 fr. grâce à la vente de bijoux à A._. Il ressortait d'autres conversations téléphoniques que le recourant avait envoyé des objets volés (tablettes, téléphones, montres) et de l'argent en Algérie. Le recourant n'avait fourni aucune explication à cet égard. Concernant des cas de vols déterminés, le téléphone portable du recourant avait déclenché des antennes de téléphonie mobile à proximité du lieu du forfait, à la même date et dans la même tranche horaire. Des personnes lésées qui ont surpris un voleur dans leur domicile, respectivement leurs voisins, avaient donné des signalements qui correspondaient en grande partie à celui du recourant. Sur la base de ces indices notamment et relevant que plusieurs vols ont été commis dans le même quartier selon un mode opératoire identique, la cour cantonale a imputé les 26 vols précités au recourant. Au vu de ces éléments et faute d'élément allant dans le sens des déclarations du recourant, l'explication selon laquelle il effectuait des courses pour certaines personnes, promenait des chiens ou distribuait des cartes de visite dans les boîtes aux lettres ne tenait pas. S'agissant du vol à l'arrachée, la plaignante avait formellement reconnu le recourant à deux reprises.
La cour cantonale a considéré qu'il n'y avait pas suffisamment d'éléments pour retenir que le recourant était l'auteur de 10 autres vols décrits dans l'acte d'accusation.
Le recourant avait pu payer son loyer, acheter un abonnement général et plusieurs téléphones portables alors qu'il n'avait aucun moyen de subsistance. Les explications contradictoires du recourant n'étaient guère convaincantes et contribuaient à renforcer la conviction selon laquelle il subsistait grâce à son activité délictuelle. Enfin, le recourant avait déjà été condamné à plusieurs reprises pour vol, violation de domicile et recel entre 2009 et 2016 et il avait admis avoir déjà été dénoncé et condamné pour des vols commis avec un modus operandi identique.
1.3. L'argumentation du recourant consiste à livrer sa propre appréciation des preuves sans formuler de critique circonstanciée à l'encontre de la motivation cantonale. Ce procédé, largement appellatoire, est irrecevable. C'est notamment le cas lorsqu'il affirme que d'autres personnes useraient du même mode opératoire, qu'il n'aurait jamais été interpellé en flagrant délit ou qu'aucune plainte n'aurait été déposée aux endroits où il a été surveillé. Le recourant est irrecevable à répéter ses propres explications sans tenter de démontrer en quoi la cour cantonale aurait versé dans l'arbitraire en les écartant. C'est de manière purement appellatoire qu'il tente de mettre en doute la force probante des dépositions de témoins et lésés qui l'ont aperçu en flagrant délit, en relevant des imprécisions entre les signalements et ses caractéristiques. En effet, la cour cantonale a exposé pour quels motifs elle a retenu que ces imprécisions n'étaient pas pertinentes (port de lunettes occasionnel, origine et âge difficiles à déterminer, etc.) et le recourant ne critique en rien la motivation cantonale sur ce point (cf. <ref-law>). L'appréciation personnelle que le recourant livre des déclarations de A._ et de leur valeur probante est purement appellatoire, partant irrecevable. En tant que le recourant formule de pures hypothèses pour expliquer le déclenchement par son téléphone portable d'antennes téléphoniques à proximité de lieux où les forfaits ont été commis, son argumentation est irrecevable.
Par ailleurs, le recourant s'attarde sur douze cas particuliers de vols qui lui sont imputés (mémoire de recours, ch. 13 p. 17-25) en livrant à nouveau sa propre appréciation des événements. Purement appellatoire, son procédé est irrecevable.
Au surplus, le recourant ne discute pas les qualifications juridiques des infractions retenues au regard des faits établis (<ref-law>). Il ne remet pas en cause la peine qui lui a été infligée, pas davantage que l'expulsion prononcée. En tant que le recourant conclut à l'indemnisation de sa détention avant jugement, il ne formule aucun grief sur ce point de sorte qu'il n'y a pas lieu de s'y arrêter (<ref-law>).
2.
Au vu de ce qui précède, le recours doit être déclaré irrecevable. Comme les conclusions étaient vouées à l'échec, l'assistance judiciaire ne peut être accordée (<ref-law>). Le recourant devra donc supporter les frais judiciaires (<ref-law>), dont le montant sera toutefois fixé en tenant compte de sa situation financière.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est irrecevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
4.
Le présent arrêt est communiqué aux parties et à la Cour pénale du Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 28 février 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Klinke