Posey went 0 for 2 with a strikeout in his team's regular-season finale, a 2-1 loss to the Los Angeles Dodgers. He is the first Giants player to win the batting crown since Barry Bonds hit .370 in 2004. Pittsburgh's Andrew McCutchen finished second at .327.
"I don't think it's something that you ever think about doing," Posey said. "It's such a long season, and from Day 1, you try to grind out at-bats no matter what the situation. And if you can go up there and are able to make some adjustments, good things will happen."
The previous catcher to win the NL title was Ernie Lombardi of the Boston Braves, who hit .330 in 1942. The last catcher to win in the AL was Minnesota's Joe Mauer in 2009.
Posey's teammate, Melky Cabrera, had a .346 average, but the All-Star Game MVP was disqualified from the batting race at his own request after he was suspended Aug. 15 after a positive test for testosterone.
Dodgers left-hander Clayton Kershaw finished with a major league-leading 2.53 ERA, pitching his team to Wednesday night's win, a day after being eliminated from playoff contention for the third straight year by the NL West champions.
Kershaw (14-9) allowed one run and three hits in eight innings, struck out eight and walked three in his 33rd start, tying a career high.
He assessed his season as "all right."
"If we make the playoffs next season, it will be a great year," Kershaw said. "Not making the postseason, that's kind of what we play for."
The reigning NL Cy Young Award winner recorded 229 strikeouts, one behind NL leader R.A. Dickey of the New York Mets. The left-hander became the first pitcher to lead the league in ERA in consecutive seasons since Arizona's Randy Johnson in 2001-02.
Kershaw became the first Dodgers pitcher to do so since Sandy Koufax accomplished the feat from 1962-66.
"I don't care," he said about his ERA crown. "It was fun to get a win and hopefully build off these last nine games."
Jason Motte of the St. Louis Cardinals recorded his 42nd save in 49 opportunities during Wednesday night's 1-0 win against the Cincinnati Reds, tying him for the most in the NL with Craig Kimbrel of Atlanta.
"That's cool," Motte said. "He (Kimbrel) has been doing this for two years. This makes me feel good."
Headley doubled home a run in the fifth inning. He hit an RBI triple in the seventh. That allowed him to hold off Brewers slugger Ryan Braun in the NL's RBIs chase. Braun finished with 112 RBIs.
"It was on my mind, but you couldn't think about it too much," Headley said. "To go out and compete against a guy like Ryan Braun, I was a little nervous, but everything turned out great.
"It's just neat. It's a tremendous honor."
Braun, the reigning NL MVP, ended up 1 for 4 in the game. He led the NL with 41 homers and 108 runs, and also ranked first in extra-base hits, slugging percentage and total bases.
"I think ultimately we'll look back on the season as a positive," Braun said. "At the beginning of the year, if you would have told us we'd miss out on the postseason, I think we'd all be disappointed. But at the same time, you have to reassess your goals when you consider everything we've dealt with as a team."
Information from The Associated Press was used in this report.