Surge protection circuit for optocoupled arduino digital input

just as the description goes,

anyways, im using this circuit


Now, im confused about the diode selection. as im using 12v supply, will a 1N4742 diode do?
Is the circuit okay?

You're looking for a TVS diode, not a normal zener.

I cant find any model number for them.. its getting hard to find one

Why not just use the series resistor and reverse diode to protect the opto coupler - what kind of surge are you expecting? Capacitively coupled interference has low current and won't be an issue with low impedance loads of a few hundred ohms (most LEDs rated at 20mA will handle 0.1A pulses of short duration anyway, but do need protecting against reverse voltage)

In short I think your circuit is overkill, it won't hurt of course.

And if you use a diode either use a reverse biased 1N4148 or a 15V zener. A TVS diode is hopeless here as it won't stop reverse voltage transients - LEDs breakdown around 5V reverse.

The circuit might seem overkill, but it is safe!! plus god knows what interference occurs, as the wires are pretty long and outside, hence the circuit. There is a more detailed thread where this circuit came from here

anyways, in short, I have the option of either a reverse biased 1N4148 or a 15V zener such as 1N4744

As i lack some understanding, which option would be better?

I dont fully understand the whole lot of electronics (yet!!) so i would like to stick to the given method. Im sure that your option is viable as well. but overkill IS cheap in this case. so it doesnt hurt.