# Open Brewery DB

> Look up breweries, brewpubs, taprooms and cideries anywhere in the world from Open Brewery DB, the free open-source brewery dataset. Search by name, filter by country, state, city, postal code or brewery type, find the ones nearest a set of coordinates with the distance to each, pull a whole region in one step, count what matches before you fetch it, or pick one at random. No account or API key is required.

App · Food & Drink · 14 actions. Web page: https://docs.lodol.com/docs/integrations/open-brewery-db

## Actions

### Count breweries

How many breweries match a filter, as a single number, with a yes or no beside it for whether there are any at all. Built for a condition step: ask whether a town has a brewery before spending requests listing them.

**Inputs**

- Country (`country`, text): Only breweries in this country. The list is the countries the dataset actually covers, with how many breweries each has.
- State or province (`state`, text): Only breweries in this state or province. Choose a country above first and this list narrows to it. A two-letter US abbreviation such as OH also works and is expanded to the full name the dataset uses.
- City (`city`, text): Only breweries in this city. At least 3 characters, which is what Open Brewery DB accepts.
- Postal or ZIP code (`postal_code`, text): Only breweries with this postal code. A five-digit ZIP covers the whole area; a nine-digit ZIP+4 narrows it to one delivery route. Type the nine digits either way and the hyphen is added for you.
- Name contains (`name`, text): Only breweries whose name contains this text, in any case. Use it with the place filters to search names inside a city or a state.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.

**Outputs**

- `any` (true/false)
- `filters` (object)
- `total` (number)

**Example output**

```json
{
  "any": true,
  "filters": {
    "brewery_types": [],
    "city": "Cincinnati",
    "country": null,
    "exclude_types": [],
    "name": null,
    "postal_code": null,
    "sort": null,
    "state": null
  },
  "total": 34
}
```

### Find breweries nearby

Find the breweries closest to a latitude and longitude, nearest first, each with how far away it actually is. Set a radius to keep it to a neighbourhood, or leave it empty to get the nearest ones wherever they are. Open Brewery DB sorts by distance but never says what the distances are, so each one is measured here from the coordinates the record carries.

**Inputs**

- Latitude (`latitude`, number, required): Latitude of the point to search around, in degrees. From -90.0 to 90.0.
- Longitude (`longitude`, number, required): Longitude of the point to search around, in degrees. From -180.0 to 180.0.
- Radius (`radius`, number): How far around the point to look, in the unit below. Leave it empty to get the nearest breweries anywhere rather than nothing at all when a neighbourhood has none. From 0.1 to 10000.0.
- Distance unit (`unit`, text): The unit the radius is in, and the unit each result's distance is reported in. One of: `mi` (Miles), `km` (Kilometres). Default: `mi`.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Results per page (`per_page`, number): How many breweries to return in this step. 200 is the most Open Brewery DB returns in one request. From 1 to 200. Default: `50`.
- Page (`page`, number): Which page of results to return, counting from 1. When a page comes back full the result hands you the next page number to use. From 1 to 1000000. Default: `1`.

**Outputs**

- `breweries` (list)
- `brewery_types` (list)
- `count` (number)
- `exclude_types` (list)
- `has_more` (true/false)
- `latitude` (number)
- `longitude` (number)
- `next_page` (number)
- `page` (number)
- `per_page` (number)
- `radius` (number)
- `unit` (text)

**Example output**

