Geocoding is the process of identifying spatially referenced information (coordinates) for locations (usually a list of addresses or place names). This is one of the most common geospatial services and there are a number of tools available to you. To work, these tools require an extant database of locations. These are known as gazetteers. For a partial list of free gazetteers see the GIS and Spatial Data Research Guide. However, many of the most powerful and widely used gazetteers (such as those built by ESRI or Google) are proprietary and not available for unlimited free use.
ESRI: ArcGIS Pro comes with a suite of powerful geocoding tools (see the geocoding toolbox). These tools will allow you to make an address locator form source data.
QGIS: In general, the geocoding tools in QGIS are not been as powerful and flexible as the ESRI alternatives. However, there are a couple of plugins available that may be useful:
R: There are R packages that enable geocoding services. These include:
Python: In addition to ArcPy which can access the geocoding tools in ArcGIS, Geopy is a geocoding client for several popular geocoding web services including Nominatim and Google.
Free as in speech: These are free services built on open source or otherwise public gazetteers. Several of these are built on data from OpenStreetMap. OSM also maintains their own wiki page of geocoding search engines.
Free as in beer: There are a number of other services that will geocode a limited number of places/addresses for free, but charge for larger requests. We will try to list the limit of free requests (2,500 at a time is currently a common limit), but note that these may change at any time. In some cases these services are built from public gazetteers; more often the source data is proprietary (or unclear). Be mindful of any applicable usage restrictions when using these services.