At least 26 people were killed in greater Jakarta, while three more were killed by flash floods in neighbouring Lebak regency in the south of Java island, officials say.
Indonesia's disaster agency warned on Thursday of more deaths after torrential rains pounded the Jakarta region, triggering floods and landslides that killed at least 29 and left vast swathes of the megalopolis under water.
At least 26 people died in greater Jakarta, while three more were killed by flash floods in neighbouring Lebak regency in the south of Java island, according to the local disaster agency.
Police in Lebak said on Thursday they were searching for as many as eight people who could still be missing.
"We hope the toll won't keep going up," Social Affairs Minister Juliari Peter Batubara told reporters earlier Thursday.
Tens of thousands fled to temporary shelters across the capital region — home to some 30 million — with scores of houses damaged in the deadliest flooding in years, after torrential rains on New Year's Eve.
Images showed waterlogged homes and cars covered in muddy floodwaters, while some people took to paddling in small rubber lifeboats or tyre inner-tubes to get around.
In Bekasi, on the outskirts of the city, receding waters revealed swampy streets littered with debris and crushed cars lying on top of each other — with waterline marks reaching as high as buildings' second floors.
"I saw the water coming and it just kept getting higher and higher," said Deddy Supriadi, after a local river overflowed on the first day of 2020.
"It swept away 40 or 50 cars that were parked right here," he told AFP.
Rescuers used inflatable boats to evacuate residents trapped in their homes, including children and seniors.
TV images showed the dramatic rescue of a baby saved by disaster personnel who waded through chin-deep water to the family's home and carried the infant away to safety in a small plastic tub.
"We've been rescuing newborns, mothers who just gave birth and babies trapped in houses without food," said Yusuf Latif, spokesman for the National Search and Rescue agency.
"In some places, the rescue operation was quite challenging and difficult. The water was deep with a strong current. Some alleyways were so narrow that it was hard for our inflatable boats to pass through," he added.
Across the city, kids took the opportunity to swim in the floodwaters while some people grabbed fishing rods.
"I saw people were fishing here so I followed them," said 28-year-old Agung Rosiadi.
"There were lots of fish before but I don't know why they're all gone now," he added.
Around Jakarta, an eight-year-old boy killed in a landslide and an 82-year-old pensioner were among the confirmed victims.
Others died from drowning or hypothermia, while one 16-year-old boy was electrocuted by a power line.
"The floods hit without warning," Munarsih, who goes by one name, said from her waterlogged neighbourhood in Jakarta's western outskirts where dozens of families fled to safety.
"The water came very fast and it rose quickly. We couldn't manage to get our stuff out, including my car," she added.
Stories about animal rescues went viral online, including a dog chained to a fence that was plucked from certain death, while a drenched rat was filmed taking refuge on a floating plastic sandal.
On Wednesday, electricity was switched off in many Jakarta districts to prevent more electrocutions, with some train lines and one airport also shut. By Thursday, most service had returned to normal.
The disaster marked Jakarta's worst flooding since 2013 when dozens were killed after the city was inundated by monsoon rains.
Jakarta is regularly hit by floods during Indonesia's rainy season, which started in late November.
Authorities said on Thursday that some 31,000 people had been evacuated, but that figure did not include residents in Jakarta's satellite cities.