Right now we return raw-ish data (JSON / dict, GeoJSON, CSV) which is fine but puts the burden of parsing it into OSM features on the user. Since extracting OSM features is the first thing anyone would probably want to do, it would seem to make sense to implement basic OSM types (Node, Way, Relation) and offer the option to return collections of those instead.
We could borrow from https://github.com/osmlab/osmdiff/blob/master/src/osmdiff/osm/osm.py
(As a bonus, these already implement __geo_interface__, see #147)