Untappd Scraper
Web scrape public Untappd pages into data classes.
Quickstart
User queries
from untappd_scraper.user import User
users = ["gregavola"]
for user_id in users:
user = User(user_id)
print(f"\n{user.name=}")
for checkin in user.activity():
print(f"\n\t{checkin.name=}\n\t\t{checkin}")
print("\n\nLists:")
for userlist in user.lists():
print(f"\n\t{userlist.name=} {userlist.num_items=}")
print("\n\nRecent Venues:")
for venue in user.venue_history():
ago = datetime.now().date() - venue.last_visit
print(
f"\n\t{venue.name=} {venue.last_visit.strftime('%b %d %Y')} "
+ f"({ago.days} days ago)"
)```
print("\n\nRecent Uniques:")
for beer in user.beer_history():
print(f"\t{beer}, {beer.total_checkins=}")
Venue queries
from untappd_scraper.venue import Venue
venue_ids = [
14705, # 4 pines
99967, # collaroy
]
for venue_id in venue_ids:
venue = Venue(venue_id)
print(f"\n{venue.name=}")
for num, checkin in enumerate(venue.activity(), start=1):
print(f"\n\t{num=}\t{checkin.name=}\n\t\t{checkin}")
# Load a venue by name. Try to be as unambiguous as possible
venue = Venue.from_name("hotel sweeney")
print(f"\n{venue.name=} {venue.verified=}\t{venue.categories=}\n")
print("\n".join([str(beer) for beer in venue.activity()]))
for menu in venue.menus():
print(f"\n{menu.selection=} / {menu.name=}")
print("\n\t\t", end="")
print("\n\t\t".join(str(beer) for beer in menu.beers))
Notes
untappd-scraper is just that - a scraper. It doesn't store data. So, for example,
if you query a user's unique beer history (with User.beer_history()) you will not
be able to see the entire history. Just what is public on the web, which is the most
recent 25 uniques.
Metadata
Release files for untappd-scraper 0.19.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| untappd_scraper-0.19.0.tar.gz | 379.4 kB | Without provenance | Details for untappd_scraper-0.19.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| untappd_scraper-0.19.0-py3-none-any.whl | Python 3 | none | any | Details for untappd_scraper-0.19.0-py3-none-any.whl |
Total release size: 415.8 kB
Release files / untappd_scraper-0.19.0.tar.gz
| Download URL | untappd_scraper-0.19.0.tar.gz |
|---|---|
| Size | 379.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7100365a11b2962cdb475b0004af3b8653fde609aa52e7487a9ec2c6db49467f
|
|
BLAKE2b-256 checksum How to use checksums |
334de6b45ef1722dc395871cf1deceb5d83354f7260fcc5a4cdae700d5a56b68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / untappd_scraper-0.19.0-py3-none-any.whl
| Download URL | untappd_scraper-0.19.0-py3-none-any.whl |
|---|---|
| Size | 36.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
21636e7b113d97ffaa7d65c59c28be7747ea4e950bd0e420f3650c440f294ffa
|
|
BLAKE2b-256 checksum How to use checksums |
45bb97afcadab78f0ff089ce13686e23107946dbd08e3f8a916e733110b36c43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for untappd-scraper 0.19.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.