Officials responded to the scene at Good Harbor Beach around 1:40 p.m. after reports the umbrella had become dislodged, and then airborne before striking the victim in the left shoulder.
The boy was visiting from Florida and is now recovering at an area hospital.
"We were all just chilling on the beach and then all of a sudden you just saw this umbrella, it just flew in the air," Stephanie Peters, of Cambridge, told WFXT.
"(It) went up in the air and hit a couple of ladies in the head and came down and impaled a poor boy right in the armpit and there was blood everywhere," Laura Wood, of Rawley, told the television station.
"You heard a bunch of people scream and then it was just all kinds of commotion on the beach," Peters told WFXT. "And we realized there was this kid on the ground and there was all kinds of blood."
Gloucester firefighters said the umbrella impaled the left shoulder of the 13-year-old.
An EMT and a nurse who were already on the beach rushed to help along with lifeguards.
"Everyone kind of jumped out and we all cleared a path because it was a mob with all the umbrellas and people and chairs and everything," Wood told WFXT.
Firefighters say the boy was alert and talking.
"To my best guess it was a freak accident," Capt. Nick Ouellette of Gloucester Fire said.
But umbrellas can be dangerous if not secured, and the accident serves as a reminder.
"If there's any lesson to be learned (it's) that people have to get those anchors," Peters said. "That's the only thing, get those plastic anchor things and it's not going to blow away, but if you just stick in the sand that's what's going to happen."