Introduction

Open Brewery DB is a free dataset and API with public information on breweries, cideries, brewpubs, and bottleshops

The Goal

The goal of Open Brewery DB is to maintain an open-source, community-driven dataset and provide a public API for brewery-related data.

The Mission

It is our belief that public information should be freely accessible for the betterment of the community and the happiness of web developers and data analysts.

Authenticating requests

This API is not authenticated.

Endpoints

List breweries.

GET
https://api.openbrewerydb.org
/v1/breweries

Returns a paginated list of breweries based on optional filters and sorting.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://api.openbrewerydb.org/v1/breweries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1,
    \"page\": 22,
    \"sort\": \"architecto\",
    \"by_city\": \"n\",
    \"by_country\": \"g\",
    \"by_dist\": \"architecto\",
    \"by_dist_radius\": 22,
    \"by_dist_unit\": \"mi\",
    \"by_ids\": \"g\",
    \"by_name\": \"z\",
    \"by_postal\": \"m\",
    \"by_state\": \"i\",
    \"by_type\": \"architecto\",
    \"exclude_types\": \"architecto\"
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 119
vary: Origin
{
    "message": "The by city field must be at least 3 characters. (and 8 more errors)",
    "errors": {
        "by_city": [
            "The by city field must be at least 3 characters."
        ],
        "by_country": [
            "The by country field must be at least 3 characters."
        ],
        "by_dist": [
            "The by dist must be a valid coordinate pair (latitude,longitude)."
        ],
        "by_ids": [
            "The by ids field must be at least 3 characters."
        ],
        "by_name": [
            "The by name field must be at least 3 characters."
        ],
        "by_postal": [
            "The by postal field must be at least 3 characters."
        ],
        "by_state": [
            "The by state field must be at least 3 characters."
        ],
        "by_type": [
            "The by_type contains invalid brewery type: architecto"
        ],
        "exclude_types": [
            "The exclude_types contains invalid brewery type: architecto"
        ]
    }
}

Get metadata about the brewery

GET
https://api.openbrewerydb.org
/v1/breweries/meta

Takes the same filters as List Breweries.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://api.openbrewerydb.org/v1/breweries/meta" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1,
    \"page\": 22,
    \"sort\": \"architecto\",
    \"by_city\": \"n\",
    \"by_country\": \"g\",
    \"by_dist\": \"architecto\",
    \"by_dist_radius\": 22,
    \"by_dist_unit\": \"km\",
    \"by_ids\": \"g\",
    \"by_name\": \"z\",
    \"by_postal\": \"m\",
    \"by_state\": \"i\",
    \"by_type\": \"architecto\",
    \"exclude_types\": \"architecto\"
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 118
vary: Origin
{
    "message": "The by city field must be at least 3 characters. (and 8 more errors)",
    "errors": {
        "by_city": [
            "The by city field must be at least 3 characters."
        ],
        "by_country": [
            "The by country field must be at least 3 characters."
        ],
        "by_dist": [
            "The by dist must be a valid coordinate pair (latitude,longitude)."
        ],
        "by_ids": [
            "The by ids field must be at least 3 characters."
        ],
        "by_name": [
            "The by name field must be at least 3 characters."
        ],
        "by_postal": [
            "The by postal field must be at least 3 characters."
        ],
        "by_state": [
            "The by state field must be at least 3 characters."
        ],
        "by_type": [
            "The by_type contains invalid brewery type: architecto"
        ],
        "exclude_types": [
            "The exclude_types contains invalid brewery type: architecto"
        ]
    }
}

Get a random brewery.

GET
https://api.openbrewerydb.org
/v1/breweries/random

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://api.openbrewerydb.org/v1/breweries/random" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"size\": 1
}"
Example response:
Headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 117
vary: Origin
[
    {
        "id": "99526c72-24a9-4027-bad0-a1e42218b60a",
        "name": "Side By Each Brewing Co",
        "brewery_type": "planning",
        "address_1": null,
        "address_2": null,
        "address_3": null,
        "city": "Auburn",
        "state_province": "Maine",
        "postal_code": "04210-3739",
        "country": "United States",
        "longitude": null,
        "latitude": null,
        "phone": "2073479920",
        "website_url": null,
        "state": "Maine",
        "street": null
    }
]
GET
https://api.openbrewerydb.org
/v1/breweries/search

The search performs partial, case-insensitive matching against brewery names.

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

Body Parameters

Example request:
curl --request GET \
    --get "https://api.openbrewerydb.org/v1/breweries/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"per_page\": 1,
    \"query\": \"n\"
}"
Example response:

Get a single brewery.

GET
https://api.openbrewerydb.org
/v1/breweries/{id}

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json

URL Parameters

id
string
required

The ID of the brewery.

Example:
ae7b3174-8be8-4d53-a3a5-9b8240970eea
Example request:
curl --request GET \
    --get "https://api.openbrewerydb.org/v1/breweries/ae7b3174-8be8-4d53-a3a5-9b8240970eea" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
cache-control: max-age=86400, public
content-type: application/json
x-ratelimit-limit: 120
x-ratelimit-remaining: 115
vary: Origin
{
    "id": "ae7b3174-8be8-4d53-a3a5-9b8240970eea",
    "name": "'s",
    "brewery_type": "brewpub",
    "address_1": "1 Friesener Straße",
    "address_2": null,
    "address_3": null,
    "city": "Kronach",
    "state_province": "Bayern",
    "postal_code": "96317",
    "country": "Germany",
    "longitude": 11.327765,
    "latitude": 50.241246,
    "phone": "+49 9261 628000",
    "website_url": "http://www.antla.de",
    "state": "Bayern",
    "street": "1 Friesener Straße"
}