Balkány a Nyírségben, Nyíregyházától délkeletre közel 27 km-re, Debrecentől északkeletre 40 km-re, Nagykállótól 14 km-re, az M3-as autópálya 234-es csomópontjától délkelet felé, 20 km-re található. Területe délen nagy távolságra terjed, a Hajdú-Bihar megyei Nyíradonnyal, Hajdúsámsonnal és és Hajdúhadházzal határos, 24 tanyájának jelentős része ezen a területen található. További szomszédai nyugaton Geszteréd, északon Nagykálló, Biri és Kállósemjén, keleten pedig Szakoly.
A legmagasabb pont: 169 m (Kismogyoróstól északkeletre 500–600 m-re).Domborzati viszonyai a Nyírségre jellemzőek, a terület enyhén nyugat felé lejt.
Szőlő-hegy: 154 m (Balkány).
Gyűrűs-hegy: 160 m (Csiffy tanya).
A város csak mellékutakon közelíthető meg, négy irányból: Téglás–Geszteréd felől a 4901-es úton, Nyíregyháza–Nagykálló felől, Nyíradony felől, illetve Nyírmihálydi–Szakoly felől. A környező főutak (4-es, 41-es, 403-as, 471-es) elkerülik.
Megközelíthető volt a 112-es számú Nagykálló–Nyíradony-vasútvonalon is, de a személyforgalmat 2007. március 3-án gazdaságtalanságra és kihasználatlanságra hivatkozva leállították. Az utolsó évben már csak napi két pár vonat közlekedett a 23 km hosszú vonalon. A városban és külterületén a vonat négy helyen – Görénypuszta, Balkány, Cibakpuszta és Abapuszta – állt meg.