Das Spanische hay ist übriggeblieben von ehemaligen Vollverb haber. haber dient heute nur noch als Hilfsverb zur Bildung der Zeiten, die Bedeutung von haben hat es nicht mehr. hay stammt ursprünglich von diesem Verb, es kann in der Bedeutung von haben (besitzen) heute aber nicht mehr konjugiert werden.

hay = es gibt
hay = es gibt
Hay mucha gente en la calle. = Es gibt viele Leute auf der Straße.

Es besteht die Gefahr, hay mit estar zu verwechseln. Manchmal kann man denselben Sachverhalt sowohl mit hay als auch mit estar ausdrücken und manchmal eben nicht.

Hay zanahorias en el refrigerador. = Im Kühlschrank sind Karotten.
Las zanahorias están en el refrigerador. = Die Karotten sind im Kühlschrank.

Genau genommen sind die zwei Sätze nicht identisch. Im ersten Satz sind irgendwelche Karotten im Kühlschrank im zweiten Satz ganz bestimmten Karotten. Eine leichte Veränderung des Satzes bewirkt, dass er nur noch mir estar übersetzt werden kann.

Die Karotten, die ich gestern gekauft habe, sind im Kühlschrank.
richtig: Las zanahorias que compré ayer están en el refrigerador.
falsch: Hay las zanahorias que compré ayer en el refrigerador.

Hay steht also immer, wenn etwas unbestimmtes bezeichnet wird.

Hay unos hombres en la puerta que preguntan por ti.
Da sind ein paar Männer an der Tür, die nach dir fragen.
Los hombres de al lado están en la puerta.
Die Männer von nebenan sind an der Tür.
hay im pretérito indefinido, pretérito imperfecto
Había mucha gente en la calle. = Es waren (gab) viele Leute auf der Straße.
Ayer hubo un accidente en Madrid. = Gestern gab es in Madrid einen Unfall.