{"id":21459961,"url":"https://github.com/juftin/camply","last_synced_at":"2026-02-03T06:05:53.582Z","repository":{"id":37814735,"uuid":"359016087","full_name":"juftin/camply","owner":"juftin","description":"camply, the campsite finder ⛺️ - a tool to find campsites at sold out campgrounds through sites like recreation.gov","archived":false,"fork":false,"pushed_at":"2026-01-22T06:11:34.000Z","size":37867,"stargazers_count":565,"open_issues_count":39,"forks_count":119,"subscribers_count":23,"default_branch":"main","last_synced_at":"2026-01-22T20:40:24.675Z","etag":null,"topics":["camping","goingtocamp","national-parks","notifications","outdoors","python","recreation","recreation-gov","reservations","reservecalifornia","state-parks","yellowstone"],"latest_commit_sha":null,"homepage":"https://juftin.com/camply/","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":"docs/contributing.md","funding":".github/FUNDING.yaml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"juftin","custom":["https://www.buymeacoffee.com/juftin"]}},"created_at":"2021-04-18T01:07:59.000Z","updated_at":"2026-01-21T23:51:47.000Z","dependencies_parsed_at":"2022-07-09T06:46:06.041Z","dependency_job_id":"2a893a30-d024-49ef-9bed-5df9cfbd04fd","html_url":"https://github.com/juftin/camply","commit_stats":{"total_commits":238,"total_committers":18,"mean_commits":"13.222222222222221","dds":0.4327731092436975,"last_synced_commit":"e0a7ab5ab84c92977d949c8862772f60cdfe83c3"},"previous_names":[],"tags_count":102,"template":false,"template_full_name":null,"purl":"pkg:github/juftin/camply","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fcamply","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fcamply/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fcamply/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fcamply/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juftin","download_url":"https://codeload.github.com/juftin/camply/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juftin%2Fcamply/sbom","scorecard":{"id":540927,"data":{"date":"2025-08-11","repo":{"name":"github.com/juftin/camply","commit":"77113bc840cd41fffb79c49163b4e8143329fab1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Maintained","score":1,"reason":"0 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":1,"reason":"Found 5/30 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yaml:13","Warn: no topLevel permission defined: .github/workflows/docker.yaml:1","Warn: no topLevel permission defined: .github/workflows/labeler.yaml:1","Warn: no topLevel permission defined: .github/workflows/lint.yaml:1","Warn: no topLevel permission defined: .github/workflows/publish.yaml:1","Warn: no topLevel permission defined: .github/workflows/release.yaml:1","Warn: no topLevel permission defined: .github/workflows/tests.yaml:1"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.32.9 not signed: https://api.github.com/repos/juftin/camply/releases/188833399","Warn: release artifact v0.32.8 not signed: https://api.github.com/repos/juftin/camply/releases/167875881","Warn: release artifact v0.32.7 not signed: https://api.github.com/repos/juftin/camply/releases/157716933","Warn: release artifact v0.32.6 not signed: https://api.github.com/repos/juftin/camply/releases/153688520","Warn: release artifact v0.32.5 not signed: https://api.github.com/repos/juftin/camply/releases/153369106","Warn: release artifact v0.32.9 does not have provenance: https://api.github.com/repos/juftin/camply/releases/188833399","Warn: release artifact v0.32.8 does not have provenance: https://api.github.com/repos/juftin/camply/releases/167875881","Warn: release artifact v0.32.7 does not have provenance: https://api.github.com/repos/juftin/camply/releases/157716933","Warn: release artifact v0.32.6 does not have provenance: https://api.github.com/repos/juftin/camply/releases/153688520","Warn: release artifact v0.32.5 does not have provenance: https://api.github.com/repos/juftin/camply/releases/153369106"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/docker.yaml:15"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker.yaml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/docker.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/docker.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/docker.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/docker.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/docker.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/labeler.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/labeler.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/lint.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/lint.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yaml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yaml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yaml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yaml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yaml:58: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yaml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yaml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/publish.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/tests.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/juftin/camply/tests.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:9e885f8239c31f8429448f933638dd13037c9119e2a362aeebdd37ec3bee7c85","Warn: pipCommand not pinned by hash: Dockerfile:7","Warn: pipCommand not pinned by hash: Dockerfile:13-14","Warn: pipCommand not pinned by hash: .github/workflows/docker.yaml:32","Warn: pipCommand not pinned by hash: .github/workflows/docker.yaml:33","Warn: pipCommand not pinned by hash: .github/workflows/lint.yaml:23","Warn: pipCommand not pinned by hash: .github/workflows/lint.yaml:24","Warn: pipCommand not pinned by hash: .github/workflows/publish.yaml:30","Warn: pipCommand not pinned by hash: .github/workflows/publish.yaml:31","Warn: pipCommand not pinned by hash: .github/workflows/publish.yaml:54","Warn: pipCommand not pinned by hash: .github/workflows/publish.yaml:55","Warn: pipCommand not pinned by hash: .github/workflows/release.yaml:30","Warn: pipCommand not pinned by hash: .github/workflows/release.yaml:31","Warn: pipCommand not pinned by hash: .github/workflows/release.yaml:65","Warn: pipCommand not pinned by hash: .github/workflows/release.yaml:66","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:48","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:49","Info:   0 out of  19 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of  16 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":0,"reason":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h5c3-5r3r-rr8q","Warn: Project is vulnerable to: GHSA-rmvr-2pp2-xj38","Warn: Project is vulnerable to: GHSA-xx4v-prfh-6cgc","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-78xj-cgh5-2h22","Warn: Project is vulnerable to: GHSA-2p57-rm9w-gvfp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: PYSEC-2024-230 / GHSA-248v-346w-9cwc","Warn: Project is vulnerable to: PYSEC-2024-60 / GHSA-jjg7-2v4v-x38h","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: GHSA-34jh-p97f-mpxf","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v","Warn: Project is vulnerable to: GHSA-jfmj-5v4g-7637","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-gmj6-6f8f-6699","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T08:11:44.470Z","repository_id":37814735,"created_at":"2025-08-20T08:11:44.471Z","updated_at":"2025-08-20T08:11:44.471Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29035416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T02:28:16.591Z","status":"ssl_error","status_checked_at":"2026-02-03T02:27:48.904Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","goingtocamp","national-parks","notifications","outdoors","python","recreation","recreation-gov","reservations","reservecalifornia","state-parks","yellowstone"],"created_at":"2024-11-23T06:37:21.929Z","updated_at":"2026-02-03T06:05:53.574Z","avatar_url":"https://github.com/juftin.png","language":"Python","funding_links":["https://github.com/sponsors/juftin","https://www.buymeacoffee.com/juftin"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://github.com/juftin/camply\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/juftin/camply/main/docs/_static/camply.svg\"\n    width=\"400\" height=\"400\" alt=\"camply\"\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\n**`camply`**, the campsite finder ⛺️, is a tool to help you book a campsite online. Finding\nreservations at sold out campgrounds can be tough. That's where camply comes in. It searches\nthousands of campgrounds across the ~~USA~~ world via the APIs of booking services like\n[recreation.gov](https://recreation.gov). It continuously checks for cancellations and\navailabilities to pop up - once a campsite becomes available, camply sends you a notification\nto book your spot!\n\n---\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/juftin/camply\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/camply?color=blue\u0026label=camply\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/camply/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/camply\" alt=\"PyPI - Python Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/juftin/camply\"\u003e\u003cimg src=\"https://img.shields.io/docker/v/juftin/camply?color=blue\u0026label=docker\u0026logo=docker\" alt=\"Docker Image Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/juftin/camply/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/juftin/camply?color=blue\u0026label=License\" alt=\"GitHub License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/juftin/camply/actions/workflows/test.yaml?query=branch%3Amain\"\u003e\u003cimg src=\"https://github.com/juftin/camply/actions/workflows/test.yaml/badge.svg?branch=main\" alt=\"Testing Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/go-task/task\"\u003e\u003cimg src=\"https://img.shields.io/badge/task---?message=task\u0026logo=task\u0026color=teal\u0026labelColor=grey\" alt=\"task\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/astral-sh/uv\"\u003e\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json\" alt=\"uv\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/pre-commit/pre-commit\"\u003e\u003cimg src=\"https://img.shields.io/badge/pre--commit-enabled-lightgreen?logo=pre-commit\" alt=\"pre-commit\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://juftin.github.io/camply/\"\u003e\u003cimg src=\"https://img.shields.io/static/v1?message=docs\u0026color=526CFE\u0026logo=Material+for+MkDocs\u0026logoColor=FFFFFF\u0026label=\" alt=\"docs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/semantic-release/semantic-release\"\u003e\u003cimg src=\"https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\" alt=\"semantic-release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://gitmoji.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67.svg\" alt=\"Gitmoji\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## [Check Out The Docs](https://juftin.com/camply/)\n\n## Installing\n\nInstall camply via `pip` or [pipx](https://github.com/pypa/pipx):\n\n```commandline\npipx install camply\n```\n\n## Usage\n\nSearch for a specific recreation area (recreation areas contain campgrounds):\n\n```commandline\ncamply recreation-areas --search \"Glacier National Park\"\n```\n\nSearch for campgrounds (campgrounds contain campsites):\n\n```commandline\ncamply campgrounds --search \"Fire Lookout Towers\" --state CA\n```\n\nSearch for available campsites, get a notification whenever one becomes\navailable, and continue searching after the first one is found. The below command\nis using `silent` notifications as an example but camply also supports `Email`,\n`Slack`, `Twilio` (SMS), `Pushover`, `Pushbullet`, `Ntfy`, `Apprise`, `Telegram`,\nand `Webhook`.\n\n```commandline\ncamply campsites \\\n    --rec-area 2725 \\\n    --start-date 2023-07-10 \\\n    --end-date 2023-07-18 \\\n    --notifications silent \\\n    --search-forever\n```\n\n## Providers\n\ncamply works with a number of providers. A \"provider\" is an online booking\nservice that lists camping and recreation inventory.\n\n- **`RecreationDotGov`**: Searches on [Recreation.gov](https://recreation.gov) for Campsites (default provider)\n- **`Yellowstone`**: Searches on [YellowstoneNationalParkLodges.com](https://yellowstonenationalparklodges.com) for\n  Campsites\n- **`ReserveCalifornia`**: Searches on [ReserveCalifornia.com](https://reservecalifornia.com) for Campsites (California\n  State Parks)\n- **`GoingToCamp`**: Searches on [GoingToCamp](https://goingtocamp.com) for Campsites\n    - Parks Canada - Canada National Parks - [reservation.pc.gc.ca](https://reservation.pc.gc.ca/)\n    - Washington State Parks - Washington, USA - [washington.goingtocamp.com](https://washington.goingtocamp.com)\n    - Wisconsin State Parks - Wisconsin, USA - [wisconsin.goingtocamp.com](https://wisconsin.goingtocamp.com)\n    - Michigan State Parks - Michigan, USA - [midnrreservations.com](https://midnrreservations.com/)\n    - BC Parks - British Columbia, CA - [camping.bcparks.ca](https://camping.bcparks.ca)\n    - Maryland State Parks - Maryland, USA - [parkreservations.maryland.gov](https://parkreservations.maryland.gov)\n    - Nova Scotia Parks - Nova Scotia, CA - [novascotia.goingtocamp.com](https://novascotia.goingtocamp.com)\n    - Manitoba Parks - Manitoba, CA - [manitoba.goingtocamp.com](https://manitoba.goingtocamp.com)\n    - New Brunswick Provincial Parks - New Brunswick, CA - [parcsnbparks.info](https://www.parcsnbparks.info/)\n    - Newfoundland \u0026 Labrador Provincial Parks - Newfoundland and Labrador, CA - [nlcamping.ca](https://nlcamping.ca)\n    - Long Point Region - Ontario, CA - [longpoint.goingtocamp.com](https://longpoint.goingtocamp.com)\n    - Algonquin Highlands - Ontario, CA - [ahtrails.ca](https://ahtrails.ca)\n    - Maitland Valley, Ontario, CA - [maitlandvalley.goingtocamp.com](https://maitlandvalley.goingtocamp.com)\n    - Saugeen Valley - Ontario, CA - [saugeen.goingtocamp.com](https://saugeen.goingtocamp.com)\n    - St. Clair Region - Ontario, CA - [stclair.goingtocamp.com](https://stclair.goingtocamp.com)\n    - Tacoma Power Parks, Washington, USA - [tacomapower.goingtocamp.com](https://tacomapower.goingtocamp.com)\n    - Gatineau Park - Ontario-Quebec, CA - [reservations.ncc-ccn.gc.ca](https://reservations.ncc-ccn.gc.ca)\n- **`AlabamaStateParks`**: Searches on [ReserveAlaPark.com](https://reservealapark.com) for Campsites\n- **`ArizonaStateParks`**: Searches on [AZStateParks.com](https://azstateparks.com) for Campsites\n- **`FloridaStateParks`**: Searches on [FloridaStateParks.org](https://www.reserve.floridastateparks.org) for Campsites\n- **`MinnesotaStateParks`**: Searches on [ReserveMN.usedirect.com](https://reservemn.usedirect.com) for Campsites\n- **`MissouriStateParks`**: Searches on [icampmo1.usedirect.com](https://icampmo1.usedirect.com) for Campsites\n- **`OhioStateParks`**: Searches on [ReserveOhio.com](https://reserveohio.com) for Campsites\n- **`VirginiaStateParks`**: Searches on [ReserveVAParks.com](https://reservevaparks.com) for Campsites\n- **`NorthernTerritory`**: Searches the [Australian Northern Territory](https://parkbookings.nt.gov.au) for Campsites\n- **`FairfaxCountyParks`**: Searches on [fairfax.usedirect.com](https://fairfax.usedirect.com) for Campsites (Virginia)\n- **`MaricopaCountyParks`**: Searches on [MaricopaCountyParks.org](https://maricopacountyparks.org) for Campsites (Arizona)\n- **`OregonMetro`**: Searches on [OregonMetro.gov](https://oregonmetro.gov) for Campsites (Portland Metro)\n- **`RecreationDotGovTicket`**: Searches on [Recreation.gov](https://recreation.gov) for Tickets and Tours\n- **`RecreationDotGovTimedEntry`**: Searches on [Recreation.gov](https://recreation.gov) for Timed Entries\n\nRun **`camply providers`** to list current providers and visit the [Providers](https://juftin.com/camply/providers/)\nsection in the docs to learn more.\n\n## Documentation\n\nHead over to the [camply documentation](https://juftin.com/camply/) to see what you can do!\n\n```console\n❯ camply --help\n\n Usage: camply [OPTIONS] COMMAND [ARGS]...\n\n Welcome to camply, the campsite finder.\n Finding reservations at sold out campgrounds can be tough. That's where camply comes in. It searches the\n APIs of booking services like https://recreation.gov (which indexes thousands of campgrounds across the\n USA) to continuously check for cancellations and availabilities to pop up. Once a campsite becomes\n available, camply sends you a notification to book your spot!\n\n\n visit the camply documentation at https://juftin.com/camply\n\n╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                        │\n│  --debug/--no-debug             Enable extra debugging output                                          │\n│  --provider              TEXT   Camping Search Provider. Defaults to 'RecreationDotGov'                │\n│  --version                      Show the version and exit.                                             │\n│  --help                         Show this message and exit.                                            │\n│                                                                                                        │\n╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n╭─ Commands ─────────────────────────────────────────────────────────────────────────────────────────────╮\n│                                                                                                        │\n│  campgrounds              Search for Campgrounds (inside of Recreation Areas) and list them            │\n│  campsites                Find Available Campsites with Custom Search Criteria                         │\n│  configure                Set up camply configuration file with an interactive console                 │\n│  equipment-types          Get a list of supported equipment                                            │\n│  list-campsites           List campsite IDs for a given campground or recreation area                  │\n│  providers                List the different camply providers                                          │\n│  recreation-areas         Search for Recreation Areas and list them                                    │\n│  test-notifications       Test your notification provider setup                                        │\n│  tui                      Open Textual TUI.                                                            │\n│                                                                                                        │\n╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n```\n\n## Contributing\n\nCamply doesn't support your favorite campsite booking provider yet? Consider\n[contributing](https://juftin.com/camply/contributing/) 😉.\n\n\u003cbr/\u003e\n\nRecreation data provided by [**Recreation.gov**](https://ridb.recreation.gov/)\n\n---\n\n---\n\n\u003cbr/\u003e\n\n[\u003cp align=\"center\" \u003e\u003cimg src=\"https://raw.githubusercontent.com/juftin/juftin/main/static/juftin.png\" width=\"120\" height=\"120\"  alt=\"juftin logo\"\u003e \u003c/p\u003e](https://github.com/juftin)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Fcamply","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuftin%2Fcamply","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuftin%2Fcamply/lists"}