Clustering method for 2-D data that self-detects number of clusters and takes care of outliers
DBSCAN is the algorithm of choice for this task.
This a density based algorithm which will look for clusters according to two main parameters, epsilon and min samples.
It will also identify those samples that do not form any cluster according to prior parameters as outliers.
From Scikit-learn documentation:

The DBSCAN algorithm views clusters as areas of high density separated by areas of low density. The central component to the DBSCAN is the concept of core samples, which are samples that are in areas of high density. A cluster is therefore a set of core samples, each close to each other (measured by some distance measure) and a set of non-core samples that are close to a core sample (but are not themselves core samples). There are two parameters to the algorithm, min_samples and eps, which define formally what we mean when we say dense. Higher min_samples or lower eps indicate higher density necessary to form a cluster.


Additional material worth to be checked:
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/