Station names are disambiguated by the line they connect to. If the station is on more than one line, we say their line is "Multiline"; this is sufficient for unique names.
The data is available as JSON. In Python,
>>> import json, requests >>> url = 'modalduality.org/static/nyc-station-names.json' >>> station_names = json.loads(requests.get(url).text) >>> # Must use str.rsplit because some station names have slashes in their name, but no line names do. >>> stations = [station_name.rsplit('/') for station_name in station_names] >>> print(stations) ['Third Avenue-138th Street', 'Pelham Line']