Jugó en las inferiores de Independiente Rivadavia, hasta los 13 años, cuando lo dejaron libre.
A los 16 años probó suerte en Buenos Aires, siendo rechazado primero por River Plate y luego por Lanús.
[6][7] Mientras estuvo cedido, anotó dos goles en 11 apariciones y ayudó al club a ganar el título de Segunda División y asegurar el ascenso a la máxima categoría de Uruguay.
[9] En 2019 jugó un papel importante en el ataque del New York City, anotando 11 veces y agregando siete asistencias en 30 partidos.
En 2020 decayó en su producción, anotando seis goles y sumando tres asistencias en 22 partidos durante una temporada acortada por la pandemia de COVID-19.
[11] Castellanos nuevamente jugó un papel importante en el ataque del New York City durante la temporada 2021.
Castellanos anotaría en sus 3 apariciones en los Playoffs de la MLS Cup 2021, incluido el primer partido que New York City ganó por penales, y le dio a Castellanos el primer trofeo nacional de su carrera.