How can I determine takeoff and landing from an ADS-B feed?
It depends on the type of ADS-B feed you have. 

On the lowest level, the messages transmitted from the aircraft, usually contain information about the air/ground status of the aircraft1. When the aircraft is airborne, Airborne Position Message are transmitted (types 9 - 18 or 20 - 22) for position and altitude. Airborne velocity is in message type 19. On the surface, message types 5-8 are used to transmit both surface position and movement. So by looking at the raw messages, the transition between airborne and surface type indicates landing, vice versa in indicates take-off. 

This is accurate for most larger aircraft, smaller aircraft and helicopters don't always have a weight-on-wheel switch or similar device that is used to toggle the air/ground status. In these case speed may be used as trigger which is a less accurate indicator. 

If you don't have access to the raw messages, you have to find an other way to do it. 

Typically ADS-B feeds for air traffic control consist of ASTERIX 021 reports. If you have an ASTERIX category 021 data stream, the air/ground status of the aircraft is included in Item I021/040, first extend, bit 7 - Ground Bit Setting (GBS).

If you have a stream with only latitude, longitude and altitude, then I would try to use the altitude field. On the surface there is no altitude transmitted (it is not in message type 5-8, the bits are used for surface movement), so if the altitude is no longer there, you can expect the aircraft to be on the ground. However, this depends of course on the implementation of the ADS-B decoder; it may just give stale altitude data instead of blanking the altitude on the ground. 

If you don't have good detection near the landing zone, you can try to extrapolate the altitude graph from the final approach section and based on that estimate when / where the landing would be. You may want to adjust for the flare if you need to.



1I am assuming 1090ES ADS-B here which is the defacto global standard; UAT and VDLm4 technology varieties of ADS-B also contain air/ground status but in a different manner.