```json
{
  "breweries": [
    {
      "address": "900 F St NW, Washington, District of Columbia 20004-1404, United States",
      "address_1": "900 F St NW",
      "address_2": null,
      "address_3": null,
      "brewery_type": "closed",
      "city": "Washington",
      "country": "United States",
      "distance": 0.65,
      "distance_unit": "mi",
      "id": "cb2ba6de-fc98-4ae0-83a4-b775bda03f2c",
      "is_open": false,
      "latitude": 38.8971375,
      "longitude": -77.0243479,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.8971375,-77.0243479",
      "name": "Gordon Biersch Brewery Restaurant - Washington",
      "phone": "2027835454",
      "phone_display": "(202) 783-5454",
      "postal_code": "20004-1404",
      "state": "District of Columbia",
      "state_province": "District of Columbia",
      "street": "900 F St NW",
      "type_label": "Closed",
      "website_url": "http://www.gordonbiersch.com/locations/washington-dc?action=view"
    },
    {
      "address": "509 7th St NW, Washington, District of Columbia 20004-1600, United States",
      "address_1": "509 7th St NW",
      "address_2": null,
      "address_3": null,
      "brewery_type": "closed",
      "city": "Washington",
      "country": "United States",
      "distance": 0.8,
      "distance_unit": "mi",
      "id": "a5f7b66a-2f51-4161-9365-0eef5aa282a5",
      "is_open": false,
      "latitude": 38.8965132,
      "longitude": -77.0216694,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.8965132,-77.0216694",
      "name": "District ChopHouse and Brewery",
      "phone": "2023473434",
      "phone_display": "(202) 347-3434",
      "postal_code": "20004-1600",
      "state": "District of Columbia",
      "state_province": "District of Columbia",
      "street": "509 7th St NW",
      "type_label": "Closed",
      "website_url": "http://www.districtchophouse.com"
    }
  ],
  "brewery_types": [],
  "count": 2,
  "exclude_types": [],
  "has_more": true,
  "latitude": 38.8977,
  "longitude": -77.0365,
  "next_page": 2,
  "page": 1,
  "per_page": 2,
  "radius": 1.0,
  "unit": "mi"
}
```

### Get a brewery

Read one brewery by its Open Brewery DB ID: its name, type, full address, coordinates, phone number and website. Type part of a name in the search box to pick one, or pass an ID an earlier step returned.

**Inputs**

- Brewery search (`brewery_search`, text): Type part of a brewery's name here, then choose the exact one from the Brewery list below.
- Brewery (`brewery_id`, text, required): The brewery to read. Fill in the brewery search above and this list fills with the matching breweries. It also takes an ID from an earlier step directly.

**Outputs**

- `address` (text)
- `address_1` (text)
- `address_2` (text)
- `address_3` (text)
- `brewery_type` (text)
- `city` (text)
- `country` (text)
- `id` (text)
- `is_open` (true/false)
- `latitude` (number)
- `longitude` (number)
- `map_url` (text)
- `name` (text)
- `phone` (text)
- `phone_display` (text)
- `postal_code` (text)
- `state` (text)
- `state_province` (text)
- `street` (text)
- `type_label` (text)
- `website_url` (text)

**Example output**

```json
{
  "address": "6 Cannery Village Ctr, Milton, Delaware 19968-1308, United States",
  "address_1": "6 Cannery Village Ctr",
  "address_2": null,
  "address_3": null,
  "brewery_type": "regional",
  "city": "Milton",
  "country": "United States",
  "id": "281e6980-e2e2-4493-9896-3517e8cafe21",
  "is_open": true,
  "latitude": 38.76691205,
  "longitude": -75.31158206,
  "map_url": "https://www.google.com/maps/search/?api=1&query=38.76691205,-75.31158206",
  "name": "Dogfish Head Craft Brewery",
  "phone": "3026841000",
  "phone_display": "(302) 684-1000",
  "postal_code": "19968-1308",
  "state": "Delaware",
  "state_province": "Delaware",
  "street": "6 Cannery Village Ctr",
  "type_label": "Regional brewery",
  "website_url": "http://www.dogfish.com"
}
```

### Get a random brewery

Pick one brewery at random from the whole dataset and return it as a flat record, so a message can use its name and address without reaching into a list. Good for a 'brewery of the day' post.

**Inputs**: None.

**Outputs**

- `address` (text)
- `address_1` (text)
- `address_2` (text)
- `address_3` (text)
- `brewery_type` (text)
- `city` (text)
- `country` (text)
- `id` (text)
- `is_open` (true/false)
- `latitude` (number)
- `longitude` (number)
- `map_url` (text)
- `name` (text)
- `phone` (text)
- `phone_display` (text)
- `postal_code` (text)
- `state` (text)
- `state_province` (text)
- `street` (text)
- `type_label` (text)
- `website_url` (text)

