{"id":28503607,"url":"https://github.com/cheeaun/arrivelah","last_synced_at":"2025-08-17T08:05:41.539Z","repository":{"id":31287295,"uuid":"34849304","full_name":"cheeaun/arrivelah","owner":"cheeaun","description":"Fast simple API for bus arrival times in Singapore.","archived":false,"fork":false,"pushed_at":"2025-03-07T12:07:47.000Z","size":265,"stargazers_count":98,"open_issues_count":2,"forks_count":13,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-07-05T14:40:59.038Z","etag":null,"topics":["bus","bus-arrival-times","javascript","lta","singapore"],"latest_commit_sha":null,"homepage":"https://arrivelah2.busrouter.sg/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cheeaun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"cheeaun","buy_me_a_coffee":"cheeaun","patreon":"cheeaun","custom":["https://revolut.me/cheeaun","https://donate.stripe.com/9AQeVfbr40ZB9nGaEF","https://paypal.me/cheeaun"]}},"created_at":"2015-04-30T10:43:08.000Z","updated_at":"2025-06-23T09:09:45.000Z","dependencies_parsed_at":"2025-03-07T13:20:43.747Z","dependency_job_id":"a15ba79f-8460-44d1-b4d0-a2389a5d8db9","html_url":"https://github.com/cheeaun/arrivelah","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cheeaun/arrivelah","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheeaun%2Farrivelah","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheeaun%2Farrivelah/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheeaun%2Farrivelah/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheeaun%2Farrivelah/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cheeaun","download_url":"https://codeload.github.com/cheeaun/arrivelah/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cheeaun%2Farrivelah/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270820793,"owners_count":24651534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-17T02:00:09.016Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bus","bus-arrival-times","javascript","lta","singapore"],"created_at":"2025-06-08T17:30:43.164Z","updated_at":"2025-08-17T08:05:41.530Z","avatar_url":"https://github.com/cheeaun.png","language":"JavaScript","funding_links":["https://github.com/sponsors/cheeaun","https://buymeacoffee.com/cheeaun","https://patreon.com/cheeaun","https://revolut.me/cheeaun","https://donate.stripe.com/9AQeVfbr40ZB9nGaEF","https://paypal.me/cheeaun"],"categories":[],"sub_categories":[],"readme":"ArriveLah\n===\n\nFast simple API for bus arrival times in Singapore.\n\nThis is like a proxy to [LTA's DataMall Bus Arrival API](http://www.mytransport.sg/content/mytransport/home/dataMall.html).\n\nAPI\n---\n\n### Request\n\n```\nGET /?id=66271\n```\n\n- `id` - (required) Bus stop ID/code\n\n### Response\n\n```json\n{\n  \"services\": [\n    {\n      \"no\": \"136\",\n      \"operator\": \"GAS\",\n      \"next\": {\n        \"time\": \"2022-06-18T21:19:43+08:00\",\n        \"duration_ms\": 395837,\n        \"lat\": 1.3527008333333335,\n        \"lng\": 103.8770235,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"65009\",\n        \"destination_code\": \"54009\"\n      },\n      \"subsequent\": {\n        \"time\": \"2022-06-18T21:33:22+08:00\",\n        \"duration_ms\": 1214837,\n        \"lat\": 1.3723343333333333,\n        \"lng\": 103.898075,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"65009\",\n        \"destination_code\": \"54009\"\n      },\n      \"next2\": {\n        \"time\": \"2022-06-18T21:33:22+08:00\",\n        \"duration_ms\": 1214837,\n        \"lat\": 1.3723343333333333,\n        \"lng\": 103.898075,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"65009\",\n        \"destination_code\": \"54009\"\n      },\n      \"next3\": {\n        \"time\": \"2022-06-18T21:51:23+08:00\",\n        \"duration_ms\": 2295837,\n        \"lat\": 1.3994908333333334,\n        \"lng\": 103.90791783333333,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"65009\",\n        \"destination_code\": \"54009\"\n      }\n    },\n    {\n      \"no\": \"136\",\n      \"operator\": \"GAS\",\n      \"next\": {\n        \"time\": \"2022-06-18T21:30:41+08:00\",\n        \"duration_ms\": 1053837,\n        \"lat\": 0,\n        \"lng\": 0,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"65009\"\n      },\n      \"subsequent\": {\n        \"time\": \"2022-06-18T21:49:41+08:00\",\n        \"duration_ms\": 2193837,\n        \"lat\": 0,\n        \"lng\": 0,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"65009\"\n      },\n      \"next2\": {\n        \"time\": \"2022-06-18T21:49:41+08:00\",\n        \"duration_ms\": 2193837,\n        \"lat\": 0,\n        \"lng\": 0,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"65009\"\n      },\n      \"next3\": null\n    },\n    {\n      \"no\": \"315\",\n      \"operator\": \"SBST\",\n      \"next\": {\n        \"time\": \"2022-06-18T21:13:30+08:00\",\n        \"duration_ms\": 22837,\n        \"lat\": 1.3632465,\n        \"lng\": 103.871274,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"subsequent\": {\n        \"time\": \"2022-06-18T21:22:15+08:00\",\n        \"duration_ms\": 547837,\n        \"lat\": 0,\n        \"lng\": 0,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"next2\": {\n        \"time\": \"2022-06-18T21:22:15+08:00\",\n        \"duration_ms\": 547837,\n        \"lat\": 0,\n        \"lng\": 0,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"next3\": {\n        \"time\": \"2022-06-18T21:23:32+08:00\",\n        \"duration_ms\": 624837,\n        \"lat\": 1.3752478333333333,\n        \"lng\": 103.869852,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      }\n    },\n    {\n      \"no\": \"317\",\n      \"operator\": \"SBST\",\n      \"next\": {\n        \"time\": \"2022-06-18T21:20:49+08:00\",\n        \"duration_ms\": 461837,\n        \"lat\": 1.3628948333333333,\n        \"lng\": 103.86563566666666,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"subsequent\": {\n        \"time\": \"2022-06-18T21:21:31+08:00\",\n        \"duration_ms\": 503837,\n        \"lat\": 1.3497606666666666,\n        \"lng\": 103.8737135,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"next2\": {\n        \"time\": \"2022-06-18T21:21:31+08:00\",\n        \"duration_ms\": 503837,\n        \"lat\": 1.3497606666666666,\n        \"lng\": 103.8737135,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      },\n      \"next3\": {\n        \"time\": \"2022-06-18T21:32:39+08:00\",\n        \"duration_ms\": 1171837,\n        \"lat\": 1.3497606666666666,\n        \"lng\": 103.8737135,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"66009\",\n        \"destination_code\": \"66009\"\n      }\n    },\n    {\n      \"no\": \"73\",\n      \"operator\": \"SBST\",\n      \"next\": {\n        \"time\": \"2022-06-18T21:13:41+08:00\",\n        \"duration_ms\": 33837,\n        \"lat\": 1.3632655,\n        \"lng\": 103.871455,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"54009\"\n      },\n      \"subsequent\": {\n        \"time\": \"2022-06-18T21:20:45+08:00\",\n        \"duration_ms\": 457837,\n        \"lat\": 1.3435921666666666,\n        \"lng\": 103.85476483333333,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"54009\"\n      },\n      \"next2\": {\n        \"time\": \"2022-06-18T21:20:45+08:00\",\n        \"duration_ms\": 457837,\n        \"lat\": 1.3435921666666666,\n        \"lng\": 103.85476483333333,\n        \"load\": \"SEA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 2,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"54009\"\n      },\n      \"next3\": {\n        \"time\": \"2022-06-18T21:26:49+08:00\",\n        \"duration_ms\": 821837,\n        \"lat\": 1.3712010000000001,\n        \"lng\": 103.86542066666667,\n        \"load\": \"SDA\",\n        \"feature\": \"WAB\",\n        \"type\": \"SD\",\n        \"visit_number\": 1,\n        \"origin_code\": \"54009\",\n        \"destination_code\": \"54009\"\n      }\n    }\n  ]\n}\n```\n\nThe responses are cached for **15 seconds**.\n\nAcronyms\n---\n\n- `operator`:\n  - `SBST` - SBS Transit\n  - `SMRT` - SMRT Corporation\n  - `TTS` - Tower Transit Singapore\n  - `GAS` - Go Ahead Singapore\n- `load`:\n  - `SEA` - Seats Available\n  - `SDA` - Standing Available\n  - `LSD` - Limited Standing\n- `feature`:\n  - `WAB` - Wheelchair Accessible Bus\n- `type`:\n  - `SD` - Single Deck\n  - `DD` - Double Deck\n  - `BD` - Bendy\n\nDevelopment\n---\n\n1. Add configuration. Follow documentation from [mytransport.sg DataMall](http://www.mytransport.sg/content/mytransport/home/dataMall.html). Two options (choose one):\n    1. Copy and rename `.env.example` to `.env`. Edit the file.\n    2. Add environment variables.\n2. Install [Vercel CLI](https://vercel.com/docs/cli).\n3. `npm install`\n4. `npm start`\n\nLicense\n---\n\n[MIT](http://cheeaun.mit-license.org/). Data is copyrighted by [LTA](http://www.mytransport.sg/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheeaun%2Farrivelah","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcheeaun%2Farrivelah","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcheeaun%2Farrivelah/lists"}