% %
# .*
/. &
# & /, *
,. & &
, *
.
*, &
_. .** & &
( %&
# &%
&
.% &
*#&&&
& %
& (
% & %
% & , /
, #( (. #
& #
& & */ &
& #, .& .#&%#
& &
. W E L C O M E ! *
.(
& _____ Let me guide you into the heart of my treasure map / .
/ unfolding across the unfathomable landscape .
& of German welfare tickets. &
& %
& #, &
, %
& #
. . ( .(/ %
% ________________ &
& | | /
& | Made with love | .
, | at TUHH | &
& |________________| &
% | &
& | (
,& O * # &
% & ( # / &.&
& # % & .%& & # ./
# & ( /
&% . * % &
& ( *. (& & .&
% % / .( % (
# .
/ &
#& .&%,.#*
This is an annex to the Welfare Ticket Atlas of 2025 that I produced on behalf of the German welfare organisation Paritätischer Wohlfahrtsverband. Please find the whole atlas here:
Sozialticket-Atlas für Deutschland -
Wo der Staat den Öffentlichen Nahverkehr für einkommensarme Menschen bezuschusst
DOI: 10.15480/882.13683
In German, including an English abstract
In this README I briefly introduce basic terms that are helpful to understand the subject of welfare tickets in Germany. Furthermore I summarise the structure of the two datasets.
You are welcome to re-use, adapt and share the data according to the Attribution-ShareAlike 4.0 International license.
Christoph Aberle
Hamburg University of Technology
Institute for Transport Planning and Logistics
ORCID: 0000-0003-0982-4869
christoph.aberle@tuhh.de
The TUHH email will be offline soon. If you use the dataset, or have a question, please drop me a line at christoph [at] fluegelrad [dot] net. I’m always curious to see what others get out of my data!
Term | Explanation | Link |
---|---|---|
State | One of 16 “Bundesländer” | Wikipedia |
District | One of 400 “Kreise”, “Stadtkreise”, “Landkreise” or “Kreisfreie Städte” = NUTS-3 Regions | Wikipedia |
Municipality | Town within a District (“Gemeinde”, “Stadt”, or “Kreisstadt”) | Wikipedia |
PT Authority | “Verkehrsverbund” that organises public transport in one or more districts, mainly in terms of planning and ticketing, e.g. HVV or VBB / including smaller cooperatives of transport companies | Wikipedia |
Welfare ticket | Ticket that is offered for welfare recipients (“Sozialticket”) | Wikipedia (DE) |
AGS / Amtlicher Gemeindeschlüssel | Official Municipality Key | Wikipedia |
I provide one geopackage file (sozt_atlas.gpkg
including Dataset 1 and 2) and two .csv
tables (Dataset 1 and 2, separately). The .gpkg
and .csv
contain the same data. If you want to import the data into your GIS quickly, use .gpkg
. The other tables are mainly here for redundancy (and can quickly be imported for non-spatial analyses, note that the Dataset 2 .csv
also contains geometries as WKT, which can be joined to Dataset 1 on the ags
column).
This dataset contains all welfare tickets that I found during an extensive internet search in Winter 2024/2025. For details on my search methodology, see section 8 of the atlas (in German).
The dataset contains one row per ticket, i.e. there’s duplicates for the states, districts and municipalities. These can be grouped via the ags
column.
Besides welfare tickets, the dataset contains many tickets for young people and for elderly. The welfare tickets are plausi-checked for false-negatives, the other ones are not. I.e., ‘out there’ may be tickets for young people and for the elderly that are not documented, especially in rows with search_iteration > 2
.
Note that the municipalities do not contain duplicates for tickets in the surrounding district. E.g., the town of Bensheim (ags
= 06431002) only contains the local monthly welfare ticket but does not list the Deutschlandticket that is discounted by “Hessenpass mobil”, which can be found in the row for the surrounding Bergstraße district (ags
= 06431).
Column | Data Type | Explanation | Link / Source |
---|---|---|---|
id | SERIAL | Serial ID, primary key | |
ags | VARCHAR | Official Municipality Key | Wikipedia |
exclude | VARCHAR | Reason why ticket was excluded from analysis (in German) / NULL = ticket was included |
|
search_iteration | INT | The order of search iterations (1 = targeted search across the documents on PT associations’ and operators’ webpages, 2 = Qwant search for social fares, 3 = RIS search for districts where 1 and 2 did not deliver data, 4 = casual hits while plausi-checking) |
|
gen | VARCHAR | Name of the municipality / district / state / PT association | Section 8 of the atlas |
bez | VARCHAR | Administrative unit | |
nuts3 | VARCHAR | NUTS3 code | Wikipedia |
note | VARCHAR | Note (in German) | |
name | VARCHAR | Name of the ticket | |
wft | INT | Welfare ticket (0 = no welfare ticket / 1 = welfare ticket for groups defined in the columns below / 2 = welfare ticket for refugees only (only two cases, not included in the analysis) |
|
wfp | BOOLEAN | Welfare pass (T = municipality offers a welfare pass that entitles the holder for certain discounts e.g. at the library / F = no welfare pass) |
|
wft_discussed | INT | Welfare ticket was discussed publicly (last documented year) | |
wft_rejected | INT | Welfare ticket was proposed to the local council and was rejected | |
validity | VARCHAR | Validity (e.g. area / fare zones; in German) | |
validity_int | INT | Validity (1 * = locally or within the district, 2 * = locally and at least one neighbouring district, 3 * = within the whole network of the PT association or PT operator, 4 = nationwide) *Note that the boundaries are blurry among the stages 1 -3 , especially across different fare types |
|
dticket | BOOLEAN | Ticket is a variation of “Deutschlandticket” | |
ft_subscription | BOOLEAN | Fare type = subscription | |
ft_month | BOOLEAN | Fare type = monthly pass | |
ft_week | BOOLEAN | Fare type = weekly pass | |
ft_cash | BOOLEAN | Fare type = cash (valid for max one day) | |
ft_ffpt | BOOLEAN | Fare type = fare-free PT for the entitled groups | |
eur_reg | NUMERIC | Regular price, EUR | |
eur | NUMERIC | Subsidised price, EUR | |
eur_subsidy | NUMERIC | Subsidy, EUR | |
subsidy_share | NUMERIC | Subsidy, share | |
rides | NUMERIC | Factor that estimates how many rides are taken on one ticket | Section 8.3 of the atlas |
eur_ride | NUMERIC | Price per ride, EUR (= eur / rides ) |
|
ent_sgb2 | BOOLEAN | Entitled group: welfare recipients according to Sozialgesetzbuch II (“Bürgergeld”) | |
ent_sgb8 | BOOLEAN | Entitled group: welfare recipients according to Sozialgesetzbuch VIII (“Kinder- und Jugendhilfe”) | |
ent_sgb12 | BOOLEAN | Entitled group: welfare recipients according to Sozialgesetzbuch XII (mostly “Grundsicherung im Alter”) | |
ent_bvg | BOOLEAN | Entitled group: welfare recipients according to Bundesversorgungsgesetz | |
ent_bkgg | BOOLEAN | Entitled group: extra child benefit recipients according to Bundeskindergeldgesetz (“Kinderzuschlag”, not the regular “Kindergeld”) | |
ent_wogg | BOOLEAN | Entitled group: housing benefit recipients according to Wohngeldgesetz | |
ent_asylblg | BOOLEAN | Entitled group: registered asylum seekers receiving benefits according to Asylbewerberleistungsgesetz | |
ent_others | VARCHAR | Entitled group: others / specification of the groups above (in German) | |
mainly_youth | BOOLEAN | Ticket is designed mainly for young people (the categories differ, but often it is pupils, students and/or persons younger than 27) - NB: This category differs from the ent_... categories insofar as it is exclusive to mainly_elderly . I.e. filtering returns tickets that are only designed for this target group and that can be filtered for other categories e.g. sozt (there is one exception: id = 325 in Ansbach represents a ticket that is valid for anyone living in the town, but it is excluded from the analysis by exclude IS NOT NULL ) |
|
mainly_elderly | BOOLEAN | Entitled group: elderly people (the categories differ, but often it is persons older than 60, 65 years or persons who are formally retired) | |
conditions | VARCHAR | Conditions of the ticket (in German) | |
proof | VARCHAR | Where and how the eligibility needs to be proven (in German) | |
other_tickets | VARCHAR | Other tickets within the same system for this target group | |
url1 | VARCHAR | Link to source | |
url2 | VARCHAR | Link to source | |
url3 | VARCHAR | Link to source | |
url4 | VARCHAR | Link to source | |
url5 | VARCHAR | Link to source |
This dataset contains geometries and ticket counts for the districts and municipalities mentioned in the first dataset. Each row is unique for one area i.e. there are no duplicates.
Note that all but one municipality include the ticket count for the higher-level district. E.g., the town of Bensheim (mentioned above) counts 2 welfare tickets, one of which traces back to the surrounding Bergstraße district.
In one case, however this rule does not apply: For Halberstadt, the ticket count disregards the count of Landkreis Harz, because they have separate welfare tickets (ags = 15085135
and ags = 15085
, respectively). Welcome to Germany, please have a seat and enjoy our Föderalismus.
Column | Data Type | Explanation | Link / Source |
---|---|---|---|
ags | VARCHAR | Official Municipality Key, primary key | Wikipedia |
gen | VARCHAR | Name of the municipality / district / state | Section 8 of the atlas |
bez | VARCHAR | Administrative unit | |
nuts3 | VARCHAR | NUTS3 code | Wikipedia |
pop_22 | INT | Population, as of 2022-31-12 | Federal Statistical Office of Germany |
pop_22_adj | INT | Population, as of 2022-31-12 / adjusted for municipalities within that district (their population was deducted) | see pop22 |
sgb2_22 | INT | Number of SGB II welfare recipients (“Regelleistungsberechtigte”) / average of the 2022 monthly dataset | © Federal Employment Agency, Product ID 1103 |
urbn_type | INT | Urban type according to EUROSTAT (1 = urban, 2 = intermediate, 3 = rural). As the Agora typology is available for districts, I used the BMDV RegioStar typology to assign the municipalities (Gem5 type: 51, 52 = 1 / 53, 54 = 2 / 55 = 3 ) |
© Agora Transport Transformation / RegioStaR Typology (DE) |
area_km2 | INT | Area in km² | Based on the BKG geometries (see geom ), helpful for rendering the smaller geometries on top |
ddep_bua | INT | Daily PT departures per km² built-up area („Siedlungs- und Verkehrsfläche“) | © Agora Transport Transformation |
ddep_bua_terc | INT | Tercile of ddep_bua |
|
wkt | GEOMETRY / WELL-KNOWN TEXT | MultiPolygon, CRS = EPSG 4326 | Federal Agency for Cartography and Geodesy, license: dl-de/by-2-0 |
If you use the dataset, or have a question, please drop me a line
at christoph [at] fluegelrad [dot] net.
Have fun with the data, enjoy your ride, and don’t forget to get off the bus!