En 2013 firmó por el Twente de los Países Bajos debutando profesionalmente el año siguiente.
[7] Estuvo a prueba en clubes como el Tottenham Hotspur y el Liverpool de Inglaterra; sin embargo, no pudo firmar con el equipo de Anfield porque los exámenes médicos que se le practicaron indicaban que no crecería más de 1.90 metros.
En la Eredivisie 2016-17 Tapia pudo establecerse en el primer equipo aunque como sustituto.
[14] Con este equipo, pudo redondear buenas jornadas y tener la continuidad que necesitaba, por lo que finalizada la temporada confirmó su regreso al Feyenoord para ganarse un lugar en el equipo.
El jugador peruano salió del campo por una lesión en el minuto 80 sustituido por Néstor Araujo.
El 27 de septiembre jugó ante el Valladolid siendo titular y saliendo reemplazado en el minuto 80 por Okay Yokuşlu, el 1 de octubre fue su primer partido perdido con el Celta ante el Barcelona, perdiendo por 3-0, también el 4 de octubre perdió ante el Osasuna por 2-0 finalmente al caer con el Sevilla por 4-2 su equipo pudo encontrar el triunfo ante el Granada por 3-1 y otro triunfo ante el Athletic Club por 2-0.
Perú no clasificó al hexagonal final tras ubicarse en el cuarto lugar del Grupo A.
[16] La selección peruana logró la clasificación al hexagonal final como primero del grupo B. Perú culminó en la quinta posición del hexagonal final y no logró clasificar a la Copa Mundial de Turquía,[17] Tapia disputó seis partidos, de los cuales en cinco arrancó como titular.
Fue convocado por Ricardo Gareca para la Copa América 2015, pero una lesión impediría su participación.
Su siguiente partido lo jugó ingresando en el segundo tiempo en un amistoso internacional que terminó empatado a 1 ante Colombia, Tapia tuvo una buena actuación lo que lo hizo ser tomado en cuenta para las eliminatorias.
Fue suplente en el segundo partido, con Francia, donde volvieron a perder y quedaron fuera de la competición mundialista.
Fue convocado para disputar la Copa América 2019 hizo su debut con Venezuela empatando 0-0.