Discover/Stw API
live

Stw APIstw.berlin

Fetch daily and weekly canteen menus from studierendenWERK BERLIN. Get dish names, student/employee/guest prices, dietary labels, and all Mensa locations.

Endpoint health
verified 12h ago
get_menu
list_canteens
2/2 passing latest checkself-healing
Endpoints
2
Updated
26d ago

What is the Stw API?

This API provides access to canteen menu data from studierendenWERK BERLIN across 2 endpoints. Use list_canteens to retrieve all Mensa, Backshop, and Späti locations with their URLs, then call get_menu to pull full weekly or single-day menus per canteen — including dish names, category groupings, three-tier pricing, and dietary labels.

Try it

No input parameters required.

api.parse.bot/scraper/d62db332-03b4-433e-962c-7796abc79384/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/d62db332-03b4-433e-962c-7796abc79384/list_canteens' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace stw-berlin-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: studierendenWERK BERLIN Canteen SDK — bounded, re-runnable."""
from parse_apis.studierendenwerk_berlin_canteen_api import StwBerlin, CanteenNotFound

client = StwBerlin()

# List all canteen locations — limit caps total items fetched.
for canteen in client.canteens.list(limit=5):
    print(canteen.name, canteen.url)

# Drill into a single canteen's weekly menu.
canteen = client.canteens.list(limit=1).first()
if canteen:
    menu = canteen.menu(week_offset=0)
    print(menu.canteen, menu.resources_id)

    # Walk through days and dishes.
    for day in menu.days[:2]:
        print(day.date)
        for dish in day.menu[:3]:
            print(dish.name, dish.category, dish.prices.student, dish.labels)

# Fetch menu for a specific date only.
if canteen:
    menu_day = canteen.menu(date="2026-06-12")
    for day in menu_day.days[:1]:
        print(day.date, len(day.menu), "dishes")

# Typed error handling.
try:
    bad = client.canteen(url="https://www.stw.berlin/mensen/einrichtungen/nonexistent.html")
    bad.menu()
except CanteenNotFound as exc:
    print(f"Canteen not found: {exc.canteen_url}")

print("exercised: canteens.list / canteen.menu (week) / canteen.menu (date) / CanteenNotFound")
All endpoints · 2 totalmissing one? ·

Retrieves all canteen locations (Mensen, Backshops, Spätis) operated by studierendenWERK BERLIN across Berlin universities. Each canteen includes its display name and canonical page URL. The URL serves as the stable identifier for fetching menus via get_menu. No pagination — all locations returned in a single response.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "canteens": "array of canteen objects, each with 'name' (string) and 'url' (string, full URL of the canteen page)"
  },
  "sample": {
    "data": {
      "canteens": [
        {
          "url": "https://www.stw.berlin/mensen/einrichtungen/freie-universit%C3%A4t-berlin/mensa-fu-ii.html",
          "name": "Mensa FU II"
        },
        {
          "url": "https://www.stw.berlin/mensen/einrichtungen/technische-universit%C3%A4t-berlin/mensa-tu-hardenbergstra%C3%9Fe.html",
          "name": "Mensa TU / UdK Hardenbergstraße"
        }
      ]
    },
    "status": "success"
  }
}

About the Stw API

Canteen Locations

The list_canteens endpoint returns an array of canteen objects, each containing a name (string) and a url (full URL to the canteen page on stw.berlin). This covers all studierendenWERK BERLIN locations, including Mensa dining halls, Backshop outlets, and Späti convenience spots at Berlin universities. The endpoint takes no parameters and is the expected first call to discover valid canteen_url values for use in menu requests.

Menu Data

The get_menu endpoint accepts three optional parameters: canteen_url (obtained from list_canteens), date (YYYY-MM-DD format for a single day), and week_offset (integer, 0 for current week, 1 for next week, etc.). By default it returns the full week from Monday to Saturday. The response includes a canteen string (location name), a resources_id (the internal canteen identifier), and a days array. Each element in days contains a date field and a menu array of dish objects.

Dish Details and Dietary Labels

Each dish object within the menu array includes: category (the serving counter or dish type grouping), name (full dish name in German as listed by the canteen), prices with separate values for students, employees, and guests, and labels for dietary and allergen classifications such as vegetarian, vegan, or pork indicators. The price structure reflects studierendenWERK BERLIN's standard three-tier pricing model.