**Example output**

```json
{
  "address": "5231 Manchester Ave # E, Saint Louis, Missouri 63110-2092, United States",
  "address_1": "5231 Manchester Ave # E",
  "address_2": null,
  "address_3": null,
  "brewery_type": "micro",
  "city": "Saint Louis",
  "country": "United States",
  "id": "5895ab5b-ba99-44f5-b9f1-48e332e7f20e",
  "is_open": true,
  "latitude": 38.625149,
  "longitude": -90.273784,
  "map_url": "https://www.google.com/maps/search/?api=1&query=38.625149,-90.273784",
  "name": "Modern Brewery",
  "phone": null,
  "phone_display": null,
  "postal_code": "63110-2092",
  "state": "Missouri",
  "state_province": "Missouri",
  "street": "5231 Manchester Ave # E",
  "type_label": "Microbrewery",
  "website_url": "http://www.mb314.com"
}
```

### Get breweries by ID

Read several breweries at once from a list of IDs, in the order you asked for them. Open Brewery DB looks up 6 at a time and returns them in its own order, dropping any ID it does not have; this step splits a longer list across requests, puts the order back and reports the IDs that are not in the dataset instead of losing them.

**Inputs**

- Brewery IDs (`brewery_ids`, list, required): The IDs to look up, usually taken from an earlier step. Up to 60 in one step. Open Brewery DB looks up 6 at a time, so this step makes one request per 6 IDs and says how many it made.

**Outputs**

- `breweries` (list)
- `count` (number)
- `missing_count` (number)
- `missing_ids` (list)
- `requested_count` (number)
- `requested_ids` (list)
- `requests_made` (number)

**Example output**

```json
{
  "breweries": [
    {
      "address": "6 Cannery Village Ctr, Milton, Delaware 19968-1308, United States",
      "address_1": "6 Cannery Village Ctr",
      "address_2": null,
      "address_3": null,
      "brewery_type": "regional",
      "city": "Milton",
      "country": "United States",
      "id": "281e6980-e2e2-4493-9896-3517e8cafe21",
      "is_open": true,
      "latitude": 38.76691205,
      "longitude": -75.31158206,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.76691205,-75.31158206",
      "name": "Dogfish Head Craft Brewery",
      "phone": "3026841000",
      "phone_display": "(302) 684-1000",
      "postal_code": "19968-1308",
      "state": "Delaware",
      "state_province": "Delaware",
      "street": "6 Cannery Village Ctr",
      "type_label": "Regional brewery",
      "website_url": "http://www.dogfish.com"
    },
    {
      "address": "320 Rehoboth Ave, Rehoboth Beach, Delaware 19971-3108, United States",
      "address_1": "320 Rehoboth Ave",
      "address_2": null,
      "address_3": null,
      "brewery_type": "brewpub",
      "city": "Rehoboth Beach",
      "country": "United States",
      "id": "7a6bd1cf-4385-4677-a9d7-3507535399e4",
      "is_open": true,
      "latitude": 38.7151767,
      "longitude": -75.08731545,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.7151767,-75.08731545",
      "name": "Dogfish Head Brewings & Eats",
      "phone": "3022262739",
      "phone_display": "(302) 226-2739",
      "postal_code": "19971-3108",
      "state": "Delaware",
      "state_province": "Delaware",
      "street": "320 Rehoboth Ave",
      "type_label": "Brewpub",
      "website_url": "http://www.dogfish.com"
    }
  ],
  "count": 2,
  "missing_count": 1,
  "missing_ids": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "requested_count": 3,
  "requested_ids": [
    "281e6980-e2e2-4493-9896-3517e8cafe21",
    "7a6bd1cf-4385-4677-a9d7-3507535399e4",
    "00000000-0000-0000-0000-000000000000"
  ],
  "requests_made": 1
}
```

### Get brewery statistics

