\n\n","providerName":"Twitter","providerUrl":"https://twitter.com","thumbnail_url":null,"type":"oembed","width":550,"contentType":"rich"},{"__typename":"Markdown","content":"* Subscribe to the MLB Pipeline Newsletter","type":"text"},{"__typename":"Markdown","content":"Offense and fireworks often go hand-in-hand, but on this Fourth of July night, Greensboro’s pitching staff delivered the real show.","type":"text"}],"relativeSiteUrl":"/news/pirates-prospects-combine-perfect-game-high-a-greensboro","contentType":"news","subHeadline":"","summary":"Fourth of July and baseball? Some might say it’s the perfect combination. For the Greensboro Grasshoppers on Friday, it turned out to be just that -- with a perfect game to match.","tagline({\"formatString\":\"none\"})":null,"tags":[{"__typename":"InternalTag","slug":"storytype-article","title":"Article","type":"article"},{"__typename":"TeamTag","slug":"teamid-477","type":"team","title":"Greensboro Grasshoppers","team":{"__ref":"Team:477"}},{"__typename":"PersonTag","slug":"playerid-694753","title":"Khristian Curtis","person":{"__ref":"Person:694753"},"type":"player"},{"__typename":"TaxonomyTag","slug":"mlb-top-prospects","title":"MLB Top Prospects","type":"taxonomy"},{"__typename":"TaxonomyTag","slug":"minor-league-baseball","title":"MiLB","type":"taxonomy"},{"__typename":"ContributorTag","slug":"cole-weintraub","title":"Cole Weintraub","type":"contributor"},{"__typename":"TaxonomyTag","slug":"apple-news","title":"Apple News","type":"taxonomy"},{"__typename":"TeamTag","slug":"teamid-134","type":"team","title":"Pittsburgh Pirates","team":{"__ref":"Team:134"}},{"__typename":"TaxonomyTag","slug":"send-to-milb","title":"Send to MiLB","type":"taxonomy"}],"type":"story","thumbnail":"https://img.mlbstatic.com/mlb-images/image/upload/{formatInstructions}/mlb/xijspdxtyaa42lbkazb2","title":"Pirates pitching prospects Khristian Curtis, Jake Shirk and Michael Walsh combine for perfect game"},"getHeaderFromForgePath({\"contentSource\":\"MLB\",\"headerPath\":\"/_navs/header/milb/global-nav\",\"locale\":\"en-US\",\"paletteKey\":\"milb-base-palette\",\"propertiesKey\":\"milb-global-properties\"})":{"__typename":"Header","navigation":[{"__typename":"NavItem","customPropertiesString":"mobile:true","icon":null,"linkTarget":null,"linkText":"Scores","linkUrl":"https://www.milb.com/scores?affiliateId=mlbcom-milb","placement":"mobile","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Triple-A Scores","linkUrl":"https://www.milb.com/scores?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Double-A Scores","linkUrl":"https://www.milb.com/scores/double-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"High-A Scores","linkUrl":"https://www.milb.com/scores/high-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Single-A Scores","linkUrl":"https://www.milb.com/scores/single-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Rookie Scores","linkUrl":"https://www.milb.com/scores/rookie?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""}]}]},{"__typename":"NavItem","customPropertiesString":"","icon":null,"linkTarget":null,"linkText":"Schedule","linkUrl":"https://www.milb.com/schedule?affiliateId=mlbcom-milb","placement":null,"visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Triple-A Schedule","linkUrl":"https://www.milb.com/schedule/triple-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Double-A Schedule","linkUrl":"https://www.milb.com/schedule/double-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"High-A Schedule","linkUrl":"https://www.milb.com/schedule/high-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Single-A Schedule","linkUrl":"https://www.milb.com/schedule/single-a?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Rookie Schedule","linkUrl":"https://www.milb.com/schedule/rookie?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Sync Schedules","linkUrl":"https://milb.ecal.com/","linkTarget":"_blank","visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"mobile:true","icon":null,"linkTarget":null,"linkText":"Teams","linkUrl":"https://www.milb.com/about/teams/by-affiliate?affiliateId=mlbcom-milb","placement":"mobile","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Teams by Affiliate","linkUrl":"https://www.milb.com/about/teams/by-affiliate?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Teams by Name","linkUrl":"https://www.milb.com/about/teams?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Teams by Class","linkUrl":"https://www.milb.com/about/teams/by-class?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Teams by League","linkUrl":"https://www.milb.com/about/teams/by-league?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Ballparks","linkUrl":"https://www.mlb1.net/milb/fans/ballpark-guides","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"align:right","icon":null,"linkTarget":null,"linkText":"Watch","linkUrl":"https://www.milb.com/live-stream-games?affiliateId=mlbcom-milb","placement":"right","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Watch Games","linkUrl":"https://www.milb.com/live-stream-games?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Subscribe","linkUrl":"https://www.mlb1.net/live-stream-games/subscribe","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Highlights","linkUrl":"https://www.mlb1.net/video/?q=ContentTags+%3D+%5B%22minor-league-baseball%22%5D+Order+by+Timestamp+DESC","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Highlights by Affiliate","linkUrl":"https://www.milb.com/fans/video-by-affiliate?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Prospect Highlights","linkUrl":"https://www.mlb1.net/video/topic/mlb-pipeline","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Streaming FAQ","linkUrl":"https://www.milb.com/live-stream-games/faqs?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Help Center","linkUrl":"https://support.mlb.com","linkTarget":"_blank","visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Gameday Audio","linkUrl":"https://www.milb.com/live-stream-games/audio?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Podcasts","linkUrl":"https://www.mlb1.net/fans/podcasts","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Bally Sports Live","linkUrl":"https://www.ballysports.com/","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"align:right","icon":null,"linkTarget":null,"linkText":"Tickets","linkUrl":"https://www.mlb1.net/milb/tickets","placement":"right","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[]}]},{"__typename":"NavItem","customPropertiesString":"align:right","icon":null,"linkTarget":null,"linkText":"Shop","linkUrl":"https://milbstore.com/?utm_source=milb.com&utm_medium=referral&utm_campaign=house-2023&utm_content=menu-navigation-link-2023&utm_term=568","placement":"right","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"MiLB Store","linkUrl":"https://milbstore.com/?utm_source=milb.com&utm_medium=referral&utm_campaign=house-2023&utm_content=menu-navigation-link-2023&utm_term=568","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Auctions","linkUrl":"https://bit.ly/3aKmj6F","linkTarget":"_blank","visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Shop Copa","linkUrl":"https://milbstore.com/pages/copa-de-la-diversion","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Shop Marvel","linkUrl":"https://milbstore.com/pages/marvel","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"mobile:true","icon":null,"linkTarget":null,"linkText":"Standings","linkUrl":"https://www.milb.com/standings/?affiliateId=mlbcom-milb","placement":"mobile","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Full Season","linkUrl":"https://www.milb.com/standings/?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Rookie Leagues","linkUrl":"https://www.milb.com/about/rookie?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":null,"icon":null,"linkTarget":null,"linkText":"Stats","linkUrl":"https://www.milb.com/stats?affiliateId=mlbcom-milb","placement":null,"visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Full Season","linkUrl":"https://www.milb.com/stats?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Rookie Leagues","linkUrl":"https://www.milb.com/about/rookie?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Players","linkUrl":"https://www.milb.com/players?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Top Prospect Stats","linkUrl":"https://www.mlb1.net/prospects/stats/top-prospects","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"","icon":null,"linkTarget":null,"linkText":"News","linkUrl":"https://www.mlb1.net/milb/news","placement":null,"visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Pipeline","linkUrl":"https://www.mlb1.net/milb/pipeline","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Transactions","linkUrl":"https://www.milb.com/roster/transactions?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Copa de la Diversión","linkUrl":"https://www.milb.com/fans/copa?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Baseball Traveler","linkUrl":"https://www.mlb1.net/milb/baseball-traveler?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"Malmö Oat Milkers","linkUrl":"https://www.milb.com/team/oatly?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"The MiLB App","linkUrl":"https://www.mlb1.net/milb/about/milb-app","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":""},{"__typename":"NavItem","placement":null,"linkText":"MiLB Newsletters","linkUrl":"https://www.milb.com/milb/forms/newsletter-registration?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Sweepstakes & Contests","linkUrl":"https://www.milb.com/milb/fans/contests?affiliateId=mlbcom-milb","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":"mobile:true","icon":"group","linkTarget":null,"linkText":"Prospects","linkUrl":"https://www.mlb1.net/milb/prospects","placement":"mobile","visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[{"__typename":"NavItem","placement":null,"linkText":"Top 100","linkUrl":"https://www.mlb1.net/milb/prospects","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Top 30 by Team","linkUrl":"https://www.mlb1.net/milb/prospects/orioles","linkTarget":"","visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Top 50 International","linkUrl":"https://www.mlb1.net/milb/prospects/2025/international","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null},{"__typename":"NavItem","placement":null,"linkText":"Draft Top 200","linkUrl":"https://www.mlb1.net/milb/prospects/draft","linkTarget":null,"visible":null,"icon":null,"tooltip":null,"customPropertiesString":null}]}]},{"__typename":"NavItem","customPropertiesString":null,"icon":"mlb","linkTarget":null,"linkText":"MLB","linkUrl":"https://www.mlb1.net/","placement":null,"visible":null,"subNav":[{"__typename":"SubnavColumn","title":null,"navigation":[]}]}],"cfPalette":{"__typename":"CF_Palette","headerMastheadBackgroundColor":"#00278C","headerMastheadTextColor":"#ffffff","headerNavigationBackgroundColor":"#00278C","headerNavigationBorderColor":"#006CFF","headerNavigationTextColorHover":"currentcolor","headerNavigationTextColor":"#fff"},"cfEntityWebProperties":{"__typename":"CF_Entity_WebProperties","urlLogo":null,"headerMastheadTagline":null,"headerPrimaryLogo":{"__typename":"CF_Asset","url":"//images.ctfassets.net/iiozhi00a8lc/7eeTdW5zGYe0sW2ZlIle7E/990464d4b5e4e3b3a65cb6c56ce808ea/milb-alt.svg","description":null},"headerMastheadSponsorImage":{"__typename":"CF_Asset","url":null,"description":null},"headerMastheadTaglineContainerWidth":"512px","headerMastheadTaglineContainerHeight":"56px"}}},"Team:477":{"__typename":"Team","id":477,"sport":{"__ref":"Sport:13"},"teamName":"Grasshoppers"},"Person:694753":{"__typename":"Person","id":694753,"initLastName":"K Curtis","team":{"__typename":"Team","sport":{"__ref":"Sport:13"}}},"Sport:13":{"__typename":"Sport","id":"13"},"Sport:1":{"__typename":"Sport","id":"1"},"Team:134":{"__typename":"Team","id":134,"sport":{"__ref":"Sport:1"},"teamName":"Pirates"}}}
window.adobeAnalytics = {"reportingSuiteId":"mlbglobal08,mlbcom08","linkInternalFilters":"mlb"}
window.globalState = {"tracking_title":"Minor League Baseball","lang":"en"}
window.appId = ''
/*-->*/
Pirates' High-A club spins first non-complex 9-inning perfect game since 2017
Fourth of July and baseball? Some might say it’s the perfect combination. For the Greensboro Grasshoppers on Friday, it turned out to be just that -- with a perfect game to match.
Three Pirates pitching prospects -- Khristian Curtis (PIT No. 24), Jake Shirk and Michael Walsh -- combined to throw a nine-inning perfect game for High-A Greensboro in a 2-0 win over Aberdeen at Ripken Stadium. It marked the first nine-inning perfect game outside of the Complex Leagues in the Minors since 2017.
Earlier this season, Mets Double-A prospects combined to throw a seven-inning perfecto as part of a doubleheader. There were a pair of Dominican Summer League perfect games in 2022 and '24, but both went fewer than nine frames. On July 2, 2022, the Dodgers' Rookie-level Arizona Complex League club threw one that went nine frames and combined to use five pitchers.
Greensboro last threw a no-hitter on Aug. 5, 2018, when three pitchers -- Taylor Braley, Jeremy Ovalle, Michael Mertz -- combined to blank Kannapolis across seven frames.
The fireworks didn’t come immediately. Both teams were hitless through three innings, and the game remained scoreless until the fifth, when newly acquired Titus Dumitru launched his first homer as a member of the Pirates organization. Dumitru, who was traded from the Braves just three days ago, broke the tie with a no-doubt solo shot to left field.
Curtis set the tone on the mound from the very first batter. After falling behind 3-0 to leadoff hitter Austin Overn, the 6-foot-5 righty battled back to retire him swinging on a full count. On the next hitter, Curtis opened Griff O’Ferrall with another 3-0 count, but induced a lineout in a full count. Then, the 2023 12th-round pick proceeded to dominate. He retired all 18 batters he faced over six perfect innings, racking up a professional-best 10 strikeouts.
In the sixth, Greensboro added an insurance run on back-to-back singles by Konnor Griffin (PIT No. 2/MLB No. 13) and Keiner Delgado (PIT No. 26), capped by a sacrifice fly from outfielder Will Taylor. Griffin has reached safely in 31 of his past 32 games, a streak spanning back before his promotion to High-A on June 10.
Shirk took over in the seventh and continued the perfection, striking out four batters over two clean innings. The right-hander has been stellar since joining Greensboro, allowing just one run over his first four appearances.
The final act belonged to Walsh. With a 12 1/3 scoreless inning streak entering the night, he completed the masterpiece with a flawless ninth inning, striking out two to cement the perfect game. After fanning Cole Urman for the final out, Walsh turned to center field and let out an emphatic yell before being mobbed by his teammates on the mound in celebration.
27 up, 27 down! ✅
Here’s how the @GSOHoppers’ masterpiece looked in my scorebook.
It’s the first time in my career that I’ve called a perfect game. I’m grateful for the opportunity and honored that I could be the voice of such a special game/moment. https://t.co/viMFHMGRJ1pic.twitter.com/5PXhtVHos4
— Michael Marcantonini (@MIKEdUpSports) July 5, 2025