Reliability & maintenanceVerified

The Stw API is a managed, monitored endpoint for stw.berlin — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when stw.berlin changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official stw.berlin API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
12h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a meal-planning app for Berlin university students that shows the weekly menu for their campus Mensa
  • Display today's canteen options on a university intranet or digital notice board using the date parameter
  • Filter dishes by dietary labels (e.g. vegan, vegetarian) to surface suitable options for specific dietary needs
  • Compare student vs. guest pricing across all canteen locations to help visitors estimate food costs
  • Aggregate next week's menus across multiple canteens using week_offset: 1 to plan group lunches
  • Index canteen dish names and categories for a searchable campus food database
  • Send automated daily lunch notifications to a Slack channel or Telegram bot with that day's menu
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does studierendenWERK BERLIN offer an official developer API?+
studierendenWERK BERLIN does not publish a documented public developer API. Menu data is available on their website at stw.berlin, but there is no official API endpoint or developer portal documented for third-party use.
What does the `get_menu` endpoint return for a specific day versus a full week?+
When you pass a date parameter (YYYY-MM-DD), the days array in the response contains only the entry for that date. Without a date, the endpoint returns all days from Monday through Saturday for the current or offset week. In both cases each day entry contains the same structure: a date string and a menu array of dishes with category, name, prices, and labels.
Are allergen details or full nutritional information (calories, macros) included in the response?+
Not currently. The API returns dietary labels (such as vegan or vegetarian indicators) alongside each dish, but does not expose detailed allergen codes or nutritional values like calories, protein, or fat content. You can fork this API on Parse and revise it to add an endpoint targeting canteen-specific nutritional detail pages.
Does the API cover canteens outside the studierendenWERK BERLIN network, such as canteens at private universities or other German cities?+
Coverage is limited to locations listed on stw.berlin, which covers studierendenWERK BERLIN-operated canteens across Berlin's public universities. Canteens operated by other student service organisations in other German cities are not included. You can fork this API on Parse and revise it to target additional Studentenwerk sites.
How current is the menu data, and how far in advance are menus available?+
Menu availability depends on how far ahead studierendenWERK BERLIN publishes menus on stw.berlin. Typically the current and next week are available. The week_offset parameter lets you request future weeks, but results will be empty if the canteen has not yet published that week's menu.
Page content last updated . Spec covers 2 endpoints from stw.berlin.
Related APIs in Food DiningSee all →
menupages.com API
Access restaurant menu data from MenuPages including all categories, items with descriptions and prices, plus customization options and modifiers. Search for specific menus or individual menu items to build restaurant catalogs, comparison tools, or delivery app integrations.
ubereats.com API
Search for restaurants by cuisine or location and browse their menus, prices, ratings, and delivery times. Get detailed information about specific restaurants and menu items to find exactly what you want to order.
inberlinwohnen.de API
Search and browse affordable apartment listings from Berlin's state-owned housing companies, view detailed property information, and access company profiles and tenant guides. Find your next home in Berlin with comprehensive data on available rentals and housing provider information in one place.
farmersfridge.com API
Access Farmer's Fridge menu data, product details, kiosk locations, and real-time inventory. Browse the full menu or filter by category, retrieve nutrition facts and allergens for individual products, list kiosk locations by access or location type, and check live stock counts at any specific fridge.
food.grab.com API
Search for GrabFood restaurants by location and retrieve complete menu listings with prices and details for any store. Access real-time restaurant information and full dining options using a guest token obtained from the browser.
metro.de API
Search and retrieve product information from Metro Germany's Online Marketplace and Wholesale Store, including detailed product data and refrigeration subcategories. Find exactly what you're looking for across both retail channels with comprehensive product listings and specifications.
wolt.com API
Browse and discover restaurants, stores, and food items available on the Wolt delivery platform, with access to detailed menus, venue information, and the ability to search across categories and cities. Filter venues by location, explore their complete offerings, and find specific items to compare options across the Wolt network.
chownow.com API
Search for nearby restaurants, view their operating hours and delivery zones, and browse complete menus with all items, modifiers, and prices. Access detailed restaurant information and locations to find exactly what you're looking for on the ChowNow marketplace.