{"id":382,"name":"osm2gtfs","description":"Turn OpenStreetMap data and schedule information into GTFS.","url":"https://github.com/grote/osm2gtfs","last_synced_at":"2026-04-07T14:30:17.076Z","repository":{"id":118798435,"uuid":"63102305","full_name":"grote/osm2gtfs","owner":"grote","description":"Turn OpenStreetMap data and schedule information into GTFS","archived":false,"fork":false,"pushed_at":"2024-04-04T16:07:07.000Z","size":40697,"stargazers_count":101,"open_issues_count":32,"forks_count":31,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-03-29T10:49:56.776Z","etag":null,"topics":["gtfs","openstreetmap","public-transportation","python","schedule"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grote.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2016-07-11T21:07:57.000Z","updated_at":"2026-03-01T10:31:23.000Z","dependencies_parsed_at":"2024-04-09T16:13:47.650Z","dependency_job_id":null,"html_url":"https://github.com/grote/osm2gtfs","commit_stats":{"total_commits":111,"total_committers":10,"mean_commits":11.1,"dds":0.6396396396396397,"last_synced_commit":"b86ae4cb1903e6cdc6b735f5e5a37f63ec40b94e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/grote/osm2gtfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grote","download_url":"https://codeload.github.com/grote/osm2gtfs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31475202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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"}},"owner":{"login":"grote","name":"Torsten Grote","uuid":"244947","kind":"user","description":"Free Software developer and activist interested in topics of technology-enabled social and political change.","email":"","website":"https:// blog.grobox.de","location":"Brazil","twitter":"t_grote","company":null,"icon_url":"https://avatars.githubusercontent.com/u/244947?u=96eaaad9680de3a23bb9684bc5c4c9b54ffdfeec\u0026v=4","repositories_count":51,"last_synced_at":"2025-10-24T01:35:43.920Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/grote","funding_links":["https://github.com/sponsors/grote"],"total_stars":1360,"followers":331,"following":1,"created_at":"2022-11-02T20:41:52.956Z","updated_at":"2025-10-24T01:35:43.920Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grote","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grote/repositories"},"packages":[],"commits":{"id":1254123,"full_name":"grote/osm2gtfs","default_branch":"master","total_commits":111,"total_committers":10,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":11.1,"dds":0.6396396396396397,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-02T12:02:57.083Z","last_synced_commit":"b86ae4cb1903e6cdc6b735f5e5a37f63ec40b94e","created_at":"2023-03-27T10:58:38.057Z","updated_at":"2026-04-02T12:02:42.153Z","committers":[{"name":"Felix Delattre","email":"github@xama.nu","login":"xamanu","count":40},{"name":"Noémie","email":"noemie.lehuby@zaclys.net","login":"nlehuby","count":17},{"name":"Torsten Grote","email":"t@grobox.de","login":"grote","count":17},{"name":"jamescr","email":"jaime.cr@gmail.com","login":"jamescr","count":14},{"name":"Ialokim","email":"ialokim@t-online.de","login":"ialokim","count":10},{"name":"Pascal Rhod","email":"pascal.rhod@canaltp.fr","login":null,"count":5},{"name":"Nico Alt","email":"nicoalt@posteo.org","login":"AltNico","count":4},{"name":"Pascal Rhod","email":"pascal.rhod@zaclys.net","login":"prhod","count":2},{"name":"Nícolas Iensen","email":"nicolas.iensen@gmail.com","login":"nicolasiensen","count":1},{"name":"FranciscoGarcia","email":"fgarciadiaz29@gmail.com","login":"xirapo","count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:08.903Z","repositories_count":6211229,"commits_count":921932100,"contributors_count":35687158,"owners_count":1143388,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"grote/osm2gtfs","html_url":"https://github.com/grote/osm2gtfs","last_synced_at":"2025-09-01T03:33:23.736Z","status":"error","issues_count":80,"pull_requests_count":87,"avg_time_to_close_issue":10928039.74509804,"avg_time_to_close_pull_request":3768355.325301205,"issues_closed_count":51,"pull_requests_closed_count":83,"pull_request_authors_count":13,"issue_authors_count":18,"avg_comments_per_issue":6.225,"avg_comments_per_pull_request":3.7701149425287355,"merged_pull_requests_count":62,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-09T10:46:30.709Z","updated_at":"2025-09-01T08:44:23.246Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/grote%2Fosm2gtfs/issues","issue_labels_count":{"enhancement":56,"help wanted":45,"ready":8,"bug":8,"question":4,"High Priority":3,"duplicate":2,"wontfix":1,"needs info":1},"pull_request_labels_count":{"enhancement":16,"ready":14,"High Priority":3,"bug":3,"help wanted":1,"needs info":1},"issue_author_associations_count":{"CONTRIBUTOR":39,"COLLABORATOR":22,"NONE":14,"OWNER":5},"pull_request_author_associations_count":{"CONTRIBUTOR":52,"COLLABORATOR":27,"NONE":6,"OWNER":3},"issue_authors":{"xamanu":33,"AltNico":8,"jamescr":8,"grote":5,"ialokim":5,"nlehuby":4,"amenk":3,"prhod":2,"danpanetta":2,"jaullo":2,"mvanlaar":1,"marcosfede":1,"proma90":1,"Robot8A":1,"Skippern":1,"xirapo":1,"bouhormq":1,"GADD901":1},"pull_request_authors":{"xamanu":41,"jamescr":13,"ialokim":9,"nlehuby":8,"AltNico":3,"prhod":3,"grote":3,"amenk":2,"Laiiev":2,"xirapo":1,"nicolasiensen":1,"miguelgraz":1,"jcfausto":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-06T00:00:09.270Z","repositories_count":14106272,"issues_count":34454647,"pull_requests_count":112472246,"authors_count":11227558,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"jamescr","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jamescr"},{"login":"nlehuby","count":12,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/nlehuby"},{"login":"AltNico","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AltNico"},{"login":"grote","count":8,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/grote"},{"login":"prhod","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/prhod"}],"active_maintainers":[]},"events":{"total":{"ForkEvent":1,"WatchEvent":1,"IssueCommentEvent":3},"last_year":{"ForkEvent":1,"WatchEvent":1}},"keywords":["gtfs","openstreetmap","public-transportation","python","schedule"],"dependencies":[{"ecosystem":"pypi","filepath":"setup.py","sha":null,"kind":"manifest","created_at":"2023-04-17T06:04:15.627Z","updated_at":"2023-04-17T06:04:15.627Z","repository_link":"https://github.com/grote/osm2gtfs/blob/master/setup.py","dependencies":[{"id":9049213184,"package_name":"attrs","ecosystem":"pypi","requirements":"\u003e=17.1.0","direct":true,"kind":"runtime","optional":false},{"id":9049213185,"package_name":"overpy","ecosystem":"pypi","requirements":"\u003e=0.4","direct":true,"kind":"runtime","optional":false},{"id":9049213186,"package_name":"transitfeed","ecosystem":"pypi","requirements":"\u003e=1.2.16","direct":true,"kind":"runtime","optional":false},{"id":9049213187,"package_name":"mock","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":9049213188,"package_name":"webcolors","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false},{"id":9049213189,"package_name":"transporthours","ecosystem":"pypi","requirements":"*","direct":true,"kind":"runtime","optional":false}]}],"score":7.1929342212158,"created_at":"2023-09-11T11:54:34.464Z","updated_at":"2026-04-07T14:30:17.084Z","avatar_url":"https://github.com/grote.png","language":"Python","category":"Consumption","sub_category":"Mobility and Transportation","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"osm2gtfs\n========\n\n[![Build Status](https://travis-ci.org/grote/osm2gtfs.svg?branch=master)](https://travis-ci.org/grote/osm2gtfs)\n\nUse public transport data from [OpenStreetMap](http://www.openstreetmap.org/)\nand external schedule information\nto create a General Transit Feed ([GTFS](https://developers.google.com/transit/gtfs/)).\n\nThe official source code repository is at [github.com/grote/osm2gtfs](https://github.com/grote/osm2gtfs).\n\nHow does it work?\n-----------------\n\nThe script retrieves current data about public transport networks directly from\nOpenStreetMap via the Overpass API. It stores the data in python objects and\ncaches on disk for efficient re-use. Then the data is combined with another\nsource of schedule (time) information in order to create a GTFS file using the\ntransitfeed library.\n\nFor every new city a new [configuration file](https://github.com/grote/osm2gtfs/wiki/Configuration)\nneeds to be created. Additionally, schedule information should be provided. By-default the schedule information is expected to be provided in a  [certain format](https://github.com/grote/osm2gtfs/wiki/Schedule). However other formats are supported through extending the code. For any city and schedule format the script can be easily extended, see the\n[developer documentation](https://github.com/grote/osm2gtfs/wiki/Development)\nfor more information.\n\nIncluded cities\n-----------------\n\n* [Florianópolis, Brazil](./osm2gtfs/creators/br_florianopolis/config.json)\n* [Suburban trains in Costa Rica](./osm2gtfs/creators/cr_gam/config.json)\n* [Accra, Ghana](./osm2gtfs/creators/gh_accra/readme.md)\n* [Managua, Ciudad Sandino](./osm2gtfs/creators/ni_managua/config.json) and [Estelí](./osm2gtfs/creators/ni_esteli/config.json) in Nicaragua\n* [Abidjan, Ivory Coast](./osm2gtfs/creators/ci_abidjan/README.md)\n\n*Soon, also in your city*\n\nInstall\n------------\n\nInstall by running\n\n    pip install -e .\n\nRequirements\n------------\nAutomatically installed by the previous step:\n* https://github.com/DinoTools/python-overpy\n* https://github.com/google/transitfeed\n\nUse\n------------\n\n    osm2gtfs -c \u003cconfig-file\u003e\n\nExample:\n\n    osm2gtfs -c osm2gtfs/creators/br_florianopolis/config.json\n\nLicense\n-------\n\n![GNU GPLv3 Image](https://www.gnu.org/graphics/gplv3-127x51.png)\n\nThis program is Free Software: You can use, study share and improve it at your\nwill. Specifically you can redistribute and/or modify it under the terms of the\n[GNU General Public License](https://www.gnu.org/licenses/gpl.html) as\npublished by the Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["navitia","efa"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/382","html_url":"https://ost.ecosyste.ms/projects/382"}