João Carvalho
Career snapshot
Position rank · 25/26
Among 335 Midfield - Attacking Midfields · ≥200 mins
Career highs
Born the same day
Shares 1997-03-09 · 4 players total
| Full name | João Carvalho |
|---|---|
| Name in home country | João António Antunes Carvalho |
| Date of birth | 1997-03-09 (29 yrs) |
| Place of birth | Castanheira De Pêra, Portugal |
| Citizenship | Portugal |
| Position | Midfield - Attacking Midfield (main: Midfield) |
| Foot | right |
| Height | 172.00 m |
| Current club | GD Estoril Praia |
| Joined | 2024-08-16 |
| Contract expires | 2027-06-30 |
| Agent | SEG |
Percentile rank vs 44 other Midfield - Attacking Midfields with ≥500 minutes in 25/26. Higher = better (except cards, where lower = better — inverted automatically).
| Club | Seasons | First | Last | Matches | Goals | Assists | Minutes |
|---|---|---|---|---|---|---|---|
| GD Estoril Praia | 3 | 22/23 | 25/26 | 69 | 10 | 7 | 3,669 |
| Olympiacos Piraeus | 3 | 21/22 | 23/24 | 46 | 3 | 5 | 318 |
| Nottingham Forest | 4 | 18/19 | 21/22 | 75 | 8 | 9 | 1,635 |
| Olympiacos Piraeus B | 1 | 21/22 | 21/22 | 1 | 0 | 0 | 0 |
| UD Almería | 1 | 20/21 | 20/21 | 36 | 0 | 3 | 0 |
| SL Benfica | 1 | 17/18 | 17/18 | 10 | 0 | 2 | 0 |
| SL Benfica B | 4 | 14/15 | 17/18 | 79 | 9 | 7 | 2,499 |
| Vitória Setúbal FC | 1 | 16/17 | 16/17 | 15 | 1 | 1 | 1,145 |
| SL Benfica UEFA U19 | 3 | 14/15 | 16/17 | 16 | 8 | 8 | 537 |
Career trajectory — goals, assists & market value
Goals by season
Assists by season
| Season | Competition | Club | Matches | Goals | Assists | YC | RC | Minutes |
|---|---|---|---|---|---|---|---|---|
| 25/26 | Liga Portugal | GD Estoril Praia | 5 | 1 | 2 | 2 | 0 | 433 |
| 24/25 | Liga Portugal | GD Estoril Praia | 28 | 6 | 3 | 5 | 1 | 386 |
| 24/25 | Taça de Portugal | GD Estoril Praia | 1 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | Conference L. | Olympiacos Piraeus | 3 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | Europa League | Olympiacos Piraeus | 2 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | Europa League Qualifying | Olympiacos Piraeus | 3 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | Kypello Elladas | Olympiacos Piraeus | 2 | 0 | 0 | 0 | 0 | 0 |
| 23/24 | SL1 Play-off | Olympiacos Piraeus | 5 | 1 | 0 | 0 | 0 | 76 |
| 23/24 | Super League 1 | Olympiacos Piraeus | 14 | 0 | 2 | 1 | 0 | 0 |
| 22/23 | Allianz Cup | GD Estoril Praia | 4 | 1 | 0 | 1 | 0 | 353 |
| 22/23 | Champions League Qu. | Olympiacos Piraeus | 1 | 0 | 0 | 0 | 0 | 0 |
| 22/23 | Liga Portugal | GD Estoril Praia | 29 | 1 | 2 | 6 | 1 | 2,317 |
| 22/23 | Taça de Portugal | GD Estoril Praia | 2 | 1 | 0 | 0 | 0 | 180 |
| 21/22 | Championship | Nottingham Forest | 7 | 0 | 0 | 1 | 0 | 0 |
| 21/22 | EFL Cup | Nottingham Forest | 1 | 2 | 0 | 0 | 0 | 45 |
| 21/22 | FA Cup | Nottingham Forest | 0 | 0 | 0 | 0 | 0 | 0 |
| 21/22 | Kypello Elladas | Olympiacos Piraeus | 3 | 0 | 1 | 0 | 0 | 0 |
| 21/22 | SL1 Play-off | Olympiacos Piraeus | 8 | 2 | 1 | 0 | 0 | 242 |
| 21/22 | Super League 1 | Olympiacos Piraeus | 5 | 0 | 1 | 1 | 0 | 0 |
| 21/22 | Super League 2 | Olympiacos Piraeus B | 1 | 0 | 0 | 0 | 0 | 0 |
| 20/21 | 2ª División | UD Almería | 32 | 0 | 3 | 2 | 0 | 0 |
| 20/21 | Copa del Rey | UD Almería | 3 | 0 | 0 | 0 | 0 | 0 |
| 20/21 | EFL Cup | Nottingham Forest | 1 | 0 | 0 | 0 | 0 | 0 |
| 20/21 | Promoción a LaLiga | UD Almería | 1 | 0 | 0 | 0 | 0 | 0 |
| 19/20 | Championship | Nottingham Forest | 23 | 1 | 1 | 1 | 0 | 858 |
| 19/20 | EFL Cup | Nottingham Forest | 2 | 1 | 0 | 0 | 0 | 92 |
| 19/20 | FA Cup | Nottingham Forest | 1 | 0 | 0 | 0 | 0 | 0 |
| 18/19 | Championship | Nottingham Forest | 38 | 4 | 8 | 5 | 0 | 640 |
| 18/19 | EFL Cup | Nottingham Forest | 1 | 0 | 0 | 0 | 0 | 0 |
| 18/19 | FA Cup | Nottingham Forest | 1 | 0 | 0 | 0 | 0 | 0 |
| 17/18 | Champions League | SL Benfica | 1 | 0 | 0 | 0 | 0 | 0 |
| 17/18 | Ledman LigaPro | SL Benfica B | 5 | 0 | 2 | 1 | 0 | 0 |
| 17/18 | Liga NOS | SL Benfica | 7 | 0 | 1 | 0 | 0 | 0 |
| 17/18 | Taça CTT | SL Benfica | 1 | 0 | 1 | 0 | 0 | 0 |
| 17/18 | Taça de Portugal | SL Benfica | 1 | 0 | 0 | 0 | 0 | 0 |
| 16/17 | Ledman LigaPro | SL Benfica B | 19 | 6 | 2 | 5 | 0 | 266 |
| 16/17 | Liga NOS | Vitória Setúbal FC | 15 | 1 | 1 | 0 | 0 | 1,145 |
| 16/17 | UEFA Youth League | SL Benfica UEFA U19 | 2 | 1 | 1 | 0 | 0 | 180 |
| 15/16 | Ledman LigaPro | SL Benfica B | 37 | 2 | 3 | 6 | 1 | 1,375 |
| 15/16 | UEFA Youth League | SL Benfica UEFA U19 | 6 | 4 | 3 | 1 | 0 | 129 |
| 14/15 | Liga Portugal 2 | SL Benfica B | 18 | 1 | 0 | 0 | 0 | 858 |
| 14/15 | UEFA Youth League | SL Benfica UEFA U19 | 8 | 3 | 4 | 0 | 0 | 228 |
| Season | Date | From | To | Type | Market value | Fee |
|---|---|---|---|---|---|---|
| 10/11 | 2010-07-01 | Benfica Yth | Benfica U15 | Transfer | 0 | — |
| 12/13 | 2012-07-01 | Benfica U15 | Benfica U17 | Transfer | 0 | — |
| 13/14 | 2014-01-01 | Benfica U17 | Benfica U19 | Transfer | 0 | — |
| 14/15 | 2015-01-01 | Benfica U19 | Benfica B | Transfer | 0 | — |
| 16/17 | 2017-01-30 | Benfica B | Vitória Setúbal | Loan | 1000000 | — |
| 16/17 | 2017-06-30 | Vitória Setúbal | Benfica B | Return from loan | 2000000 | — |
| 17/18 | 2017-07-01 | Benfica B | Benfica | Transfer | 2000000 | — |
| 18/19 | 2018-07-01 | Benfica | Forest | Transfer | 2500000 | €15.00m |
| 20/21 | 2020-09-29 | Forest | UD Almería | Loan | 4000000 | — |
| 20/21 | 2021-06-30 | UD Almería | Forest | Return from loan | 3000000 | — |
| 21/22 | 2022-01-29 | Forest | Olympiacos | Transfer | 2200000 | — |
| 22/23 | 2022-08-22 | Olympiacos | Estoril | Loan | 2500000 | — |
| 22/23 | 2023-06-30 | Estoril | Olympiacos | Return from loan | 1800000 | — |
| 24/25 | 2024-08-16 | Olympiacos | Estoril | Transfer | 1200000 | — |
| Season | Injury | From | To | Days missed | Games missed |
|---|---|---|---|---|---|
| 24/25 | unknown injury | 2024-09-21 | 2024-10-15 | 25 | 3 |
| Date | Value |
|---|---|
| Jan 1, 1970 | €2.00m |
| Jan 1, 1970 | €3.00m |
| Jan 1, 1970 | €1.20m |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €1.80m |
| Jan 1, 1970 | €1.50m |
| Jan 1, 1970 | €2.00m |
| Jan 1, 1970 | €2.50m |
| Jan 1, 1970 | €2.20m |
| Jan 1, 1970 | €3.00m |
| Jan 1, 1970 | €4.00m |
| Jan 1, 1970 | €4.00m |
| Jan 1, 1970 | €4.00m |
| Jan 1, 1970 | €5.00m |
| Jan 1, 1970 | €8.00m |
| Jan 1, 1970 | €2.50m |
| Jan 1, 1970 | €2.50m |
| Jan 1, 1970 | €10.00m |
| Jan 1, 1970 | €1.25m |
| Jan 1, 1970 | €2.00m |
| Jan 1, 1970 | €800k |
| Jan 1, 1970 | €1.00m |
| Jan 1, 1970 | €500k |
| Team | Shirt | Matches | Goals | Debut | Age at debut | Status |
|---|---|---|---|---|---|---|
| Team #31372 | #8 | 8 | 0 | — | — | former national player |
| Team #30503 | #7 | 2 | 0 | — | — | former national player |
| Team #23137 | #15 | 12 | 1 | — | — | former national player |
| Team #16374 | #10 | 20 | 6 | — | — | former national player |
| Team #16373 | — | 1 | 0 | — | — | former national player |
| Team #16372 | #10 | 11 | 1 | — | — | former national player |
| Team #16371 | #7 | 6 | 2 | — | — | former national player |
| Teammate | PPG played with | Joint goals | Minutes |
|---|---|---|---|
| Guga | 2 | 0 | 0 |
| Umar Sadiq | 2 | 2 | 0 |
| Heri Tavares | 2 | 1 | 0 |
| Miguel Santos | 1 | 0 | 0 |
| Bruno Varela | 1 | 0 | 0 |
| Tobias Figueiredo | 2 | 0 | 0 |
| Pedro Rebocho | 1 | 0 | 0 |
| Jack Robinson | 1 | 0 | 0 |
| Renato Sanches | 2 | 2 | 0 |
| Diogo Gonçalves | 2 | 7 | 0 |
| Aurélio Buta | 2 | 3 | 0 |
| Matty Cash | 2 | 1 | 0 |
| Joe Lolley | 1 | 3 | 0 |
| Pedro Álvaro | 1 | 0 | 0 |
| Pêpê | 2 | 1 | 0 |
| Rúben Dias | 2 | 0 | 0 |
| Yuri Ribeiro | 2 | 2 | 0 |
Single-season peaks across competitions in this player's career.
Top goalscoring seasons
| Season | Competition | Club | Goals | Matches |
|---|---|---|---|---|
| 24/25 | Liga Portugal | GD Estoril Praia | 6 | 28 |
| 16/17 | Ledman LigaPro | SL Benfica B | 6 | 19 |
| 15/16 | UEFA Youth League | SL Benfica UEFA U19 | 4 | 6 |
Top assist seasons
| Season | Competition | Club | Assists | Matches |
|---|---|---|---|---|
| 18/19 | Championship | Nottingham Forest | 8 | 38 |
| 14/15 | UEFA Youth League | SL Benfica UEFA U19 | 4 | 8 |
| 15/16 | UEFA Youth League | SL Benfica UEFA U19 | 3 | 6 |
Every loan spell across this player's career.
| Season | Date | From | To | Type | Fee | Value at transfer |
|---|---|---|---|---|---|---|
| 22/23 | 2023-06-30 | Estoril | Olympiacos | Return from loan | — | €1.80m |
| 22/23 | 2022-08-22 | Olympiacos | Estoril | Loan | — | €2.50m |
| 20/21 | 2021-06-30 | UD Almería | Forest | Return from loan | — | €3.00m |
| 20/21 | 2020-09-29 | Forest | UD Almería | Loan | — | €4.00m |
| 16/17 | 2017-06-30 | Vitória Setúbal | Benfica B | Return from loan | — | €2.00m |
| 16/17 | 2017-01-30 | Benfica B | Vitória Setúbal | Loan | — | €1.00m |
Last 50 matches for GD Estoril Praia The Availability column cross-references our injury database — matches inside a known injury window are flagged INJURED. Per-match goal attribution requires a paid feed (FBref/Sofascore) and isn't wired up yet.
| Date | Comp | Home | Score | Away | Availability |
|---|---|---|---|---|---|
| 2026-05-16 | PO1 |
GD Estoril Praia | 0–3 | Sport Lisboa e Benfica | Available |
| 2026-05-10 | PO1 |
FC Alverca | 1–1 | GD Estoril Praia | Available |
| 2026-05-10 | PO1 |
FC Alverca | 1–1 | GD Estoril Praia | Available |
| 2026-05-03 | PO1 |
Sporting Clube de Braga | 1–1 | GD Estoril Praia | Available |
| 2026-05-03 | PO1 |
Sporting Clube de Braga | 1–1 | GD Estoril Praia | Available |
| 2026-04-26 | PO1 |
GD Estoril Praia | 0–1 | FC Famalicão | Available |
| 2026-04-26 | PO1 |
GD Estoril Praia | 0–1 | FC Famalicão | Available |
| 2026-04-20 | PO1 |
Moreirense FC | 1–0 | GD Estoril Praia | Available |
| 2026-04-20 | PO1 |
Moreirense FC | 1–0 | GD Estoril Praia | Available |
| 2026-04-12 | PO1 |
GD Estoril Praia | 1–3 | FC Porto | Available |
| 2026-04-06 | PO1 |
FC Arouca | 3–2 | GD Estoril Praia | Available |
| 2026-03-22 | PO1 |
GD Estoril Praia | 1–2 | Rio Ave FC | Available |
| 2026-03-15 | PO1 |
CD Nacional | 0–1 | GD Estoril Praia | Available |
| 2026-03-07 | PO1 |
GD Estoril Praia | 0–0 | Casa Pia AC | Available |
| 2026-02-27 | PO1 |
Sporting Clube de Portugal | 3–0 | GD Estoril Praia | Available |
| 2026-02-22 | PO1 |
GD Estoril Praia | 3–1 | Gil Vicente FC | Available |
| 2026-02-15 | PO1 |
AVS | 3–0 | GD Estoril Praia | Available |
| 2026-02-07 | PO1 |
GD Estoril Praia | 2–2 | CD Tondela | Available |
| 2026-01-31 | PO1 |
CD Santa Clara | 2–4 | GD Estoril Praia | Available |
| 2026-01-24 | PO1 |
GD Estoril Praia | 4–2 | Vitória Guimarães | Available |
| 2026-01-19 | PO1 |
CF Estrela da Amadora | 0–5 | GD Estoril Praia | Available |
| 2026-01-03 | PO1 |
Sport Lisboa e Benfica | 3–1 | GD Estoril Praia | Available |
| 2025-12-27 | PO1 |
GD Estoril Praia | 4–1 | FC Alverca | Available |
| 2025-12-19 | PO1 |
GD Estoril Praia | 1–0 | Sporting Clube de Braga | Available |
| 2025-12-14 | PO1 |
FC Famalicão | 4–0 | GD Estoril Praia | Available |
| 2025-12-07 | PO1 |
GD Estoril Praia | 3–3 | Moreirense FC | Available |
| 2025-11-30 | PO1 |
FC Porto | 1–0 | GD Estoril Praia | Available |
| 2025-11-07 | PO1 |
GD Estoril Praia | 4–3 | FC Arouca | Available |
| 2025-11-01 | PO1 |
Rio Ave FC | 0–4 | GD Estoril Praia | Available |
| 2025-10-26 | PO1 |
GD Estoril Praia | 1–1 | CD Nacional | Available |
| 2025-10-03 | PO1 |
Casa Pia AC | 2–2 | GD Estoril Praia | Available |
| 2025-09-27 | PO1 |
GD Estoril Praia | 0–1 | Sporting Clube de Portugal | Available |
| 2025-09-21 | PO1 |
Gil Vicente FC | 2–0 | GD Estoril Praia | Available |
| 2025-09-13 | PO1 |
GD Estoril Praia | 3–1 | AVS | Available |
| 2025-09-06 | PO1 |
GD Estoril Praia | 0–1 | CD Santa Clara | Available |
| 2025-08-31 | PO1 |
CD Tondela | 2–2 | GD Estoril Praia | Available |
| 2025-08-16 | PO1 |
Vitória Guimarães | 3–2 | GD Estoril Praia | Available |
| 2025-08-11 | PO1 |
GD Estoril Praia | 1–1 | CF Estrela da Amadora | Available |
| 2025-05-17 | PO1 |
GD Estoril Praia | 4–0 | CF Estrela da Amadora | Available |
| 2025-05-11 | PO1 |
Moreirense FC | 2–2 | GD Estoril Praia | Available |
| 2025-05-03 | PO1 |
GD Estoril Praia | 1–2 | Sport Lisboa e Benfica | Available |
| 2025-04-29 | PO1 |
Casa Pia AC | 1–3 | GD Estoril Praia | Available |
| 2025-04-19 | PO1 |
GD Estoril Praia | 0–2 | Sporting Clube de Braga | Available |
| 2025-04-12 | PO1 |
FC Famalicão | 3–0 | GD Estoril Praia | Available |
| 2025-04-04 | PO1 |
AVS | 0–3 | GD Estoril Praia | Available |
| 2025-03-30 | PO1 |
GD Estoril Praia | 1–2 | FC Porto | Available |
| 2025-03-16 | PO1 |
FC Arouca | 1–1 | GD Estoril Praia | Available |
| 2025-03-08 | PO1 |
GD Estoril Praia | 2–2 | SC Farense | Available |
| 2025-03-03 | PO1 |
Sporting Clube de Portugal | 3–1 | GD Estoril Praia | Available |
| 2025-02-22 | PO1 |
GD Estoril Praia | 2–1 | Rio Ave FC | Available |
Teams faced most often by João Carvalho's clubs during seasons he played in those competitions (team-level results, not personal head-to-head goals — see disclaimer above).
| Opponent | P | W | D | L | GF | GA | GD | Win % |
|---|---|---|---|---|---|---|---|---|
| Derby County | 11 | 5 | 4 | 2 | 12 | 9 | +3 | 45% |
| Blackburn Rovers | 11 | 2 | 5 | 4 | 17 | 18 | -1 | 18% |
| Birmingham City | 10 | 3 | 3 | 4 | 13 | 13 | 0 | 30% |
| Reading FC | 10 | 5 | 2 | 3 | 17 | 11 | +6 | 50% |
| Brentford FC | 10 | 3 | 1 | 6 | 11 | 17 | -6 | 30% |
| CD Nacional | 10 | 5 | 2 | 3 | 17 | 11 | +6 | 50% |
| Sheffield Wednesday | 10 | 2 | 1 | 7 | 6 | 19 | -13 | 20% |
| Leeds United | 10 | 4 | 5 | 1 | 14 | 9 | +5 | 40% |
| Moreirense FC | 9 | 1 | 3 | 5 | 15 | 22 | -7 | 11% |
| Huddersfield Town | 9 | 3 | 1 | 5 | 10 | 13 | -3 | 33% |
| Ipswich Town | 9 | 3 | 4 | 2 | 13 | 8 | +5 | 33% |
| CD Feirense | 8 | 3 | 0 | 5 | 14 | 18 | -4 | 38% |
Auto-detected milestones based on cumulative career totals.
| Season / Year | Milestone | Date |
|---|---|---|
| 14/15 | Senior debut season | |
| 14/15 | First senior goal |
Yellow / second-yellow / red cards per season. Only seasons with at least one card are shown.
| Season | Matches | Mins | YC | 2nd YC | RC | Cards / 90′ |
|---|---|---|---|---|---|---|
| 25/26 | 5 | 433 | 2 | 0 | 0 | 0.42 |
| 24/25 | 29 | 386 | 5 | 0 | 1 | 1.4 |
| 23/24 | 29 | 76 | 1 | 0 | 0 | 1.18 |
| 22/23 | 36 | 2,850 | 7 | 0 | 1 | 0.25 |
| 21/22 | 25 | 287 | 2 | 0 | 0 | 0.63 |
| 20/21 | 37 | 0 | 2 | 0 | 0 | 0 |
| 19/20 | 26 | 950 | 1 | 0 | 0 | 0.09 |
| 18/19 | 40 | 640 | 5 | 0 | 0 | 0.7 |
| 17/18 | 15 | 0 | 1 | 0 | 0 | 0 |
| 16/17 | 36 | 1,591 | 5 | 2 | 0 | 0.4 |
| 15/16 | 43 | 1,504 | 7 | 0 | 1 | 0.48 |
Output by competition
Career goals and assists broken down by tournament.
More on João Carvalho
Explore this player's career through different angles.
Similar players
Same position, similar age, sorted by market value.
Frequently asked about João Carvalho
Who is João Carvalho?
João Carvalho is a Portugal professional footballer who plays as a attacking midfield for GD Estoril Praia.
How old is João Carvalho?
João Carvalho is 29 years old. He was born on March 9, 1997 in Castanheira De Pêra.
What position does João Carvalho play?
João Carvalho plays as a attacking midfield (Midfield - Attacking Midfield).
What club does João Carvalho play for?
João Carvalho currently plays for GD Estoril Praia.
How many career goals has João Carvalho scored?
Across all senior club competitions in our dataset, João Carvalho has scored 39 goals in 347 appearances.
What is João Carvalho's market value?
João Carvalho's most recent reported market value is €3.00m.
Portugal