Youth career Born in
Lima, Peru, Tapia started his football career at
Sporting Cristal's youth team before joining
Esther Grande academy at twelve years old, Tapia revealed that he almost joined Liverpool, but was rejected, due to his height.
Twente In the summer transfer of 2013, Tapia moved to Europe for the first time in his career, signing a four-year contract with
Eredivisie side
Twente. Immediately after joining the club, he was sent to the
Jong FC Twente, the club's reserves, to develop. Tapia made his Jong FC Twente debut in a 3–3 draw against
De Graafschap on 20 September 2013, coming on as a substitute in the second half for
Robbert Schilder. Two weeks later, on 4 October 2013, he was an unused substitute in the first team's match against
Cambuur Tapia continued to develop at Jong FC Twente and scored his first goal on 22 November 2013, in a 2–1 win over
Willem II. He went on to make 19 appearances, scoring once for Twente's reserves in the 2013–14 season. Following a season at Jong FC Twente, Tapia was promoted to the first team at
Twente. He made his first-team debut at Twente in the opening game of the season, a 0–0 draw against Cambuur, coming on as a substitute in the 80th minute for
Darryl Lachman. A week later he suffered an ankle injury that kept him out for three months. He made his return to the first team as a late substitute in a 2–1 win over
PEC Zwolle on 23 November 2014. In a match against Willem II on 21 December 2014, Tapia was sent-off, just 8 minutes after coming on as a substitute, for a foul on
Samuel Armenteros. Following a one match suspension, he scored his first goal for the club on 31 January 2015, in a 2–1 win over Cambuur. He later scored four more goals later in the season against PEC Zwolle,
Groningen and a brace against
Go Ahead Eagles. His season ended when he suffered a knee injury and finished the season making 22 appearances and scoring five times in all competitions. Shortly after the end of the 2014–15 season, Tapia underwent surgery on his knee and it was expected that he would be sidelined for the start of the 2015–16 season, costing his place in the Perú squad for the
2015 Copa América. But in mid-July, he made a recovery from a knee injury after training with the first team. He then scored in the opening game of the season, in a 1–1 draw against Groningen. He again suffered a knee injury and was substituted in the second half as a result. Having recovered he appeared in a number of appearance, playing the first five matches of the season, before suffering a knee injury against Ajax on 12 September 2015. He suffered a knee injury in early November and missed one Twente match, but recovered in time for his international duty. By the end of the first half of the season, Tapia had made 14 appearances and scored once in all competitions.
Feyenoord In December 2015,
Feyenoord confirmed their interest in signing Tapia after learning about FC Twente's financial situation and he was reported among three players at Twente to be sold. The transfer was finalised on 27 January 2016, for a reported transfer fee of €2.4 million. After three years at FC Twente, Tapia signed a 4.5-year contract with
Feyenoord. Tapia made his Feyenoord debut in a
rivalry match against
Ajax on 7 February 2016, starting in a 2–1 loss. His first team opportunities was restricted to three appearances and being an unused substitute. Instead, he played in the reserve for most of the season. He later stated that in order to earn a first team chance, he needed to improve by acting faster and simpler to suit the club's tactics. Ahead of the 2016–17 season, Tapia hoped he could establish himself in the first team. On 22 September 2016, he made his first appearance in the second round of KNVB Cup, playing 7 minutes after coming on as a substitute in a 4–1 win over
Oss. On 2 October 2016, he scored in his first league appearance of the season, just 13 minutes after coming on as a substitute, in a 2–0 win over Willem II.
Celta de Vigo On 20 July 2020,
La Liga side
Celta de Vigo announced the free signing of Tapia under a four-year contract. He scored his first goal against Al Nassar, which resulted in a victory for Celta Vigo 5-0.
Leganés On 15 August 2024, Tapia remained in the Spanish top tier after signing a two-year deal with
Leganés. ==International career==