# vbb-stations

> A list of VBB stations.

Latest version **9.4.0** (published 2026-09-10) · ISC license · 0 weekly downloads

## Install

```sh
npm install vbb-stations
pnpm add vbb-stations
yarn add vbb-stations
bun add vbb-stations
```

## Health

**Score 65/100 (B)** — status: active.

Positive: esm support; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 9.4.0 |
| Published | 2026-09-10 |
| First published | 2016-04-03 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=26 |
| Dependencies | 1 |
| Unpacked size | 8.9 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 11 |
| Author | Jannis R |
| Maintainers | derhuerst |
| Keywords | vbb, berlin, brandenburg, public transport, stations, open data, json, ndjson, gtfs |

## Links

- npm: https://www.npmjs.com/package/vbb-stations
- Repository: https://github.com/derhuerst/vbb-stations
- Issues: https://github.com/derhuerst/vbb-stations/issues
- npm.io page: https://npm.io/package/vbb-stations

## Dependencies (1)

- [lodash](https://npm.io/package/lodash.md) ^4.18.1

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 9.4.0 (latest) — 2026-09-10
- 9.3.0 — 2026-08-10
- 9.2.0 — 2026-07-10
- 9.1.0 — 2026-06-10
- 9.0.0 — 2026-05-11
- 8.32.0 — 2026-05-11
- 8.31.0 — 2026-05-11
- 8.30.0 — 2026-03-10
- 8.29.0 — 2026-02-10
- 8.28.0 — 2025-12-10
- 8.27.0 — 2025-11-10
- 8.26.0 — 2025-10-10
- 8.25.0 — 2025-09-10
- 8.24.0 — 2025-08-10
- 8.23.0 — 2025-07-10
- … 69 more at https://npm.io/package/vbb-stations/versions

## README

# vbb-stations 🚏

A **collection of all stations of the [Berlin Brandenburg public transport service (VBB)](http://www.vbb.de/)**, computed from [open](https://daten.berlin.de/datensaetze/vbb-fahrplandaten-gtfs) [GTFS](https://gtfs.org/documentation/schedule/reference/) [data](https://vbb-gtfs.jannisr.de/).

[![npm version](https://img.shields.io/npm/v/vbb-stations.svg)](https://www.npmjs.com/package/vbb-stations)
![ISC-licensed](https://img.shields.io/github/license/derhuerst/vbb-stations.svg)
[![support me via GitHub Sponsors](https://img.shields.io/badge/support%20me-donate-fa7664.svg)](https://github.com/sponsors/derhuerst)
[![chat with me via Matrix](https://img.shields.io/badge/chat%20with%20me-via%20Matrix-000000.svg)](https://matrix.to/#/@derhuerst:matrix.org)


## Installing

```shell
npm install vbb-stations
```


## Usage

The [npm package](https://npmjs.com/vbb-stations) contains [*Friendly Public Transport Format* 1.2.1](https://github.com/public-transport/friendly-public-transport-format/blob/1.2.1/spec/readme.md) `station`s and `stop`s. `weight` is the sum of all arrivals & departures at a station, weighted by mode of transport.

```js
[
	{
		type: 'station',
		id: 'de:11000:900009101',
		name: 'U Amrumer Str.',
		location: {
			type: 'location',
			latitude: 52.542202,
			longitude: 13.349534
		},
		weight: 2474,
	}
]
```

You can filter all stations by `id` or any property ([lodash's `get`](https://lodash.com/docs/#get) will be used).

```js
import {stations} from 'vbb-stations'

console.log(stations('de:11000:900009101')) // query a single station
console.log(stations({ // filter by property
	weight: 2474,
	'location.latitude': 52.542202
}))
```

`full.json` contains all stops of each station and unshortened names.

```js
import fullStations from 'vbb-stations/full.json' with {type: 'json'}

console.log(fullStations['de:11000:900009101'])
```

One entry looks like this:

```js
{
	type: 'station',
	id: 'de:11000:900009101',
	name: 'U Amrumer Str. (Berlin)',
	location: {
		type: 'location',
		latitude: 52.542202,
		longitude: 13.349534
	},
	weight: 2474,
	stops: [
		{
			type: 'stop',
			id: 'de:11000:900009101::1',
			name: 'U Amrumer Str. (Berlin)',
			station: 'de:11000:900009101',
			location: {
				type: 'location',
				latitude: 52.542202,
				longitude: 13.349534
			}
		},
		// …
		{
			type: 'stop',
			id: 'de:11000:900009101::2',
			name: 'U Amrumer Str. (Berlin)',
			station: 'de:11000:900009101',
			location: {
				type: 'location',
				latitude: 52.542202,
				longitude: 13.349534
			}
		}
	]
}
```

`names.json` contains only shortened names.

```js
import stationNames from 'vbb-stations/names.json' with {type: 'json'}

stationNames['de:11000:900009101'] // U Amrumer Str.
```


## API

`stations([pattern])`

`pattern` can be one of the following:

- a station ID, like `de:11000:900009101`
- `'all'`
- an object like `{weight: 42, name: 'Alt Pinnow'}`, with each property being mandatory


## Contributing

If you **have a question**, **found a bug** or want to **propose a feature**, have a look at [the issues page](https://github.com/derhuerst/vbb-stations/issues).

---
_Source: https://npm.io/package/vbb-stations · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
