I was wondering if there was good DSO database API out there for python so I could fetch things like a distance away from Earth or radius etc. I tried looking however couldn't find the exact thing I was looking for.
Given you haven't specified which kind of DSOs you want or fully given the list of properties, it's difficult to recommend a specific source.
I would suggest searching for catalogues on VizieR, which allows you to search with keywords and/or various predefined categories. Bear in mind that you may need to use several different catalogues for the various types of DSOs (galaxies, globular clusters, supernova remnants, etc.) and not all of them will have all of the data you need. In particular, distances are not present in many catalogues. In the case of galaxies, you may need to convert from redshift or recession velocity depending on the source you're using. The VizieR results indicate sky coverage of the catalogue in the oval-shaped icons, which will give you some idea of which are all-sky catalogues and which are surveys of a small region of the sky.
Once you've found a catalogue on VizieR that contains the information, you can use astroquery to retrieve the data (details of the VizieR query interface), which imports the data in a form suitable for processing using astropy.