Indian Beach is a town in Carteret County, North Carolina, United States. The population was 223 as of the 2020 census.