Prasideda šalia Triškonių, 6 km į vakarus nuo Linkuvos. Teka į šiaurę, pačiame aukštupyje prateka Triškonių mišką ir Dūčių tyrelio durpyną. Pratekėjęs 38 km, Beržtalis kerta Lietuvos–Latvijos valstybės sieną ir toliau teka Latvijos teritorija. Įteka į Yslykį 14 km nuo jo žiočių, į šiaurę nuo Rundalės.