Untappd Beer Review Scraper
Pricing
from $0.04 / 1,000 saved beers
Untappd Beer Review Scraper
Collect public beer profiles from Untappd top-rated lists, beer or brewery URLs, beer IDs, and search terms. Save ratings, ABV, IBU, brewery details, source URLs, and visible public check-ins in one dataset row per beer. Missing scalar fields stay null.
Pricing
from $0.04 / 1,000 saved beers
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
8 days ago
Last modified
Share
🍺 Untappd beer review data for brewery research
Breweries, beer distributors, market researchers, and bar or bottle-shop teams can collect public Untappd beer profiles in one structured Apify dataset. Each saved row contains beer identity, brewery details, ratings, ABV, IBU, check-in totals, source links, and visible public check-ins when Untappd shows them. This gives you structured beer data for research, review monitoring, and planning without copying fields from public pages by hand.
This Untappd scraper is useful for brewery research, beer market analysis, review monitoring, bar or bottle-shop planning, content research, and repeatable beer datasets.
- Build an Untappd Beer Database from public beer pages, brewery pages, IDs, and search terms.
- Collect visible public check-ins with the Untappd Checkin Scraper.
- Use Untappd Beer Ratings to compare public beer ratings.
- Collect a brewery's public beer list with the Untappd Brewery Scraper.
- Save a public beer profile with the Untappd Beer Scraper.
- Use the Untappd Scraper for a general public beer collection.
📊 Beer profiles and visible check-ins
Each dataset row is one public beer. A row can include its name, Untappd links, brewery, style, ABV, IBU, rating, rating count, total check-ins, description, label image, and source rank. Public check-ins are nested in the checkins array, so beer details and check-in context stay together.
The output is built around beer rows, not separate check-in rows. That keeps exports easy to join with beer metadata while still giving you recent public check-in context when Untappd exposes it.
Public source data
The Actor keeps values grounded in what Untappd shows. Missing scalar values are returned as null, and checkins is an empty array when no public check-ins are shown. The Actor does not promise a complete historical check-in archive for every beer.
🚀 Collect public Untappd beer data
- Leave
targetsempty for top-rated discovery, or add public beer URLs, brewery URLs, beer IDs, and search terms. - Set
beerStylewhen you want to narrow top-rated discovery to a public Untappd style. - Set
maxRecordsto the number of beer rows you want. Leave it empty to collect all available rows until the source is exhausted. - Start the Actor and open the dataset in Apify Console.
For a quick first run, use one target or a small maxRecords value such as 25. After you review the row shape, add more targets or raise the limit.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
targets | array of strings | Mix public beer URLs, brewery URLs, beer IDs, and search terms. Leave it empty for top-rated beer discovery. |
beerStyle | string | Narrows top-rated discovery to a public Untappd beer style, such as IPA - Imperial / Double. |
maxRecords | integer | Optional limit for saved beer rows across all targets. Leave it empty to collect all available rows until the source is exhausted. |
Target examples
- Beer URL such as
https://untappd.com/b/the-alchemist-heady-topper/4691 - Brewery URL such as
https://untappd.com/w/sierra-nevada-brewing-co/1142 - Beer ID such as
4691 - Search term such as
Pliny the Elder
Example input
This is the public input from a successful default-input run:
{"targets": ["https://untappd.com/b/the-alchemist-heady-topper/4691","https://untappd.com/w/sierra-nevada-brewing-co/1142","Pliny the Elder","Bud Light","Guinness Draught"],"beerStyle": "","maxRecords": 100}
You can submit up to 1,000 target entries in one run.
🧾 Output
Beer row fields
| Field | Type | What it does |
|---|---|---|
beerId | string | Stable Untappd ID for the beer. |
beerUrl | string | Public Untappd page for the beer. |
beerName | string | Beer name shown on Untappd. |
breweryName | string or null | Brewery name shown on Untappd, when available. |
breweryUrl | string or null | Public Untappd page for the brewery, when available. |
beerStyle | string or null | Beer style shown on Untappd, when available. |
abvPercent | number or null | Alcohol by volume as a percent, when available. |
ibu | integer or null | Bitterness value in IBU, when available. |
globalRating | number or null | Untappd beer rating from 0 to 5, when available. |
ratingCount | integer or null | Number of ratings used for the beer rating, when available. |
totalCheckins | integer or null | Total check-ins as a whole number, when available. |
totalCheckinsText | string or null | Check-in count as shown by Untappd, including text such as K, M, or +. |
description | string or null | Public beer description from Untappd, when available. |
imageUrl | string or null | Public URL for the beer label image, when available. |
sourceRank | integer or null | Position in a top-rated, search, or brewery list. It is null for direct beer targets. |
checkins | array of objects | Public check-ins found for the beer. It is empty when none are shown. |
checkins[].checkinId | string | Stable Untappd ID for the check-in. |
checkins[].checkinUrl | string | Public Untappd page for the check-in. |
checkins[].checkinDate | string or null | Date or time shown for the check-in, when available. |
checkins[].userName | string or null | User name shown for the check-in, when available. |
checkins[].userSlug | string or null | Untappd user name slug, when available. |
checkins[].userProfileUrl | string or null | Public Untappd page for the user, when available. |
checkins[].userAvatarUrl | string or null | Public URL for the user's avatar, when available. |
checkins[].rating | number or null | Check-in rating from 0 to 5, when available. |
checkins[].comment | string or null | Public text in the check-in, when available. |
checkins[].servingStyle | string or null | Serving style such as Draft, Can, or Bottle, when available. |
checkins[].venueName | string or null | Venue name on the check-in, when available. |
checkins[].venueUrl | string or null | Public Untappd page for the venue, when available. |
checkins[].purchasedFrom | string or null | Place where the beer was bought, when shown. |
checkins[].photoUrls | array of strings | Public photo URLs attached to the check-in. |
Example beer row
This genuine row from a successful current-beta run is shortened. It keeps one real public check-in and uses the JSON string "..." to mark the omitted check-ins.
{"beerId": "6674918","beerUrl": "https://untappd.com/b/sierra-nevada-brewing-co-hoptimum-2026/6674918","beerName": "Hoptimum (2026)","breweryName": "Sierra Nevada Brewing Co.","breweryUrl": "https://untappd.com/SierraNevada","beerStyle": "IPA - Triple","abvPercent": 11,"ibu": 75,"globalRating": 4.1375,"ratingCount": 1484,"totalCheckins": 1860,"totalCheckinsText": "1,860","description": "Fancy seeing me here! After all, the place can hardly hold 11% — I’m scraping the rafters. Makes for a good view, and it’s clear when a room needs what I’ve got in spades: fruity, dank, and devilishly hoppy flavor. Your night is looking up. Savor it and don’t blink because I like to vanish in a puff of lupulin dust. Show Less","imageUrl": "https://assets.untappd.com/site/beer_logos/beer-11810_1c68a_sm.jpeg","sourceRank": 4,"checkins": [{"checkinId": "1593590563","checkinUrl": "https://untappd.com/user/cdyde/checkin/1593590563","checkinDate": "Wed, 12 Aug 2026 23:34:02 +0000","userName": "Chris Yde","userSlug": "cdyde","userProfileUrl": "https://untappd.com/user/cdyde","userAvatarUrl": "https://assets.untappd.com/profile/73b9a41deefd0a0d0f08e6b7f1f5a893_100x100.jpg","rating": 4,"comment": null,"servingStyle": "Taster","venueName": "Lowes Foods #214 - Morehead City","venueUrl": "https://untappd.com/v/lowes-foods-214-morehead-city/2721997","purchasedFrom": "Lowes Foods #214 - Morehead City","photoUrls": ["https://images.untp.beer/crop?width=640&height=640&stripmeta=true&url=https://untappd.s3.amazonaws.com/photos/2026_08_12/f7935f691c9b4669af97d8a12f36cf70_c_1593590563_raw.jpg"]},"..."]}
💳 Pricing
Saved beer
The Actor uses pay-per-event pricing and charges for each public beer saved to the dataset. The tiered price is $0.000075 to $0.000018 per saved beer across Apify plans. Visible public check-ins stay inside that beer row and are not charged as separate rows.
Start with a small maxRecords value if you want to review a small dataset first.
🔌 Integrations
Apify workflow
Open the dataset in Apify Console, read it through the Apify API, schedule repeat runs, or use webhooks and available Apify integrations. You can export the dataset in the formats offered by Apify.
You can export results as JSON, CSV, Excel, XML, RSS, or HTML when those formats are offered by Apify.
❓ FAQ
Do I need an Untappd account or API key?
No. The Actor reads public Untappd pages and does not ask for an Untappd account, cookies, passwords, login details, or an API key. It does not scrape private, friends-only, logged-in-only, or account-specific data.
What happens when I leave targets empty?
The Actor uses top-rated beer discovery. Add beerStyle if you want to narrow that discovery to a public Untappd style, such as IPA - Imperial / Double, Stout - Imperial / Double, or Sour - Fruited.
Can I mix beer URLs, brewery URLs, beer IDs, and search terms?
Yes. Add them together in targets. The Actor uses each value to find public beer data.
Are check-ins separate dataset rows?
No. The dataset saves one row per beer. Visible public check-ins are nested in the checkins array inside that beer row.
Why is a field null or a check-ins list empty?
Untappd may not show every field on every public page. The Actor keeps available values, uses null for missing scalar values, and uses an empty array when no check-ins are shown.
Can I collect beers from a brewery page?
Yes. Add a public Untappd brewery URL to targets. The Actor discovers public beer links from that page and saves beer rows until it reaches your limit or the source is exhausted.
Does this return every historical check-in for a beer?
No. It returns the visible public check-ins that Untappd exposes on the collected beer page. It does not promise a complete historical archive.
Why can a run return fewer beers than my limit?
Public source pages may show fewer beers, omit fields, or expose no usable data. The Actor saves available beer rows and does not guarantee a result count.
How can I keep a first run small?
Set maxRecords to a small positive number such as 25, then review the dataset before raising the limit or adding more targets.
📝 Changelog
v0.1
- Simplified the input form.
- Included visible public check-ins by default.
- Lowered saved-beer pricing.
v0.0
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- Google Maps List Scraper: 30+ Fields Per Place: Build a public list of breweries, bars, or bottle shops with place details.
- Untappd Scraper - Beer Ratings & Check-ins: Compare public beer ratings, styles, and check-in counts.
- Untappd Scraper: Collect public beer and brewery fields from search terms and beer URLs.
- Untappd Beer Review Scraper: Collect public beer check-ins with reviewer and venue context.
- Untappd Beer Review Scraper: Review public check-in ratings, comments, and serving details.
Made with ❤️ by Maxime Dupré