{"id":21459922,"url":"https://github.com/juftin/yellowstone-camping","last_synced_at":"2025-07-15T02:31:54.462Z","repository":{"id":50504692,"uuid":"364710534","full_name":"juftin/yellowstone-camping","owner":"juftin","description":"Campsite Reservation Cancellation Finder (Yellowstone National Park)","archived":false,"fork":false,"pushed_at":"2021-05-25T01:02:48.000Z","size":20,"stargazers_count":10,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-01T16:21:11.208Z","etag":null,"topics":["camping","docker","national-parks","push-notifications","pushover","python","scraping","scraping-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juftin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-05T21:30:16.000Z","updated_at":"2024-04-02T02:32:30.000Z","dependencies_parsed_at":"2022-08-12T21:40:17.227Z","dependency_job_id":null,"html_url":"https://github.com/juftin/yellowstone-camping","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fyellowstone-camping","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fyellowstone-camping/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fyellowstone-camping/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fyellowstone-camping/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juftin","download_url":"https://codeload.github.com/juftin/yellowstone-camping/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226012177,"owners_count":17559630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["camping","docker","national-parks","push-notifications","pushover","python","scraping","scraping-api"],"created_at":"2024-11-23T06:37:08.612Z","updated_at":"2024-11-23T06:37:09.272Z","avatar_url":"https://github.com/juftin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://i.pinimg.com/originals/28/0f/f3/280ff34e4be0123c7eb383ad2d48958f.png\" width=\"230\" height=\"150\"  alt=\"yellowstone-camping logo\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/juftin/resume/master/resume/web/favicon.png\" width=\"150\" height=\"150\"  alt=\"juftin logo\"\u003e\n\u003c/p\u003e\n\n# yellowstone-camping\n\n## UPDATE:\n\n### [`yellowstone-camping` has been expanded and renamed to `camply`.](https://github.com/juftin/camply)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/juftin/camply/main/docs/static/camply.svg\" \n    width=\"200\" height=\"200\" alt=\"camply\"\u003e\n\u003c/p\u003e\n\nThe updated tool now interfaces with the Recreation.gov API as well, adding thousands of campgrounds\nacross the USA. Updated functionality, new camping and notification integrations, and a friendly command line \ninterface is available on `camply`, come join us there. The original codebase has been migrated to\nhttps://github.com/juftin/camply . The clone of the original `yellowtone-camping` source code will be preserved here\nat https://github.com/juftin/yellowstone-camping\n\n* * *\n* * *\n\n\n`yellowstone-camping` is a Campsite Reservation Cancellation Finder for Yellowstone National Park.\nThis simple Python application will continuously\ncheck [Yellowstone's Campground Availability](https://secure.yellowstonenationalparklodges.com/booking/lodging)\nAPI and let you know as soon as a reservation is available with a Push Notification on your Android\nor iOS device. Don't stress about finding a campsite in that booked out campground,\nlet `yellowstone-camping` do the work for you.\n\n## How to set up your campsite search\n\nMake a file called `yellowstone-camping.env` and place it at the root of this repository, you can\nuse the [example.yellowstone-camping.env](example.yellowstone-camping.env) file as a template. Once\nthe `yellowstone-camping.env` file is ready, fill out your lodging details and Pushover credentials:\n\n```shell\nexport BOOKING_DATE_START=\"2021-07-31\" # YELLOWSTONE ARRIVAL DATE (YYYY-MM-DD)\nexport NUMBER_OF_GUESTS=2 # NUMBER OF PEOPLE IN THE CAMPING RESERVATION\nexport NUMBER_OF_NIGHTS=1 # NUMBER OF NIGHTS IN THE CAMPING RESERVATION\nexport POLLING_INTERVAL=600 # HOW OFTER TO CHECK FOR NEW RESERVATIONS (IN SECONDS)\n\nexport PUSHOVER_PUSH_TOKEN=\"xxxxxxxxxxxxxxxxxxxxxxxx\" # PUSHOVER API TOKEN\nexport PUSHOVER_PUSH_USER=\"xxxxxxxxxxxxxxxxxxxxxxxx\" # PUSHOVER USER KEY\n```\n\n### Running with Docker\n\n```shell\n./scripts/check-yellowstone.sh\n```\n\nTo run the reservation search in a Docker container you'll run\nthe [check-yellowstone.sh](scripts/check-yellowstone.sh) file, this creates a docker container\ncalled `yellowstone-camping` that runs in the background. Automatically, the logs will be attached\nto the current session. Exiting the attached logs **does not** kill the search. Once the scraper has\nfound its first booking it will exit. Use `docker stop yellowstone-camping` to kill the container\nand stop searching or `docker logs -f yellowstone-camping` to reattach the container logs.\n\n### Running Locally with Python\n\nDon't work with Docker? No problem. The docker image is based on Python `3.8.X`, but any version of\nPython 3 you have locally should suffice. Source the `yellowstone-camping.env` file and run the\npython script (this requires the `requests` package to be installed):\n\n```shell\nsource yellowstone-camping.env \u0026\u0026 python scripts/find_availability.py\n```\n\n## How do I set up Pushover for Push Notifications to my phone?\n\nPushover is an neat service/app that allows you to easily send push notifications to your mobile\ndevice. More details on how to set up Pushover can be found on\ntheir [website](https://pushover.net/). **FYI**: Pushover is a paid service (a lifetime subscription\ncosts $5.00). However, if Pushover is not right for you then\nthe [source code](yellowstone_availability/check_yellowstone.py)\ncan be manually changed to use your preferred method of sending notifications. To bypass logging to\nPushover, just remove the variables, set them to empty, or leave them untouched; the script will\nsimply log `CRITICAL` events to the console when a campsite is available.\n\n* * *\n\n* * *\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n### *About this Project*\n\nMy partner and I are taking a trip this summer (July, 2021) from home in Colorado through Wyoming to\nGlacier National Park. Like all national parks right now, the campsites in Glacier are a hot\ncommodity and tough to come by.\n\nTo help us get an advantage in finding a site we signed up for\n[*Campnab*](https://campnab.com/), a service that lets you sign up for text notifications when\nbooked out campgrounds receive cancellations. Long story short, it's totally worth it and get's a\nbig recommendation from me. We found a 5 day cancellation and booked our first choice campground\nwithin a couple weeks of signing up.\n\nLater in our trip, we'll be going through Yellowstone and Grand Teton National Park. Unfortunately,\nCampnab doesn't (currently) work for most sites in Yellowstone, since they use a different booking\nprovider than the rest of the National Park System. Instead, I decided to play around with the\nbooking website with Chrome Developer tools, figure out the endpoints responses, and build my own\nintegration with their API. It's built in Python, runs in a docker container, and sends push\nnotifications through via [Pushover](https://pushover.net/).\n\nFeature Requests and Technical Feedback / Questions are best done though\nthe [Issues Page](https://github.com/juftin/yellowstone-camping/issues). Some basic command line\nskills and an always-on computer are required to run this.\n\nWe're still waiting for our Yellowstone spot as of writing this and can't wait to get back there\nthis summer. I hope `yellowstone-camping` is useful for someone out there, good luck hunting for\nyour next spot!\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n###### Cool stuff happens in Denver, CO [\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/Flag_of_Denver%2C_Colorado.svg/800px-Flag_of_Denver%2C_Colorado.svg.png\" width=\"25\" alt=\"Denver\"\u003e](https://denver-devs.slack.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Fyellowstone-camping","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuftin%2Fyellowstone-camping","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Fyellowstone-camping/lists"}