Count the breweries matching a filter and break the total down by type, by state or province and by country, each as ordered rows with the busiest first and the share of the total beside each type. One request, whatever the filter matches, so it is the cheap way to size a search before running it.

**Inputs**

- Country (`country`, text): Only breweries in this country. The list is the countries the dataset actually covers, with how many breweries each has.
- State or province (`state`, text): Only breweries in this state or province. Choose a country above first and this list narrows to it. A two-letter US abbreviation such as OH also works and is expanded to the full name the dataset uses.
- City (`city`, text): Only breweries in this city. At least 3 characters, which is what Open Brewery DB accepts.
- Postal or ZIP code (`postal_code`, text): Only breweries with this postal code. A five-digit ZIP covers the whole area; a nine-digit ZIP+4 narrows it to one delivery route. Type the nine digits either way and the hyphen is added for you.
- Name contains (`name`, text): Only breweries whose name contains this text, in any case. Use it with the place filters to search names inside a city or a state.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.

**Outputs**

- `by_country` (list)
- `by_state` (list)
- `by_type` (list)
- `country_count` (number)
- `filters` (object)
- `state_count` (number)
- `total` (number)
- `type_count` (number)

**Example output**

```json
{
  "by_country": [
    {
      "count": 34,
      "country": "United States"
    }
  ],
  "by_state": [
    {
      "count": 34,
      "state": "Ohio"
    }
  ],
  "by_type": [
    {
      "brewery_type": "micro",
      "count": 18,
      "share": 52.9,
      "type_label": "Microbrewery"
    },
    {
      "brewery_type": "brewpub",
      "count": 8,
      "share": 23.5,
      "type_label": "Brewpub"
    },
    {
      "brewery_type": "regional",
      "count": 5,
      "share": 14.7,
      "type_label": "Regional brewery"
    }
  ],
  "country_count": 1,
  "filters": {
    "brewery_types": [],
    "city": "Cincinnati",
    "country": null,
    "exclude_types": [],
    "name": null,
    "postal_code": null,
    "sort": null,
    "state": null
  },
  "state_count": 1,
  "total": 34,
  "type_count": 4
}
```

### Get random breweries

Pick up to 50 breweries at random from the whole dataset. The pick covers every country the dataset holds and cannot be filtered, which is what Open Brewery DB's random endpoint offers.

**Inputs**

- How many (`size`, number): How many breweries to pick at random. 50 is the most allowed. From 1 to 50. Default: `1`.

**Outputs**

- `breweries` (list)
- `count` (number)
- `size` (number)

**Example output**

```json
{
  "breweries": [
    {
      "address": "20 King St E, Port Perry, Ontario L9L 1B7, Canada",
      "address_1": "20 King St E",
      "address_2": null,
      "address_3": null,
      "brewery_type": "brewpub",
      "city": "Port Perry",
      "country": "Canada",
      "id": "7011c459-794e-4a97-9dbe-be7ba151b0c3",
      "is_open": true,
      "latitude": null,
      "longitude": null,
      "map_url": "https://www.google.com/maps/search/?api=1&query=20+King+St+E%2C+Port+Perry%2C+Ontario+L9L+1B7%2C+Canada",
      "name": "Old Flame Brewing Company",
      "phone": "9059855554.0",
      "phone_display": "9059855554.0",
      "postal_code": "L9L 1B7",
      "state": "Ontario",
      "state_province": "Ontario",
      "street": "20 King St E",
      "type_label": "Brewpub",
      "website_url": "http://www.oldflamebrewingco.ca"
    },
    {
      "address": "South Street, Lewes, East Sussex BN8 6JL, England",
      "address_1": "South Street",
      "address_2": null,
      "address_3": null,
      "brewery_type": "taproom",
      "city": "Lewes",
      "country": "England",
      "id": "27853f3a-ed0f-48d9-bce7-4bc73989d658",
      "is_open": true,
      "latitude": 50.868313,
      "longitude": 0.024917,
      "map_url": "https://www.google.com/maps/search/?api=1&query=50.868313,0.024917",
      "name": "The Beak Brewery Limited",
      "phone": "1273473094",
      "phone_display": "1273473094",
      "postal_code": "BN8 6JL",
      "state": "East Sussex",
      "state_province": "East Sussex",
      "street": "South Street",
      "type_label": "Taproom",
      "website_url": "https://beakbrewery.com/"
    }
  ],
  "count": 2,
  "size": 2
}
```

