bissl-at Dishes API

The Dishes API from bissl-at — 1 operation(s) for dishes.

Operations 1

GET /v1/dishes Find a dish or drink on the menus of places in Austria #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bissl-at:bissl-at-dishes-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bissl-at-dishes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Dishes, prices and lunch menus of restaurants, cafés and bars in Austria, read from each place''s own website. Free to use, but not to pass on, all or in large part, as your own collection of places'' menus and prices (a site, app or dataset); systematic or large-scale fetching, commercial market analysis, historical data and training AI models need a licence; text and data mining is reserved (§ 42h of the Austrian Copyright Act); photos and reviews are not included. Name bissl as the source and link to the place''s bissl page (`url`) wherever you show its data. Terms: https://bissl.at/en/api'
  title: bissl Dishes API
  version: '1'
servers:
- url: https://api.bissl.at
tags:
- name: Dishes
paths:
  /v1/dishes:
    get:
      description: 'The dish search of bissl''s front page: places, each with its best matching dishes and their prices, as read from the places'' own menus.'
      operationId: searchDishes
      parameters:
      - description: 'Keep to a map area: "west,south,east,north" in degrees - a town, a district, the streets around a place. Everywhere when left out.'
        in: query
        name: bbox
        schema:
          type: string
      - description: 'Only at places of this cuisine, as OpenStreetMap names it: "italian", "vietnamese".'
        in: query
        name: cuisine
        schema:
          type: string
      - description: 'Only dishes of this diet: vegan, or vegetarian (vegan dishes included).'
        in: query
        name: diet
        schema:
          anyOf:
          - description: A diet as a menu marks a dish, or the dish's name says it.
            oneOf:
            - enum:
              - vegan
              type: string
            - description: Vegetarian, vegan dishes included.
              enum:
              - vegetarian
              type: string
          - enum:
            - null
      - description: Food or drinks only.
        in: query
        name: dish_kind
        schema:
          enum:
          - food
          - drinks
          type: string
      - description: 'Only dishes whose menu lists their allergens and none of these letters: "A" gluten, "G" milk, "AG" both.'
        in: query
        name: free_of
        schema:
          type: string
      - description: 'The language of dish names, descriptions and section titles: de, the menus'' own, or en, as bissl translated them.'
        in: query
        name: lang
        schema:
          enum:
          - de
          - en
          type: string
      - description: The latitude of a point - the user's, or one they name - to measure distances from and sort nearest first; with `lon`.
        in: query
        name: lat
        schema:
          format: double
          type: number
      - description: 'Places to answer with: 1 to 30, 10 when left out.'
        in: query
        name: limit
        schema:
          format: int64
          type: integer
      - description: The longitude of that point; with `lat`.
        in: query
        name: lon
        schema:
          format: double
          type: number
      - description: Only dishes costing at most this much, in whole euros.
        in: query
        name: max_price
        schema:
          format: int64
          type: integer
      - description: Only dishes costing at least this much, in whole euros.
        in: query
        name: min_price
        schema:
          format: int64
          type: integer
      - description: 'Places to skip, for the next ones: 0 when left out.'
        in: query
        name: offset
        schema:
          format: int64
          type: integer
      - description: Only places open right now.
        in: query
        name: open_now
        schema:
          type: boolean
      - description: 'Words a dish must match, as people say them, German or English: "schnitzel", "vegan curry", "glutenfreie pizza". A diet, allergens or a cuisine among them are taken as filters; misspelt German words are put right when that finds something.'
        in: query
        name: q
        schema:
          type: string
      - description: The order of the places.
        in: query
        name: sort
        schema:
          anyOf:
          - oneOf:
            - description: 'The best matches at the most useful places: with prices, open now, near the middle.'
              enum:
              - recommended
              type: string
            - description: Best match first, then cheapest.
              enum:
              - match
              type: string
            - description: Cheapest first.
              enum:
              - price
              type: string
            - description: 'Best match first, then nearest to `lat`, `lon` - the order whenever they are given,

                unless `price`.'
              enum:
              - distance
              type: string
          - enum:
            - null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DishesAnswer'
          description: The answer
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                - error
                type: object
          description: A parameter the API can't read, and why
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                required:
                - error
                type: object
          description: No such place
        '429':
          description: 'Too many requests from this address: wait for Retry-After'
      summary: Find a dish or drink on the menus of places in Austria
      tags:
      - Dishes
