原为合浦县地。
清康熙元年(1662)析合浦县南端(即现北海)置北海镇,以北海村得名。
咸丰六年(1856)珠场巡检司自合浦南康移驻北海。
1912年成立北海自治会,仍属合浦县地,属广东省钦廉道。
1926年改置北海市政筹备处,直属省。
1930年废市政筹备处复为合浦县地,属南区绥靖公署。
1949年置北海军政委员会,属南路专区。
1950年析合浦县南部分地置北海市,为省辖市。
1952年改为广西省直辖市。
1955年复归广东省。
1956年降为县级市,属合浦专区。
1959年改北海市为北海镇(县级镇),属湛江专区。
1964年复置北海市(县级)。
1965年属广西壮族自治区钦州专区。
1971年属钦州地区。
1983年改为自治区辖市。
1984年辟为沿海经济开放区。
1987年钦州地区合浦县划入。
1994年撤销郊区,改设银海区;从合浦县析出南康、营盘2镇置铁山港区。