### List breweries

List breweries matching a filter: a country, a state or province, a city, a postal code, part of a name, and the brewery types to keep or leave out. Sort by any of seven fields in either direction, and page through the results. Every brewery comes back with its full address on one line, a map link, a readable phone number and whether it is open today, beside the fields Open Brewery DB itself returns.

**Inputs**

- Country (`country`, text): Only breweries in this country. The list is the countries the dataset actually covers, with how many breweries each has.
- State or province (`state`, text): Only breweries in this state or province. Choose a country above first and this list narrows to it. A two-letter US abbreviation such as OH also works and is expanded to the full name the dataset uses.
- City (`city`, text): Only breweries in this city. At least 3 characters, which is what Open Brewery DB accepts.
- Postal or ZIP code (`postal_code`, text): Only breweries with this postal code. A five-digit ZIP covers the whole area; a nine-digit ZIP+4 narrows it to one delivery route. Type the nine digits either way and the hyphen is added for you.
- Name contains (`name`, text): Only breweries whose name contains this text, in any case. Use it with the place filters to search names inside a city or a state.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Sort by (`sort_by`, list): Sort the results by these fields, in the order you choose them. Choose none to leave the dataset's own order alone. One or more of: `name` (Brewery name), `brewery_type` (Brewery type), `city`, `state_province` (State or province), `postal_code` (Postal code), `country`, `id` (Brewery ID).
- Sort direction (`sort_direction`, text): Which way round to sort. Applies to every field chosen above. One of: `asc` (A to Z, lowest first), `desc` (Z to A, highest first). Default: `asc`.
- Results per page (`per_page`, number): How many breweries to return in this step. 200 is the most Open Brewery DB returns in one request. From 1 to 200. Default: `50`.
- Page (`page`, number): Which page of results to return, counting from 1. When a page comes back full the result hands you the next page number to use. From 1 to 1000000. Default: `1`.

**Outputs**

- `breweries` (list)
- `count` (number)
- `filters` (object)
- `has_more` (true/false)
- `next_page` (number)
- `page` (number)
- `per_page` (number)

**Example output**

```json
{
  "breweries": [
    {
      "address": "7391 Forbes Rd, Cincinnati, Ohio 45233-1013, United States",
      "address_1": "7391 Forbes Rd",
      "address_2": null,
      "address_3": null,
      "brewery_type": "micro",
      "city": "Cincinnati",
      "country": "United States",
      "id": "950180bd-29c9-46b3-ad0c-e6f09799ec7f",
      "is_open": true,
      "latitude": 39.12639764,
      "longitude": -84.70634815,
      "map_url": "https://www.google.com/maps/search/?api=1&query=39.12639764,-84.70634815",
      "name": "13 Below Brewery",
      "phone": "5139750613",
      "phone_display": "(513) 975-0613",
      "postal_code": "45233-1013",
      "state": "Ohio",
      "state_province": "Ohio",
      "street": "7391 Forbes Rd",
      "type_label": "Microbrewery",
      "website_url": "http://www.13belowbrewery.com"
    },
    {
      "address": "4720 Eastern Ave, Cincinnati, Ohio 45226-1893, United States",
      "address_1": "4720 Eastern Ave",
      "address_2": null,
      "address_3": null,
      "brewery_type": "micro",
      "city": "Cincinnati",
      "country": "United States",
      "id": "ccb3350f-eade-47d0-8fa7-351d20ead048",
      "is_open": true,
      "latitude": 39.11995755,
      "longitude": -84.41803086,
      "map_url": "https://www.google.com/maps/search/?api=1&query=39.11995755,-84.41803086",
      "name": "Bad Tom Smith Brewing",
      "phone": "5138714677",
      "phone_display": "(513) 871-4677",
      "postal_code": "45226-1893",
      "state": "Ohio",
      "state_province": "Ohio",
      "street": "4720 Eastern Ave",
      "type_label": "Microbrewery",
      "website_url": "http://www.badtomsmithbrewing.com"
    }
  ],
  "count": 2,
  "filters": {
    "brewery_types": [
      "micro"
    ],
    "city": "Cincinnati",
    "country": null,
    "exclude_types": [],
    "name": null,
    "postal_code": null,
    "sort": "name:asc",
    "state": null
  },
  "has_more": true,
  "next_page": 2,
  "page": 1,
  "per_page": 2
}
```

