La città è situata sulla costa adriatica 42 km a nord di Bari, ad un'altitudine di 7 metri s.l.m. Una piccola insenatura naturale, generata nell'antichità dalla foce di un fiume ormai scomparso, corrisponde al porto cittadino. Il territorio è prevalentemente pianeggiante, sebbene ricada nell'estrema porzione settentrionale della Bassa Murgia barese, caratterizzata da una serie di terrazzi, la cui massima altitudine è raggiunta in corrispondenza della matina di Sant'Elia (a circa 200 metri s.l.m), che degradano verso la costa. L'intero territorio è percorso da numerose lame, tra cui la più importante è Lama Paterno, che segna il confine con il comune di Bisceglie.