Al draft NFL 2009, Harvin fu selezionato come 22ª scelta assoluta dai Minnesota Vikings[1]. Il 3 agosto 2009 firmò un contratto di 5 anni per 14,5 milioni di dollari di cui 8,7 milioni garantiti. Percy debuttò nella NFL il 13 settembre 2009 contro i Cleveland Browns, segnando subito un touchdown su ricezione passato dal quarterbackBrett Favre. Harvin terminò la sua prima partita nella NFL ricevendo 36 yard e correndone altre 22 yard. Il 27 settembre 27, Harvin ritornò un kickoff per 101 yard in touchdown contro i San Francisco 49ers. Con questa marcatura, Harvin divenne il primo giocatore della storia dei Vikings a segnare un touchdown in ognuna delle sue prime tre gare e il secondo giocatore più giovane della storia della NFL a ritornare un kickoff in touchdown (21 anni, 122 giorni). Il 25 ottobre 2009, Harvin ritornò un altro kickoff per 88 yard in touchdown contro i Pittsburgh Steelers. La sua stagione regolare terminò con 60 ricezioni e otto touchdown, due su ritorni da kickoff e correndo una media di 9 yard a portata.
Il 19 agosto 2010, Harvin saltò un allenamento a causa di un attacco emicrania, venendo portato all'ospedale locale in ambulanza. Fu dimesso il giorno successivo ma non riuscì ad allenarsi con costanza nel periodo successivo, mentre questo problema lo tormentò per tutta la stagione. Nella sua seconda stagione da professionista, Percy disputò 14 partite, 13 delle quali come titolare, ricevendo 868 yard e segnando 6 touchdown totali, 5 su ricezione e uno su un ritorno di kickoff.
2011
L'11 settembre 2011, nel debutto stagionale contro i San Diego Chargers, Harvin ritornò il kickoff di apertura per 103 yard in touchdown, stabilendo il record di franchigia dei Vikings col quarto kickoff ritornato in touchdown della carriera. Il 27 settembre 2011, in una gara in trasferta contro gli Atlanta Falcons, Harvin ritornò un kickoff per 104 yard, fino alla linea delle 3 yard dei Falcons. Quella fu la più lunga giocata senza aver segnato della storia della NFL. Harvin guidò i Vikings con 87 ricezioni in questa stagione. Segnò 6 touchdown e per la prima volta in tre anni di carriera disputò tutte le 16 gare della stagione.
2012
Nella partita di debutto della stagione 2012, vinta ai supplementari contro i Jacksonville Jaguars, Harvin guidò i Vikings con 6 ricezioni per 84 yard, oltre a 20 yard guadagnate su corsa[3]. Nel turno successivo, i Vikings furono sconfitti dagli Indianapolis Colts: Harvin tuttavia disputò una grande partita ricevendo 12 passaggi per 104 yard[4]. Nella settimana 3 i Vikings vinsero sorpresa contro i San Francisco 49ers che si erano dimostrati la squadra probabilmente più forte della lega nelle prime due giornate: Harvin contribuì guidando la squadra con 9 passaggi ricevuti per 89 yard[5].
Il sorprendente inizio di stagione dei Vikings proseguì con la vittoria nella settimana 4 sui Detroit Lions con Harvin che ritornò il kickoff di apertura per 105 yard in touchdown oltre a ricevere 3 passaggi per 22 yard[6][7]. Nel turno successivo Minnesota salì a un record di 4-1 con una vittoria mai in discussione contro i Tennessee Titans: Harvin guidò la squadra con 108 yard ricevute e un touchdown[8].
Nella settimana 6, la striscia di 3 vittorie consecutive dei Vikings si interruppe in casa dei Washington Redskins ma Percy diede seguito al suo grande inizio di stagione ricevendo 11 passaggi per 133 yard[9]. Minnesota tornò alla vittoria nel turno successivo col giocatore che ricevette 37 yard e segnò un touchdown contro i Cardinals[10].
Nel Thursday Night Football della settimana 8 perso contro i Tampa Bay Buccaneers, Harvin ricevette 7 passaggi per 90 yard e un touchdown[11].
Nella gara successiva, mentre stava disputando forse la miglior annata della carriera, Harvin si infortunò alla caviglia e dopo un mese di convalescenza fu annunciato che non sarebbe più tornato in campo per il resto della stagione[12]. Il suo 2012 si concluse con 677 yard ricevute, 3 touchdown su ricezione e uno su corsa. A fine anno fu classificato al numero 90 nella classifica dei migliori cento giocatori della stagione[13].
Seattle Seahawks
L'11 marzo 2013, Harvin fu scambiato coi Seattle Seahawks in cambio della scelte del primo e settimo giro dei Seahawks nel Draft NFL 2013, oltre a una scelta del terzo giro del 2014, riunendosi con l'ex compagno ricevitore ai Vikings Sidney Rice[14]. Harvin firmò un nuovo contratto di sei anni del valore di 67 milioni di dollari, 25,5 milioni dei quali garantiti[15]. Con la nuova squadra il giocatore passò dal numero 12, ritirato dai Seahawks, al numero 11[16].
2013
A causa di un infortunio all'anca subito all'inizio del training camp, il 30 luglio fu annunciato che Harvin avrebbe dovuto sottoporsi a un'operazione chirurgica che l'avrebbe tenuto fuori dal campo per circa 4 mesi[17]. Fu rimosso l'11 novembre dalla lista degli infortunati ed inserito nel roster dei 53 giocatori attivi. Il suo debutto stagionale avvenne pertanto nella gara di settimana 11 proprio contro la sua ex-squadra, i Minnesota Vikings, ospite dei Seahawks al CenturyLink Field domenica 17[18]. Anche se per precauzione ebbe un ruolo limitato durante la gara, Harvin fu comunque decisivo nella vittoria di Seattle le due volte che toccò il pallone. Nella prima ricevette dal quarterback Russell Wilson un passaggio da 17 yard su una situazione di terzo down e dieci dando modo a Seattle di proseguire l'azione offensiva. Nella seconda ritornò un kickoff per 58 yard nel finale del primo tempo, grazie a cui poi la sua squadra si trovò in posizione utile per segnare il touchdown con cui prese il largo sugli avversari[19]. Quella fu tuttavia l'unica presenza della stagione regolare di Harvin nel 2013 a causa del riaggravarsi del precedente problema all'anca[20].
I Seahawks terminarono col miglior record della NFC e con l'inizio dei playoff la condizione di Harvin tornò a migliorare, tanto da riuscire ad allenarsi con regolarità nella settimana precedente alla gara del secondo turno contro vinta i New Orleans Saints, in cui lo stesso giocatore annunciò che sarebbe sceso in campo[21]. All'inizio della sfida, Percy fu subito coinvolto nell'attacco della sua squadra, ricevendo 3 passaggi per 21 yard e correndo una volta per 9 yard, ma la sfortuna continuò ad accanirsi su di lui quando subì una commozione cerebrale che gli fece perdere tutto il secondo tempo[22] e anche la finale della NFC vinta contro i San Francisco 49ers[23].
Harvin tornò in campo il 2 febbraio 2014 nel Super Bowl XLVIII contro i Denver Broncos, che Seattle dominò dall'inizio alla fine della partita, vincendo per 43-8. Fu la prima volta che riuscì a disputare una partita completa con la squadra e il suo apporto fu decisivo: fu il migliore corridore dell'incontro con 45 yard (all'epoca un record per un wide receiver nel Super Bowl, in seguito battuto da Deebo Samuel), ricevette un passaggio da 5 yard ma soprattutto ritornò il kickoff di apertura del secondo tempo per 89 yard in touchdown, permettendo ai Seahawks di prendere definitivamente il largo, laureandosi campione NFL[24][25].
2014
Harvin partì per la prima volta come titolare nella stagione regolare coi Seattle Seahawks nella gara della settimana 1 vinta in casa contro i Green Bay Packers, in cui guidò i suoi con 7 ricezioni per 59 yard, oltre a 41 yard corse e 60 su tre ritorni di kickoff[26][27]. La domenica successiva segnò un touchdown dopo una corsa da 51 yard, la più lunga della carriera, ma i campioni in carica furono sconfitti a sorpresa in casa dei San Diego Chargers[28].
New York Jets
Il 17 ottobre 2014, a sorpresa Harvin fu scambiato coi New York Jets per una scelta dei giri intermedi del Draft 2015. Nelle cinque gare disputate con Seattle aveva fatto registrare solamente 22 ricezioni per 134 yard e un touchdown su corsa[29]. Nella seconda gara con la nuova maglia, nella settimana 9, guidò i suoi con 11 ricezioni per 129 yard contro i Chiefs. Nel quattordicesimo turno segnò il suo primo touchdown su ricezione dal 25 ottobre 2012, concludendo con 6 ricezioni per 124 yard nella sconfitta ai supplementari contro i suoi ex Vikings in cui costretto a uscire nel quarto periodo per un infortunio alla caviglia, non facendo più ritorno in campo[30]. Scese regolarmente in campo nelle due gare successive, prima di essere costretto a saltare l'ultima partita della stagione per un infortunio[31]. Chiuse così le otto gare disputate nel 2014 coi Jets con 29 ricezioni per 350 yard e un touchdown su ricezione. Il 10 marzo 2015 fu svincolato[32].
Buffalo Bills
Il 13 marzo 2015 raggiunse l'accordo con i Buffalo Bills per un contratto della durata di un anno e un valore di circa sei milioni di dollari[33]. Nella sua prima gara ricevette un touchdown dal quarterback Tyrod Taylor nella vittoria sui favoriti Colts. Il 7 novembre fu inserito in lista infortunati, concludendo la sua stagione[34].
Il 14 aprile 2016, Harvin annunciò il proprio ritiro dopo otto stagioni da professionista costellate dagli infortuni.
^(EN) 2009 National Football League Draft, Pro Football Hall of Fame. URL consultato il 28 settembre 2012 (archiviato dall'url originale il 3 ottobre 2012).
^NFL 2012 Week 4 - Risultati e Commenti, NFL Italia Blog, 4 ottobre 2012. URL consultato il 4 ottobre 2012 (archiviato dall'url originale il 1º novembre 2013).