BYTETOOLS

Open Brewery DB API

Free brewery directory API with no key: search breweries by name, city, state, country and type, with addresses and coordinates. Tested curl example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the Open Brewery DB API?

Open Brewery DB is a free, key-free API listing breweries worldwide with names, types, full addresses, phone numbers, websites and coordinates, searchable by location and brewery type.

Open Brewery DB is a genuine open dataset of real businesses rather than generated placeholder data, which makes it unusually useful for practising location-based features — mapping, distance sorting, radius search — with data that behaves like production data.

It also has realistic messiness worth building against: some records lack coordinates, phone numbers or websites. Handling those gaps gracefully is exactly the skill that synthetic datasets never teach.

Quick facts

Base URL
https://api.openbrewerydb.org/v1
Authentication
No key required.
Rate limit
No published hard limit; fair use expected.
Pricing
Free open data.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Open Brewery DB API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. List breweries from the directory

GET https://api.openbrewerydb.org/v1/breweries?per_page=1

curl
curl 'https://api.openbrewerydb.org/v1/breweries?per_page=1'
JavaScript (fetch)
const res = await fetch("https://api.openbrewerydb.org/v1/breweries?per_page=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.openbrewerydb.org/v1/breweries?per_page=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
[
  {
    "id": "ae7b3174-8be8-4d53-a3a5-9b8240970eea",
    "name": "'s",
    "brewery_type": "brewpub",
    "address_1": "Friesener Straße 1",
    "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": "Friesener Straße 1"
  }
]

Parameters

ParameterTypeRequiredDescription
by_citystringOptionalFilter by city name. san_diego
by_statestringOptionalFilter by state or province. california
by_countrystringOptionalFilter by country. united_states
by_typestringOptionalmicro, nano, regional, brewpub, large, planning, contract or closed. micro
per_pageintegerOptionalResults per page, up to 200. 20
by_diststringOptionalSort by distance from lat,lng coordinates. 32.88,-117.16

Response fields

id / namestring
Brewery identifier and name.
brewery_typestring
Category such as micro, brewpub or regional.
address_1 / city / state / postal_codestring
Full address components.
latitude / longitudestring|null
Coordinates as strings; null for some records.
phone / website_urlstring|null
Contact details, frequently null.

What you can build with the Open Brewery DB API

  • Build a brewery finder with map and distance sorting
  • Practise location-based search with real, imperfect data
  • Add a local business directory to a travel or food site
  • Teach defensive handling of nullable fields

Common errors and how to fix them

Empty array

No breweries matched the filters.

Fix: City and state values use underscores for spaces, e.g. `san_diego`.

Null coordinates

Not every brewery has been geocoded.

Fix: Filter out records without latitude and longitude before plotting on a map.

Open Brewery DB API — frequently asked questions

Is Open Brewery DB free?

Yes, completely free open data with no API key or registration required.

How do I search breweries near a location?

Use `by_dist` with `latitude,longitude` to sort results by distance from that point, then combine with `per_page` to limit how many you render.

Why are some fields null?

It is a real-world open dataset, so coverage is uneven — phone numbers, websites and coordinates are missing for some breweries. Handle nulls rather than assuming every field is present.

How do I format multi-word city names?

Replace spaces with underscores, so San Diego becomes `san_diego`. The same applies to state and country filters.

Tools that pair with this API

Open Brewery DB is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.