# Untappd Venues Scraper — Bars, Breweries & Drink Menus (`yugenox/untappd-venues-scraper`) Actor

Scrape Untappd venues — bars, breweries, taprooms, bottle shops: name, categories, address, coordinates, phone, website, social links, opening hours, verified status, check-in stats and the full drink menu (beer, style, ABV, IBU, brewery, rating, prices). No login.

- **URL**: https://apify.com/yugenox/untappd-venues-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Categories:** Travel, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 venues

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Untappd Venues Scraper: bars, breweries and drink menus

Scrape **Untappd venues** — bars, breweries, taprooms, beer shops and restaurants — with their **full drink menu**. Each venue comes with its **name, categories, address, coordinates, phone, website, social links, opening hours, payment types, features (kegs, cocktails, outdoor seating, pet friendly…), verified status and check-in stats**, plus every beer on the menu with **style, ABV, IBU, brewery, rating, serving sizes and prices** when the venue publishes them. Find venues by URL or ID, by Untappd's own search, or take Untappd's **most popular venues** worldwide. No login, no cookies, no Untappd account.

### What you get

| | |
|---|---|
| **Venue** | Untappd venue ID, name, URL, categories, verified by the owner or not, logo |
| **Location** | Street address, city, state, country (when Untappd shows it), latitude/longitude |
| **Contact** | Phone, website, Twitter / X, Facebook, Instagram, Yelp and Foursquare links |
| **Opening hours** | Every day, with open/close times (24-hour) |
| **Details** | Payment types and features such as Kegs, Nitro, Cocktails, Food Served, Outdoor Seating, Pet Friendly |
| **Stats** | Total check-ins, unique visitors and check-ins in the last 4 weeks (verified venues) |
| **Drink menu** | Menu name, last update, sections, and every drink: name, style, ABV, IBU, brewery, Untappd rating, label, serving sizes, prices and tags |
| **Unverified venues** | Their 3 most popular drinks and up to 5 nearby verified venues |

### How to use it

1. Paste **venue URLs or IDs**, e.g. `https://untappd.com/v/other-half-brewing-co/1360488` or `1360488`.
2. Or add **searches**, e.g. `Half Acre Chicago`, `Mikkeller Copenhagen`. Each search returns up to 5 venues — the ones Untappd shows a logged-out visitor — so make it specific.
3. Or set **Most popular venues** to get Untappd's top venues worldwide, in Untappd's order.
4. Set **Max venues** and run.

#### Input examples

Drink menus of specific venues:

```json
{
  "venueUrls": [
    "https://untappd.com/v/other-half-brewing-co/1360488",
    "https://untappd.com/v/tree-house-brewing-co/5045090"
  ]
}
```

Find venues by name and city:

```json
{
  "searchQueries": ["Half Acre Chicago", "Mikkeller Copenhagen", "Cloudwater Manchester"],
  "maxItems": 15
}
```

The 500 most popular venues that publish their menu:

```json
{
  "topVenues": 500,
  "verifiedOnly": true,
  "maxItems": 500
}
```

### Output example

```json
{
  "venueId": "5045090",
  "name": "Tree House Brewing Co.",
  "url": "https://untappd.com/v/tree-house-brewing-co/5045090",
  "verified": true,
  "categories": [
    "Brewery"
  ],
  "address": "129 Sturbridge Rd",
  "city": "Charlton",
  "state": "MA",
  "fullAddress": "129 Sturbridge Rd Charlton, MA",
  "latitude": 42.139492,
  "longitude": -72.0166321,
  "phone": "(413) 523-2367",
  "website": "https://www.treehousebrew.com/",
  "twitter": "https://twitter.com/treehousebrewco",
  "yelp": "https://yelp.com/biz/tree-house-brewing-company-charlton-2",
  "hours": [
    {
      "day": "Monday",
      "open": true,
      "is24Hours": false,
      "hours": [
        {
          "from": "11:00",
          "to": "20:00"
        }
      ]
    }
  ],
  "paymentTypes": [
    "Visa",
    "Master Card",
    "American Express",
    "Discover",
    "Check",
    "Cash",
    "Apple Pay",
    "Google Pay"
  ],
  "features": [
    "Food Served",
    "Kegs",
    "Nitro",
    "Cocktails",
    "Outdoor Seating",
    "Pet Friendly",
    "Child Friendly"
  ],
  "checkinsTotal": 1650000,
  "uniqueVisitors": 71536,
  "checkinsMonthly": 6211,
  "menuName": "Main Bar Drafts",
  "menuUpdatedAt": "2026-10-01T21:49:10.880Z",
  "menuSections": [
    {
      "name": "IPA",
      "description": null,
      "itemCount": 14,
      "itemsListed": 14
    },
    {
      "name": "Stouts",
      "description": null,
      "itemCount": 7,
      "itemsListed": 7
    },
    {
      "name": "Traditional and Specialty Styles",
      "description": null,
      "itemCount": 3,
      "itemsListed": 3
    }
  ],
  "menu": [
    {
      "section": "IPA",
      "name": "Green Marshmallow",
      "style": "IPA - New England / Hazy",
      "abv": 7.6,
      "ibu": null,
      "brewery": "Tree House Brewing Company",
      "breweryUrl": "https://untappd.com/treehousebrewco",
      "rating": 4.28,
      "beerId": "4770755",
      "url": "https://untappd.com/b/tree-house-brewing-company-green-marshmallow/4770755",
      "labelUrl": "https://labels.untappd.com/4770755",
      "prices": [],
      "servingTypes": [
        "12oz Draft"
      ],
      "tags": []
    }
  ],
  "menuItemCount": 24,
  "source": "top",
  "position": 2,
  "scrapedAt": "2026-10-01T23:26:04.376Z"
}
```