### List brewery types

Every brewery type the filters accept, what each one means, and how many of each the dataset holds. Four of the fourteen are accepted by the API but missing from its documentation, and two are deprecated; each row says which it is, so a filter can be built without guessing.

**Inputs**: None.

**Outputs**

- `count` (number)
- `total` (number)
- `types` (list)

**Example output**

```json
{
  "count": 14,
  "total": 11822,
  "types": [
    {
      "brewery_type": "micro",
      "count": 5837,
      "deprecated": false,
      "description": "Most craft breweries. A brewery of this size can still be a household name.",
      "documented": true,
      "share": 49.4,
      "type_label": "Microbrewery"
    },
    {
      "brewery_type": "brewpub",
      "count": 3929,
      "deprecated": false,
      "description": "A beer-focused restaurant, or a restaurant or bar with a brewery on the premises.",
      "documented": true,
      "share": 33.2,
      "type_label": "Brewpub"
    },
    {
      "brewery_type": "closed",
      "count": 642,
      "deprecated": false,
      "description": "A location which has been closed.",
      "documented": true,
      "share": 5.4,
      "type_label": "Closed"
    }
  ]
}
```

### List countries

Every country the dataset covers, with how many breweries each has, busiest first. These are the exact names the country filter takes, and they are what fills the country dropdown on the other actions.

**Inputs**

- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.

**Outputs**

- `brewery_types` (list)
- `count` (number)
- `countries` (list)
- `exclude_types` (list)
- `total` (number)

**Example output**

```json
{
  "brewery_types": [],
  "count": 23,
  "countries": [
    {
      "count": 8224,
      "country": "United States"
    },
    {
      "count": 1445,
      "country": "Germany"
    },
    {
      "count": 514,
      "country": "Australia"
    },
    {
      "count": 478,
      "country": "Belgium"
    }
  ],
  "exclude_types": [],
  "total": 11822
}
```

### List every matching brewery

The same search as 'List breweries', but followed across every page so one step returns the whole answer instead of a paging loop. It asks how many there are first, so the result says whether it returned all of them or stopped at the limit. Use it for 'every brewery in Vermont'; use 'List breweries' when one page is enough.

**Inputs**

- Country (`country`, text): Only breweries in this country. The list is the countries the dataset actually covers, with how many breweries each has.
- State or province (`state`, text): Only breweries in this state or province. Choose a country above first and this list narrows to it. A two-letter US abbreviation such as OH also works and is expanded to the full name the dataset uses.
- City (`city`, text): Only breweries in this city. At least 3 characters, which is what Open Brewery DB accepts.
- Postal or ZIP code (`postal_code`, text): Only breweries with this postal code. A five-digit ZIP covers the whole area; a nine-digit ZIP+4 narrows it to one delivery route. Type the nine digits either way and the hyphen is added for you.
- Name contains (`name`, text): Only breweries whose name contains this text, in any case. Use it with the place filters to search names inside a city or a state.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Sort by (`sort_by`, list): Sort the results by these fields, in the order you choose them. Choose none to leave the dataset's own order alone. One or more of: `name` (Brewery name), `brewery_type` (Brewery type), `city`, `state_province` (State or province), `postal_code` (Postal code), `country`, `id` (Brewery ID).
- Sort direction (`sort_direction`, text): Which way round to sort. Applies to every field chosen above. One of: `asc` (A to Z, lowest first), `desc` (Z to A, highest first). Default: `asc`.
- Stop after (`limit`, number): The most breweries to return. The step follows the paging up to this many and then says whether there were more. From 1 to 2000. Default: `2000`.

