The Toronto Blue Jays selected Berti in the 18th round, with the 559th overall selection, of the 2011 Major League Baseball draft. With the Vancouver Canadians of the Short Season-ANorthwest League, he had 23 stolen bases, and hit.291 with 21 RBI. In 2012, he played for the Lansing Lugnuts of the Class AMidwest League and the Dunedin Blue Jays of the Advanced-AFlorida State League. In 110 combined games, Berti hit.241 with 2 home runs, 40 RBI, and 34 stolen bases. In 2013, Berti played for Dunedin and stole 56 bases, the most in the FSL. That offseason, Berti played for the Canberra Cavalry of the Australian Baseball League in the 2013–14 ABL season. He stole 31 bases in 46 games, setting an ABL record, and hit.309 with 18 RBI. He stole another four bases in the 2013 Asia Series. In 2014, Berti played for the New Hampshire Fisher Cats of the Double-AEastern League. He stole 38 bases, was named an Eastern League All Star, and was assigned to the Arizona Fall League after the regular season. He also set career-highs in games played, home runs, and RBI. In the offseason, Berti played 20 games with the Mesa Solar Sox of the Arizona Fall League, and batted.292 with 3 home runs, 8 RBI, and 6 stolen bases. He would split time in 2015 with New Hampshire and the Triple-ABuffalo Bisons. In 103 total games, he hit.249 with 3 home runs, 34 RBI, and 23 stolen bases. Berti was invited to Major League spring training on January 12, 2016, and reassigned to minor league camp on March 10. He started the season with New Hampshire, and was assigned to Buffalo on April 27. Berti played in 86 total games in 2016, and hit.256 with four home runs, 33 RBI, and 36 stolen bases. He spent 2017 with Buffalo and Dunedin, hitting.204 with three home runs, 20 RBI, and 24 stolen bases in 65 games. On April 21, 2018, Berti was traded to the Cleveland Indians organization for cash considerations. He appeared in 25 games for the Triple-A Columbus Clippers before being traded back to the Blue Jays organization on June 8. The Blue Jays promoted Berti to the major leagues on September 26, 2018, and inserted him in their starting lineup that day at second base. He was designated for assignment on October 5, and outrighted to Triple-A Buffalo on October 9. He elected free agency on November 2, 2018.
Miami Marlins
In early December 2018, Berti signed a minor league contract with the Miami Marlins, and was invited to spring training. He opened the 2019 season with the New Orleans Baby Cakes. On April 20, his contract was selected and he was called up to the major league roster. He hit his first major league home run on May 6, in a 6–5 Marlins win. In 2019, Berti hit.273 with 6 home runs, and led the Marlins with 17 stolen bases in 73 games. He also demonstrated his defensive versatility as a rookie with 20 games played as a third baseman, 21 games as a center fielder and 32 games as a shortstop. Berti became the first player in Marlins history with 20-plus games at each of those positions in the same season.