`menu` is shortened here; it holds every drink on the menu (Tree House had 24, some beer shops have over 1,800). Every row has the same columns; a value Untappd doesn't show is `null`.

### Use cases

- **Beer distribution and brewery sales**: see which bars and shops pour which beers, styles and breweries, and where your beers are (or aren't) on tap.
- **Lead lists**: bars, taprooms and bottle shops with address, phone, website, hours and social links.
- **Menu and price monitoring**: schedule a run on your venue list and track tap list changes and prices over time.
- **Market research**: styles, ABV ranges and breweries carried by the most popular venues.
- **Apps and maps**: venue directories with coordinates, hours and live menus.

### FAQ

**Do I need an Untappd account, cookies or a login?** No. The scraper reads the same public pages a logged-out visitor sees. It never logs in and needs nothing from you except venue URLs, searches or a number.

**Why does a search return at most 5 venues?** That's what Untappd's search shows a visitor who isn't signed in. The scraper respects that limit and never asks for more. Make searches specific — add the city or the venue's full name — or paste venue URLs.

**Why do some venues have no menu, hours or stats?** Only venues verified by their owner (on Untappd for Business) publish their menu and hours, and Untappd shows the check-in stats of unverified venues only to signed-in users. For unverified venues you get the address, contact links, the 3 most popular drinks and nearby verified venues. Turn on **Verified venues only** to keep just the venues with menus.

**Why is the country sometimes empty?** Untappd's venue pages show the country only for unverified venues; search results always have it. City and state are always there.

**Does it scrape check-ins, reviews or users?** No. It never collects check-ins, user names, photos, comments or "loyal patrons" — only data about the venue itself. Venues that are private homes are skipped.

**How fast is it?** About 2 venues per second. Venues with very large menus (some online beer shops list over 1,800 drinks) take a few seconds each.

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If Untappd refuses datacenter IPs for a while, the run switches to residential proxies when your account has them, and carries on without them when it doesn't.

**What does a run cost?** You pay per venue saved, per search, and a small fee per run. See the Pricing tab. Venues Untappd doesn't have are never charged, nor are private homes. With **Verified venues only**, unverified search results are left out for free; a venue from your URL list or the most-popular list has to be opened to know whether it's verified, so each one left out costs one search event instead of a venue.

**Is it legal to scrape Untappd?** This Actor only collects publicly available data: venue pages that anyone can see on Untappd without an account, such as a bar's name, address, opening hours, contact links and drink menu. Collecting publicly available data is generally legal, but you're responsible for how you use it. Bars, breweries and shops are businesses; the scraper doesn't collect check-ins, user profiles, photos or anything about individual Untappd users, and it skips venues that are private homes. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as Untappd's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages Untappd shows to any visitor without logging in. It never uses a login, never touches user accounts, and follows the site's robots.txt.

This Actor is not affiliated with, endorsed by or sponsored by Untappd.

# Actor input Schema

## `venueUrls` (type: `array`):

Untappd venue pages, e.g. https://untappd.com/v/other-half-brewing-co/1360488, or just the venue ID (1360488).

## `searchQueries` (type: `array`):

Venue names, optionally with the city, e.g. "Half Acre Chicago", "Mikkeller Copenhagen". Untappd shows logged-out visitors the top 5 venues per search, so each search returns up to 5 venues — be specific.

## `topVenues` (type: `integer`):

Also scrape this many of Untappd’s most popular venues worldwide, in Untappd’s order (0 = none).

## `topVenuesOffset` (type: `integer`):

Skip this many of the most popular venues first, e.g. 1000 to continue after an earlier run of 1,000.

## `maxItems` (type: `integer`):

Maximum number of venues for the whole run, shared fairly between your inputs. 0 = everything.

## `includeMenu` (type: `boolean`):

Verified venues publish their drink menu on Untappd: every beer with style, ABV, IBU, brewery, rating, prices and serving sizes. Turn off for smaller rows (the item count stays).

## `verifiedOnly` (type: `boolean`):

Only keep venues verified by their owner (the ones that publish menus and hours). Search results are filtered for free; a venue from your URLs or the most-popular list has to be opened to know, so each one left out is charged as one search event, not as a venue.

## `includeNearby` (type: `boolean`):

Untappd lists up to 5 nearby verified venues on each unverified venue page. Turn on to scrape those too (one level deep; they count toward Max venues).

## `proxyConfiguration` (type: `object`):

Apify Proxy (datacenter) is the default and comes with every Apify plan. If Untappd refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "venueUrls": [
    "https://untappd.com/v/other-half-brewing-co/1360488"
  ],
  "searchQueries": [
    "Half Acre Chicago"
  ],
  "topVenues": 0,
  "topVenuesOffset": 0,
  "maxItems": 10,
  "includeMenu": true,
  "verifiedOnly": false,
  "includeNearby": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped venues.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests and proxy use.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "venueUrls": [
        "https://untappd.com/v/other-half-brewing-co/1360488"
    ],
    "searchQueries": [
        "Half Acre Chicago"
    ],
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/untappd-venues-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "venueUrls": ["https://untappd.com/v/other-half-brewing-co/1360488"],
    "searchQueries": ["Half Acre Chicago"],
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/untappd-venues-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "venueUrls": [
    "https://untappd.com/v/other-half-brewing-co/1360488"
  ],
  "searchQueries": [
    "Half Acre Chicago"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/untappd-venues-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/untappd-venues-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MRGUQDjmgsCyOL32F/builds/L5lbqiyLgM3zTxCgv/openapi.json
