原為合浦縣地。
清康熙元年(1662)析合浦縣南端(即現北海)置北海鎮,以北海村得名。
咸豐六年(1856)珠場巡檢司自合浦南康移駐北海。
1912年成立北海自治會,仍屬合浦縣地,屬廣東省欽廉道。
1926年改置北海市政籌備處,直屬省。
1930年廢市政籌備處復為合浦縣地,屬南區綏靖公署。
1949年置北海軍政委員會,屬南路專區。
1950年析合浦縣南部分地置北海市,為省轄市。
1952年改為廣西省直轄市。
1955年復歸廣東省。
1956年降為縣級市,屬合浦專區。
1959年改北海市為北海鎮(縣級鎮),屬湛江專區。
1964年復置北海市(縣級)。
1965年屬廣西壯族自治區欽州專區。
1971年屬欽州地區。
1983年改為自治區轄市。
1984年辟為沿海經濟開放區。
1987年欽州地區合浦縣劃入。
1994年撤銷郊區,改設銀海區;從合浦縣析出南康、營盤2鎮置鐵山港區。