Untappd is the beer check-in network: people log what they drink and where, and every beer, brewery and venue gets a public page with ratings. It is easy to read. On 2 October 2026 every public beer and brewery page we requested through residential proxies loaded on the first attempt over plain HTTP, at about 160 KB a page. What changes is location: the "where to find" page for the same beer listed 509 venues from a US exit, 109 from Germany and 11 from Ireland. The catch is the rules. Untappd's terms exclude robots and data mining, and the sanctioned route is its API, at 100 calls an hour per key.
What people search for
Google autocomplete has no proxy intent for "untappd proxies": it completes to "untappd pro", "untappd profile" and "untappd problem". "untappd scraper" completes to "scrape untappd" and "untappd score". "untappd api" is the busy one: api access, api key, api documentation, api pricing, business api, public api and api python. People who want Untappd data mostly want the API.
The US results page for "untappd proxies" is a small joke: nine of the ten results are Untappd pages for beers and breweries called Proxy. SOMA Beer's Proxy, a hazy IPA rated 4.0 from 696 ratings; Great Notion's ISO Proxy, a pastry sour at 4.1 from 908; Analog Brewing's Proxy Cerveza; a Canadian non-alcoholic brand called Drink Proxies. No page explains what Untappd serves to an automated client or what its rules allow. That is what this article measures.
What Untappd serves to a proxied client
Untappd was founded in 2010 and is owned by Next Glass. Its website mirrors the app for public objects: beer pages (/b/<slug>/<id>), brewery pages (often under a short vanity path such as /SierraNevada), venue pages and a "nearby" page per beer. User profiles and individual check-ins also exist on the web, but we did not request them, because they belong to private people. Everything sits behind Cloudflare.
| Request (2 October 2026) | Exit | Result | Bytes |
|---|---|---|---|
| Guinness Draught beer page, plain HTTP | US | 200, 1st attempt, 5.1 s | 162,031 |
| Same page, plain HTTP | Ireland | 200, 1st attempt, 6.8 s | 161,788 |
| Same page, plain HTTP | Japan | 200, 1st attempt, 3.3 s | 161,960 |
| Same page, rendered | US | 200, 35.3 s | 684,952 |
| Same page, no-JS vs rendered audit | US / Germany | 200 both ways, 901 vs 1,124 words / 916 vs 1,097 | n/a |
| Sierra Nevada brewery page, plain HTTP | US | Redirected to /SierraNevada, 200, 12.0 s | 156,920 |
| Same brewery, no-JS vs rendered audit | UK | 200 both ways, 1,177 vs 1,352 words | n/a |
| Same brewery, rendered | Germany | 200, 34.1 s | 681,230 |
| Beer URL with a wrong numeric id | US | Redirected to a different beer, 200 | 157,606 |
| Nearby venues for Guinness Draught | US | 200, 509 verified venues | 138,526 |
| Same nearby page | Germany | 200, 109 verified venues | 140,495 |
| Same nearby page | Ireland | 200, 11 verified venues | 80,259 |
| Search for "guinness", logged out | US | 200, search form only, no results | 66,362 |
| robots.txt | US | 200, 1st attempt | 691 |
| /terms | US | 200, 1st attempt | 49,040 |
| API documentation | US / Germany | 200, 1st attempt each | 176,753 |
| API v4 beer info without keys | US | 500 JSON, "missing client_secret and/or client_id" | 168 |
| /api/register | US | Redirect to login, 3 attempts | 10,009 |
| /api/ landing | US | 403 Cloudflare challenge, 3 attempts | 5,905 |
Three things stand out. First, public object pages are server-rendered: the no-JS view already has the title, the rating, the description and a Product (beer) or Brewery JSON-LD block, and rendering adds only about 200 words while multiplying the bytes by 4.2. A browser buys you nothing here. Second, the numeric id is what counts. A beer URL with a slug from one brewery and an id from another redirected to the beer that owns the id (here Grolsch Premium Lager, 3.3 from 317,987 ratings), and the old brewery URL redirected to its vanity path. Third, logged-out search is empty: the page returns a search form and no results, so discovery on the website needs either the app, the API, or links you already have.
For scale, the Guinness Draught page showed 997,788 ratings, an average of 3.8, 3.96 million total check-ins, 1.11 million unique drinkers and 20,389 check-ins in the last month. Those are the kind of numbers a brewery or distributor actually looks at.
What changes by country
The beer and brewery pages did not change. The Guinness page came back with the same title, description and rating from the US, Ireland and Japan, and its size varied by less than 250 bytes. Germany and the UK gave the same audit results as the US.
The nearby page is different. It is served with cache-control: private, no-store and built from the visitor's location, which for a logged-out visitor means the IP address:
| Exit | Verified venues listed | Where the list starts | Prices shown |
|---|---|---|---|
| United States | 509 | Eastern Pennsylvania | $5.25 to $6.00 USD |
| Germany | 109 | Roermond, Netherlands, 33.5 miles away | Serving sizes, few prices |
| Ireland | 11 | Dublin city centre | Pint 7.50 EUR in two Dublin pubs |
So if the question is "where is our beer listed as available, and at what price, in market X", the exit country is the whole answer, and a country-targeted residential exit is the right tool. The Irish list starts with a pub 0.81 miles from the exit and stretches to Kilkenny and Wales; the German exit landed near the Dutch border and listed Dutch and Dortmund venues first. City targeting narrows that further.
What Untappd's rules say
This decides what you may do with those pages. Untappd's Terms of Use grant a limited licence to use the site and then list what it does not include. You may not "use any data mining, robots or similar data gathering or extraction methods", may not sell, resell or use the site or its content commercially, and may not download any portion of it "other than page caching" except as Untappd expressly permits. Any other use needs Untappd's prior written permission. In plain words: their terms forbid scraping the site.
The robots.txt file is much looser than the terms. It keeps Googlebot out of user profiles, individual check-ins, badges, reports and the login page, and for every other user agent it disallows only /brewery-claims. You can paste the file and a path into our ../../tools/robots-txt-tester/ to see the verdict for any URL. Robots.txt tells crawlers what is reachable; the terms tell you what is allowed. On Untappd they disagree, and the terms are the contract.
The sanctioned route is the official API. Its documentation, public and loaded on the first attempt, says every request needs a client ID and a client secret, that you must send a non-standard User-Agent that identifies your app, and that the default limit is 100 calls per hour per key (per user when you authenticate users). We confirmed the shape: a call to the beer info endpoint without keys came back as a 168-byte JSON error with x-ratelimit-limit: 100. Registering an app requires an Untappd login. Commercial access and pricing are a conversation with Untappd, which also sells Untappd for Business to venues and breweries.
What a proxy is actually useful for on Untappd
| Job | Proxy type | Notes |
|---|---|---|
| See where your own beer is listed as available, by market | Residential, country or city targeted | The nearby page is built from the visitor's IP |
| Check your own brewery or beer page as a visitor abroad sees it | Residential, plain HTTP | Same content everywhere in our test, 1st attempt every time |
| Run your own brewery or venue account from a stable address | Static ISP, one account per address | Consistency, not scale |
| Build an app on Untappd data | None needed | Official API, 100 calls per hour per key |
| Collect ratings, check-ins or venue lists at scale from the site | None | The terms exclude robots and data mining without written permission |
We used ../../residential-proxies/ for every request above. Nothing on the public pages needed retries, so there is no case for a large rotating pool: the useful property is the location of the exit, not its count. For a brewery or venue that manages its own account, ../../isp-proxies/ gives the same address every session. We did not test mobile exits on Untappd and make no claim about them.
Errors you will see, and what each means
- 500 with
invalid_paramfrom api.untappd.com. Missing or wrong client ID or secret. The API uses 500 for this, not 401, so do not treat it as an outage. - A 200 for a different beer. The id in the URL belongs to another beer, or the entry was merged. Check the canonical URL in the response, not the slug you sent.
- A 200 search page with no results. Logged-out web search shows only the form. It is not a block.
- 403 with
cf-mitigated: challenge, about 5.9 KB. We saw it once, on the /api/ landing page, never on a beer or brewery page. Cloudflare wants a browser. Retrying from fresh exits until it passes is not a plan we recommend on a site whose terms forbid robots. - A redirect to /login. The page needs an account, such as API app registration. Log in yourself in a browser.
What it costs
For the allowed jobs the traffic is tiny. Say a brewery checks the nearby page for its 20 beers in 5 export markets once a week: 100 requests a week, about 433 a month. At the largest nearby page we measured, 140,495 bytes, that is about 60.8 MB a month. At $0.80/GB on Residential Basic that is 0.0608 GB x $0.80, about $0.05 a month. Doing the same in a rendered browser at about 685 KB a page would be about 297 MB, roughly $0.24, for no extra information.
Checking your own beer or brewery page from three countries once a day is 90 plain requests a month at about 162 KB, roughly 14.6 MB, or about $0.01. On Untappd the cost question is not bytes; it is whether the job is one the terms and the API allow.
If you need structured review data from platforms that offer it, our ../../web-scraping-api/ returns clean pages and bills only successful requests. For other rating networks, see our posts on ../tripadvisor-proxies/ and ../letterboxd-proxies/.