Alive and Kicking
The German Bundestag API on Power Platform
Around the World in 99 Luftballons
Language is always more than just words, grammar, and syntax that you learn to hold a conversation. A true understanding comes from learning the culture, history, and politics behind it. That’s what determines how deeply someone integrates into a society outside of their birth country.
And if there’s one place where language, culture, and politics are inseparable, it’s Germany.
Germany has long been a bellwether for Europe. Whether through economic policy, parliamentary debates, or the shifting dynamics of the EU, something is always happening over there - sometimes subtly, sometimes in ways that reshape the entire continent. And sometimes, quite literally, in front of the Reichstag in 2020 and even on the front lawn.
As you may have read, plenty of focus rests on Germany’s parliamentary elections tomorrow on February 23rd, 2025. The Bundestag is the heart of German democracy - debating laws, shaping policy, and reflecting the will of the people. Just like in the United States and other countries, that work on, after and in-between election days is remarkably transparent.
Germany has embraced open data initiatives, making parliamentary records, legislative drafts, and committee proceedings publicly accessible through APIs. And, yes, “free” - not just as in “freedom,” but also as in “beer.”
The Bundestag API is a prime example, offering data on legislative activity, voting records, and debates. No paywalls, no bureaucracy, no long lines at the Bundesamt. Just structured access to the inner workings and activities of the government.
Regardless of how people vote, this data provides an unfiltered look at major decisions. You may find those decisions inspiring or infuriating, depending on your perspective. Yet the information is there, without fail.
What happens on election day matters, though it’s important to remember that it’s not the end of the world. Thanks to open data, we have a way of watching whatever happens - live, whether people are kicking, screaming or celebrating. It’s not perfect but it’s another day of life.
/**/
Caveats
Things to know before you go.
Background. I taught German, briefly, at a cultural school after studying it in college (in addition to Arabic). While I didn’t ultimately pursue that career path, I stuck with the language, as its regimentation has helped me manage how I absorb, interpret and manage information and tasks in almost all aspects of life. German isn’t necessarily difficult, but mastering its grammar and rich vocabulary takes time, practice, and indeed some patience. The language structure provides me with structure that I need to operate on an almost daily basis.
Scope. This article explores the Bundestag API custom connector on the Power Platform, and leverages its structured endpoints to return legislative activity, track parliamentary debates, and bring Open Government data into Power Automate.
Limits. Beware usage limits.
Language. The schema and results are all in German. English translation has been provided but the source is German. See the Translation section below.
Timing. The data is updated based on parliamentary activities, so some information may have delays before it makes it into the API.
Not bad, all good.
Prerequisites
“System requirements.”
API key required. An API key is required. Free as well, and you can register for one here.
Licensing. A Premium license is required to create a custom connector.
Not bad.
Translation
This section provides a translation of endpoint names, descriptions, summaries, fields and response schemas from German to American English. Some items are self-explanatory, but they have been included anyway.
There is some repetition in this small glossary. For those familiar with German grammar, these terms do not start with a capital letter; they are represented here as they are found in the schemas and output.
Endpoints
Vorgänge (Procedures)
vorgangId - Proceeding ID. Unique identifier for a specific proceeding.
titel - Title. The title of the proceeding.
initiative - Initiative. The initiator(s) of the proceeding, such as a political party or group.
aktualisiertSeit - Updated Since. Last updated date.
status - Status. The current status of the proceeding (e.g., pending, completed).
typ - Type. The type or category of the proceeding.
periode - Legislative Period. The legislative period during which the proceeding was introduced.
datumStart - Start Date. The start date of the proceeding.
datumEnde - End Date. The end date of the proceeding.
Vorgangspositionen (Procedure Positions)
vorgangId - Proceeding ID. Unique identifier for a specific proceeding.
position - Position. The position number within the proceeding.
typ - Type. The type or category of the position.
datum - Date. The date associated with the position.
ressort - Department. The government department responsible for the position, or “owners.”
fundstelle - Reference. The reference or source of the position.
fundstelleUrl - Reference URL. The URL linking to the reference source.
drucksache - Printed Matter. The printed document number associated with the position.
plenarprotokoll - Plenary Protocol. The protocol number of the plenary session where the position was discussed.
beschluss - Resolution. The decision or resolution made regarding the position.
Drucksachen (Documents)
drucksacheId - Printed Matter ID. Unique identifier for a specific printed matter.
vorgangId - Proceeding ID. Unique identifier for the related legislative proceeding.
titel - Title. The title of the printed matter.
typ - Type. The type or category of the printed matter.
nummer - Number. The document number assigned to the printed matter.
datum - Date. The date when the printed matter was published.
herausgeber - Publisher. The entity or person who published the printed matter.
fundstelle - Reference. The reference or source where the printed matter can be found.
fundstelleUrl - Reference URL. The URL linking to the reference source.
seite - Page. The page number in the document where the printed matter is located.
Plenarprotokolle (Plenary Protocols)
plenarprotokollId - Plenary Protocol ID. Unique identifier for a specific plenary protocol.
nummer - Number. The session number associated with the plenary protocol.
textId - Text ID. Unique identifier for a specific text associated with the plenary protocol.
typ - Type. The type or category of the text.
datum - Date. The date when the text was published.
titel - Title. The title of the text.
seite - Page. The page number in the document where the text is located.
Aktivitäten (Activities)
aktivitaetId - Activity ID. Unique identifier for a specific activity.
vorgangId - Proceeding ID. Unique identifier for the related legislative proceeding.
typ - Type. The type or category of the activity.
datum - Date. The date when the activity took place.
titel - Title. The title or subject of the activity.
ort - Location. The location where the activity occurred.
beteiligte - Participants. Individuals or entities involved in the activity.
drucksache - Printed Matter. The printed document number associated with the activity.
plenarprotokoll - Plenary Protocol. The protocol number of the plenary session where the activity was discussed.
fundstelle - Reference. The reference or source of the activity.
fundstelleUrl - Reference URL. The URL linking to the reference source.
seite - Page. The page number in the document where the activity is mentioned.
Personenstammdaten (Personal Data Records for Members)
nachname - Last Name
vorname - First Name
fraktion - Parliamentary Group. The parliamentary group or faction to which the person belongs.
funktion - Function. The role or position held by the person.
geburtsdatum - Date of Birth
geburtsort - Place of Birth
bundesland - Federal State. The federal state in Germany associated with the person.
wahlkreis - Electoral District. The electoral district represented by the person.
Additional translations are available and may be uploaded at a later date. These will make you functional.
Implementation
The Bundestag API works like any other API. Swagger and OpenAPI documents are available here.
This custom connector is also available on Microsoft’s GitHub repo via the Independent Publishers program.
Let’s go through the endpoint offerings.
Procedures (Vorgänge)
GET /vorgang - Returns a list of procedures and associated metadata.
GET /vorgang/{id} - Returns a specific procedure and associated metadata.
Procedure Positions (Vorgangspositionen)
GET /vorgangsposition - Returns a list procedure positions, sort of like a status for an activity, and associated metadata.
GET /vorgangsposition/{id} - Returns a specific procedure position and associated metadata.
Documents (Drucksachen)
GET /drucksache - Returns a list of documents and associated metadata.
GET /drucksache/{id} - Returns a specific document and associated metadata.
GET /drucksache-text - Returns a list of full texts and metadata for documents.
GET /drucksache-text/{id} - Returns full text and metadata for a specific document.
Plenary Protocols (Plenarprotokolle)
GET /plenarprotokoll - Returns a list plenary protocols and associated metadata.
GET /plenarprotokoll/{id} - Returns a specific plenary protocol and associated metadata.
GET /plenarprotokoll-text - Returns full texts and metadata for plenary protocols.
GET /plenarprotokoll-text/{id} - Returns full text and metadata for a specific plenary protocol.
Activities (Aktivitäten)
GET /aktivitaet - Returns a list of activities and associated metadata.
GET /aktivitaet/{id} - Returns a specific activity and associated metadata.
Personal Data Records (Personenstammdaten)
GET /person - Returns a list of personal data records and associated metadata on those individuals.
GET /person/{id} - Returns personal data records for a specific person.
Couldn’t have said it better ourselves. Guten Appetit.
/**/
References and Resources
“Victory” by marionrosengarten









