bissl-at Venues API

The Venues API from bissl-at — 2 operation(s) for venues.

Operations 2

GET /v1/venues Places to eat and drink, filtered and sorted #
GET /v1/venues/{slug} A place, its opening hours and every menu bissl read #

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-venues-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-venues-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 Venues API
  version: '1'
servers:
- url: https://api.bissl.at
tags:
- name: Venues
paths:
  /v1/venues:
    get:
      operationId: listVenues
      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 places whose menu with prices bissl read.
        in: query
        name: has_menu
        schema:
          type: boolean
      - description: 'Its kind as OpenStreetMap tags it: restaurant, fast_food, cafe, bar, pub, biergarten, ice_cream, food_court, bakery or pastry.'
        in: query
        name: kind
        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 places serving a lunch menu today.
        in: query
        name: lunch_today
        schema:
          type: boolean
      - 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 to search for among the places: part of a name - "figlm" finds Figlmüller.'
        in: query
        name: q
        schema:
          type: string
      - description: The order of the places.
        in: query
        name: sort
        schema:
          anyOf:
          - oneOf:
            - enum:
              - name
              type: string
            - description: 'The most useful places first: with a menu, prices, photos, open now.'
              enum:
              - recommended
              type: string
            - description: The cheapest price level first.
              enum:
              - price
              type: string
            - description: Nearest to `lat`, `lon` first - the order whenever they are given, unless another.
              enum:
              - distance
              type: string
          - enum:
            - null
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VenuesAnswer'
          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: Places to eat and drink, filtered and sorted
      tags:
      - Venues
  /v1/venues/{slug}:
    get:
      operationId: getVenue
      parameters:
      - description: The place's slug, from a search's or a list's answer.
        in: path
        name: slug
        required: true
        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
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VenueAnswer'
          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: A place, its opening hours and every menu bissl read
      tags:
      - Venues
components:
  schemas:
    VenueAnswer:
      properties:
        attribution:
          type: string
        checked_on:
          description: 'The day its menus were last read from its website, or the day a visitor sent the

            photos they were read from.'
          format: date
          type:
          - string
          - 'null'
        email:
          description: 'Its email address, as its own website gives it: "info@figlmueller.at".'
          type:
          - string
          - 'null'
        menu_source:
          anyOf:
          - $ref: '#/components/schemas/MenuSource'
          - enum:
            - null
          description: 'Where its menus were read: "website", its own website, or "visitor_photo", photos of

            its printed menu a visitor sent and bissl checked. Null when it has no menu.'
        menus:
          description: 'Its regular food and drinks, and its lunch of this week; none when bissl has no

            menu of it.'
          items:
            $ref: '#/components/schemas/Menu'
          type: array
        opening_hours:
          description: 'Its opening hours in OpenStreetMap''s syntax: "Mo-Fr 11:00-22:00; Sa 12:00-22:00".'
          type:
          - string
          - 'null'
        phone:
          description: 'Its phone number, Austrian, as dialled from abroad without spaces: "+4315126177".'
          type:
          - string
          - 'null'
        place:
          $ref: '#/components/schemas/Place'
        website:
          description: Its own website.
          type:
          - string
          - 'null'
      required:
      - place
      - phone
      - email
      - website
      - opening_hours
      - checked_on
      - menu_source
      - menus
      - attribution
      type: object
    VenuesAnswer:
      properties:
        attribution:
          type: string
        cuisine:
          description: The cuisine kept to, when one was asked for.
          type:
          - string
          - 'null'
        note:
          description: Why there is nothing, when there is a reason to say.
          type:
          - string
          - 'null'
        places:
          items:
            $ref: '#/components/schemas/PlaceListing'
          type: array
        total_places:
          description: Places matching, of which `places` holds `limit` from `offset` on.
          format: int64
          type: integer
      required:
      - cuisine
      - total_places
      - places
      - note
      - attribution
      type: object
    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
    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
    Menu:
      properties:
        kind:
          $ref: '#/components/schemas/MenuKind'
        sections:
          items:
            $ref: '#/components/schemas/MenuSection'
          type: array
        served:
          description: 'When a lunch is served, as its page says: "Mo–Fr · 11:30–14:30". Lunch only.'
          type:
          - string
          - 'null'
        title:
          description: '"Speisen", "Getränke", "Mittagsmenü" - or in English.'
          type: string
        valid_from:
          description: The first and last day a lunch menu is for, when it says.
          format: date
          type:
          - string
          - 'null'
        valid_to:
          format: date
          type:
          - string
          - 'null'
      required:
      - kind
      - title
      - valid_from
      - valid_to
      - served
      - sections
      type: object
    MenuKind:
      enum:
      - food
      - drinks
      - lunch
      type: string
    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
    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
    MenuSource:
      description: Where a place's menus were read.
      oneOf:
      - description: Its own website.
        enum:
        - website
        type: string
      - description: Photos of its printed menu a visitor sent and bissl checked.
        enum:
        - visitor_photo
        type: string
    PlaceListing:
      description: A place in the list of places.
      properties:
        has_menu:
          description: bissl read a menu with prices from its website.
          type: boolean
        lunch_today:
          description: It serves a lunch menu today.
          type: boolean
        place:
          $ref: '#/components/schemas/Place'
      required:
      - place
      - has_menu
      - lunch_today
      type: object
    MenuSection:
      description: 'A part of a menu, as the venue page''s tab: "Vorspeisen", a lunch day''s "Mo 5.10.".'
      properties:
        dishes:
          items:
            $ref: '#/components/schemas/Dish'
          type: array
        title:
          description: Null for a menu of one section.
          type:
          - string
          - 'null'
      required:
      - title
      - dishes
      type: object