components:
  schemas:
    ApiDiet:
      description: A diet as a menu marks a dish, or the dish's name says it.
      oneOf:
      - enum:
        - vegan
        type: string
      - description: Vegetarian, vegan dishes included.
        enum:
        - vegetarian
        type: string
    DishesAnswer:
      properties:
        attribution:
          type: string
        corrected:
          description: 'The words put right when they found nothing as typed: "schnitzel" for "schnitzl".'
          type:
          - string
          - 'null'
        cuisine:
          type:
          - string
          - 'null'
        diet:
          anyOf:
          - $ref: '#/components/schemas/ApiDiet'
          - enum:
            - null
          description: The filters in effect, asked for or taken from the words.
        free_of:
          type:
          - string
          - 'null'
        note:
          description: Why there is nothing, or less than asked for, when there is a reason to say.
          type:
          - string
          - 'null'
        places:
          description: Each with its best matches, at most 5.
          items:
            $ref: '#/components/schemas/PlaceDishes'
          type: array
        recommended:
          description: Nothing was asked for, so these are dishes popular at this time of day.
          type: boolean
        searched:
          description: 'The words searched for, once a diet, allergens or a cuisine among them were taken as

            filters ("vegan curry" searches "curry" with diet vegan); null for none.'
          type:
          - string
          - 'null'
        total_dishes:
          format: int64
          type: integer
        total_places:
          description: 'Places and dishes found, of which `places` holds `limit` from `offset` on. A search

            reads at most 500 places - the nearest `lat`, `lon`, else the middle of `bbox`, else

            the most complete listings - and counts the dish where those have it; when fewer than

            30 do, it reads the 500 nearest (or most complete) that have it instead. So these

            are at most 500, `sort=price` is the cheapest of them, and paging ends there.'
          format: int64
          type: integer
      required:
      - searched
      - corrected
      - diet
      - free_of
      - cuisine
      - recommended
      - total_places
      - total_dishes
      - places
      - note
      - attribution
      type: object
    Place:
      description: A place to eat or drink, the same in every answer.
      properties:
        address:
          description: Street, house number, postcode and town; null when bissl has none.
          type:
          - string
          - 'null'
        area:
          description: 'Its district or town, to say where it is: "7. Neubau", "Mödling"; null outside every

            town bissl knows. No filter takes it.'
          type:
          - string
          - 'null'
        cuisines:
          description: 'Its cuisines as OpenStreetMap names them: austrian, italian, pizza, vietnamese...'
          items:
            type: string
          type: array
        distance_m:
          description: Metres from the point asked about (`lat`, `lon`), when one was given.
          format: int64
          type:
          - integer
          - 'null'
        kind:
          description: 'Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub,

            biergarten, ice_cream, food_court, bakery or pastry.'
          type: string
        lat:
          format: double
          type: number
        lon:
          format: double
          type: number
        name:
          type: string
        open_now:
          description: Open right now by its opening hours (Vienna's time); null when bissl can't read them.
          type:
          - boolean
          - 'null'
        part_of:
          description: 'The larger place it is part of, as its own website names it - the hotel, castle or

            club its restaurant or bar is in: "Das Schloss an der Eisenstrasse". Null for none.'
          type:
          - string
          - 'null'
        price_level:
          description: '"€" to "€€€€" from its menu''s prices, against places of its kind - a restaurant''s

            mains, a café''s coffee and cake, a bar''s cocktails; null while bissl doesn''t know.'
          type:
          - string
          - 'null'
        slug:
          description: 'bissl''s name for the place: what `/v1/venues/{slug}` and `get_venue` take.'
          type: string
        url:
          description: 'Its page on bissl, with every menu: link to it.'
          type: string
      required:
      - slug
      - name
      - part_of
      - kind
      - cuisines
      - address
      - area
      - lat
      - lon
      - open_now
      - distance_m
      - price_level
      - url
      type: object
    Dish:
      description: A dish or drink on a menu, the same in every answer.
      properties:
        allergens:
          description: 'The allergen letters its menu lists, by the Austrian codes (A gluten, B

            crustaceans, C egg, D fish, E peanuts, F soy, G milk, H nuts, L celery, M mustard,

            N sesame, O sulphites, P lupin, R molluscs); null when the menu lists none for it,

            which is no promise it has none.'
          type:
          - string
          - 'null'
        checked_on:
          description: The day its menu was last read from the venue's website.
          format: date
          type:
          - string
          - 'null'
        description:
          type: string
        diet:
          anyOf:
          - $ref: '#/components/schemas/ApiDiet'
          - enum:
            - null
          description: Vegan or vegetarian as the menu marks it or its name says; null when neither.
        id:
          description: bissl's id of the dish on its menu.
          format: int64
          type: integer
        name:
          type: string
        prices:
          description: One per size or variant; none when the menu gives no price.
          items:
            $ref: '#/components/schemas/Price'
          type: array
        served_on:
          description: The day a lunch dish is served on; null for what the place always serves.
          format: date
          type:
          - string
          - 'null'
        url:
          description: The venue's bissl page with this dish marked.
          type: string
      required:
      - id
      - name
      - description
      - prices
      - diet
      - allergens
      - served_on
      - checked_on
      - url
      type: object
    PlaceDishes:
      description: 'A place and its dishes in an answer: the dishes a search found there, or its lunch.'
      properties:
        dishes:
          description: In the answer's order.
          items:
            $ref: '#/components/schemas/Dish'
          type: array
        more_dishes:
          description: More of them there, on its page.
          format: int64
          type: integer
        place:
          $ref: '#/components/schemas/Place'
        served:
          description: 'When its lunch is served, as its menu says: "11:00–14:30". Lunch only; null otherwise.'
          type:
          - string
          - 'null'
      required:
      - place
      - served
      - dishes
      - more_dishes
      type: object
    Price:
      description: 'A price of a dish: one per size or variant.'
      properties:
        note:
          description: 'What it is for, when the menu says: a size or a variant ("0,5 l", "klein").'
          type: string
        price:
          description: 'As the venue page writes it: "12,90 €".'
          type:
          - string
          - 'null'
        price_cents:
          description: In euro cents; null when the menu names a size without a price.
          format: int64
          type:
          - integer
          - 'null'
      required:
      - price_cents
      - price
      - note
      type: object