Zapata debuteerde in 2013 bij Envigado waar hij ook in de jeugd speelde. Hij werd begin 2014 aangetrokken door het Spaanse Granada dat hem direct verhuurde aan het Italiaanse Sassuolo. Voor beide clubs kwam hij niet in actie en in de zomer van 2014 werd hij voor vijf seizoenen vastgelegd door Udinese. Zapata debuteerde op 23 november 2014 in de Serie A, thuis tegen Chievo Verona (eindstand 1-1) als invaller voor Giampiero Pinzi. In het seizoen 2015/16 speelde hij op huurbasis voor Perugia in de Serie B.
Interlandcarrière
Zapata is Colombiaans jeugdinternational en speelde met Colombia onder 18 op de Bolivar Spelen 2013, waar hij werd uitgeroepen tot beste speler van het toernooi, en met Colombia onder 20 in 2015 op het Zuid-Amerikaans kampioenschap (tweede plaats) en het wereldkampioenschap.