**Outputs**

- `breweries` (list)
- `count` (number)
- `filters` (object)
- `limit` (number)
- `requests_made` (number)
- `total_count` (number)
- `truncated` (true/false)

**Example output**

```json
{
  "breweries": [
    {
      "address": "Prospekt Pratsi, 8, Dnipro, Dnipropetrovsk Oblast 49000, Ukraine",
      "address_1": "Prospekt Pratsi, 8",
      "address_2": null,
      "address_3": null,
      "brewery_type": "micro",
      "city": "Dnipro",
      "country": "Ukraine",
      "id": "4ea40878-7bc0-46d3-b7e4-7e890d908d62",
      "is_open": true,
      "latitude": null,
      "longitude": null,
      "map_url": "https://www.google.com/maps/search/?api=1&query=Prospekt+Pratsi%2C+8%2C+Dnipro%2C+Dnipropetrovsk+Oblast+49000%2C+Ukraine",
      "name": "MOVA",
      "phone": null,
      "phone_display": null,
      "postal_code": "49000",
      "state": "Dnipropetrovsk Oblast",
      "state_province": "Dnipropetrovsk Oblast",
      "street": "Prospekt Pratsi, 8",
      "type_label": "Microbrewery",
      "website_url": "https://mova.beer"
    }
  ],
  "count": 1,
  "filters": {
    "brewery_types": [],
    "city": null,
    "country": "Ukraine",
    "exclude_types": [],
    "name": null,
    "postal_code": null,
    "sort": null,
    "state": null
  },
  "limit": 2000,
  "requests_made": 2,
  "total_count": 1,
  "truncated": false
}
```

### List states and provinces

Every state or province the dataset covers, with how many breweries each has, busiest first. Choose a country to narrow it, or leave it empty for all of them worldwide. These are the exact names the state filter takes, spelled the way the dataset spells them.

**Inputs**

