Food & Drink — entry 008 of 19
Open Brewery DB
Open Brewery DB is an open, keyless directory of breweries, cideries, and bottle shops across the US and several other countries, searchable by name, city, state, or brewery type. A live GET against the real gateway, api.openbrewerydb.org, returned genuine JSON while carrying an echoed Access-Control-Allow-Origin header, reconfirming both cors yes and auth None in the same probe.
Open Brewery DB is a free, keyless directory of breweries, cideries, and bottle shops — searchable by name, city, state, or type. A live GET this run against /breweries/meta returned {"total":11822,...} — a live, dated counter, not a fixed fact — spanning the US and several other countries.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required — a live GET this run against
/breweries?by_city=san_diego&per_page=1returned a genuine brewery record with zero credentials, carrying an echoedAccess-Control-Allow-Originheader so a browserfetch()works too.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Search breweries by city
GEThttps://api.openbrewerydb.org/v1/breweries?by_city=san_diego&per_page=1
[{"id":"ef970757-fe42-416f-931d-722451f1f59c","name":"10 Barrel Brewing Co","brewery_type":"large","address_1":"1501 E St","address_2":null,"address_3":null,"city":"San Diego","state_province":"California","postal_code":"92101-6618","country":"United States","longitude":-117.129593,"latitude":32.714813,"phone":"6195782311","website_url":"http://10barrel.com","state":"California","street":"1501 E St"}]Every filter (by_city, by_state, by_type, by_name via /breweries/search?query=) returns this same flat array shape — no wrapping envelope. brewery_type is one of a fixed set (micro, regional, brewpub, large, planning, bar, contract, proprietor, closed, ...), confirmed live in /breweries/meta's by_type breakdown this run.
Try it
Developer reference
https://api.openbrewerydb.org/v1120 requests per rate-limit window (x-ratelimit-limit: 120, exact window not disclosed in headers), confirmed live on a probe of api.openbrewerydb.org/v1/breweries -- contradicts the project's own "no rate limits" marketing text on openbrewerydb.org/documentation
- GET/breweries
- GET/breweries/{id}
- GET/breweries/search
- GET/breweries/meta
Gotchas & limits
- The default page size is 50, not the full result set — a live GET this run against a filter-less
/breweriesreturned exactly 50 records, whileper_page=200(the documented cap) returned exactly 200. There is nototalfield on the list route itself; get it from/breweries/metainstead. - An unmatched filter value is HTTP 200 with an empty array, not a 404 — a live GET this run against
/breweries?by_city=zzzznotacityreturned200 []. Code that treats an empty array as an error will misreport a simple no-results case. - An unknown id at
/breweries/{id}is a real HTML 404 page, not a JSON error envelope — a live GET this run against/breweries/not-a-real-idreturned Laravel's default 404 page (<title>Not Found</title>) withcontent-type: text/html. Code that always calls.json()on the response without checking status first will throw on a bad or stale id. /breweries/metaaccepts the sameby_city/by_state/by_typefilters as the list route and returns scoped counts (total,by_state,by_country,by_type) instead of records — it's a separate aggregate endpoint, not a query param on/breweries.