- Country (`country`, text): Only breweries in this country. The list is the countries the dataset actually covers, with how many breweries each has.
- Brewery types (`brewery_types`, list): Only breweries of these types. Choose none to include every type. Note that the dataset counts closed and not-yet-open places as breweries, so a list of places to visit usually excludes them. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.
- Exclude brewery types (`exclude_types`, list): Leave these types out of the results. The usual pair to exclude is 'Closed' and 'In planning', which leaves the places open today. One or more of: `micro` (Microbrewery: most craft breweries), `brewpub` (Brewpub: a restaurant or bar that brews on site), `regional` (Regional: a location of an expanded brewery), `nano` (Nanobrewery: tiny, and usually local only), `taproom`, `contract` (Contract: brews on another brewery's equipment), `proprietor` (Proprietor: a brewery incubator), `beergarden` (Beer garden), `cidery`, `location`, and 4 more.

**Outputs**

- `brewery_types` (list)
- `count` (number)
- `country` (text)
- `exclude_types` (list)
- `states` (list)
- `total` (number)

**Example output**

```json
{
  "brewery_types": [],
  "count": 16,
  "country": "Germany",
  "exclude_types": [],
  "states": [
    {
      "count": 597,
      "state": "Bayern"
    },
    {
      "count": 195,
      "state": "Baden-W\u00fcrttemberg"
    },
    {
      "count": 145,
      "state": "Nordrhein-Westfalen"
    },
    {
      "count": 79,
      "state": "Niedersachsen"
    }
  ],
  "total": 1445
}
```

### Search breweries by name

Search brewery names for part of a name, in any case, and get the full record of each match. The search covers names only and takes no place or type filters, so use 'List breweries' with its Name filter to search names inside a city or a state.

**Inputs**

- Search term (`query`, text, required): Part of a brewery's name, matched in any case. At least 3 characters, which is what Open Brewery DB accepts.
- Results per page (`per_page`, number): How many breweries to return in this step. 200 is the most Open Brewery DB returns in one request. From 1 to 200. Default: `50`.
- Page (`page`, number): Which page of results to return, counting from 1. When a page comes back full the result hands you the next page number to use. From 1 to 1000000. Default: `1`.

**Outputs**

- `breweries` (list)
- `count` (number)
- `has_more` (true/false)
- `next_page` (number)
- `page` (number)
- `per_page` (number)
- `query` (text)

**Example output**

```json
{
  "breweries": [
    {
      "address": "6 Cannery Village Ctr, Milton, Delaware 19968-1308, United States",
      "address_1": "6 Cannery Village Ctr",
      "address_2": null,
      "address_3": null,
      "brewery_type": "regional",
      "city": "Milton",
      "country": "United States",
      "id": "281e6980-e2e2-4493-9896-3517e8cafe21",
      "is_open": true,
      "latitude": 38.76691205,
      "longitude": -75.31158206,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.76691205,-75.31158206",
      "name": "Dogfish Head Craft Brewery",
      "phone": "3026841000",
      "phone_display": "(302) 684-1000",
      "postal_code": "19968-1308",
      "state": "Delaware",
      "state_province": "Delaware",
      "street": "6 Cannery Village Ctr",
      "type_label": "Regional brewery",
      "website_url": "http://www.dogfish.com"
    },
    {
      "address": "320 Rehoboth Ave, Rehoboth Beach, Delaware 19971-3108, United States",
      "address_1": "320 Rehoboth Ave",
      "address_2": null,
      "address_3": null,
      "brewery_type": "brewpub",
      "city": "Rehoboth Beach",
      "country": "United States",
      "id": "7a6bd1cf-4385-4677-a9d7-3507535399e4",
      "is_open": true,
      "latitude": 38.7151767,
      "longitude": -75.08731545,
      "map_url": "https://www.google.com/maps/search/?api=1&query=38.7151767,-75.08731545",
      "name": "Dogfish Head Brewings & Eats",
      "phone": "3022262739",
      "phone_display": "(302) 226-2739",
      "postal_code": "19971-3108",
      "state": "Delaware",
      "state_province": "Delaware",
      "street": "320 Rehoboth Ave",
      "type_label": "Brewpub",
      "website_url": "http://www.dogfish.com"
    }
  ],
  "count": 2,
  "has_more": true,
  "next_page": 2,
  "page": 1,
  "per_page": 2,
  "query": "dogfish"
}
```

### Suggest breweries

The same name search trimmed to an ID, a name and a place, with a ready-made label such as 'Dogfish Head Craft Brewery (Milton, Delaware, United States)'. Use it to offer a short list of choices in a chat reply, or to turn a name someone typed into the ID the other actions take.

**Inputs**

- Search term (`query`, text, required): Part of a brewery's name, matched in any case. At least 3 characters, which is what Open Brewery DB accepts.
- How many suggestions (`limit`, number): The most suggestions to return. From 1 to 200. Default: `10`.

**Outputs**

- `count` (number)
- `limit` (number)
- `query` (text)
- `suggestions` (list)

**Example output**

```json
{
  "count": 2,
  "limit": 10,
  "query": "dogfish",
  "suggestions": [
    {
      "brewery_type": "regional",
      "city": "Milton",
      "country": "United States",
      "id": "281e6980-e2e2-4493-9896-3517e8cafe21",
      "label": "Dogfish Head Craft Brewery (Milton, Delaware, United States)",
      "name": "Dogfish Head Craft Brewery",
      "state_province": "Delaware"
    },
    {
      "brewery_type": "brewpub",
      "city": "Rehoboth Beach",
      "country": "United States",
      "id": "7a6bd1cf-4385-4677-a9d7-3507535399e4",
      "label": "Dogfish Head Brewings & Eats (Rehoboth Beach, Delaware, United States)",
      "name": "Dogfish Head Brewings & Eats",
      "state_province": "Delaware"
    }
  ]
}
```
