arccos-api
Your Arccos Golf data, from the terminal or Python.
arccos-api is an unofficial, read-only client for exploring your own rounds,
handicap, club distances, strokes gained, pace of play, and more.
Important: Arccos does not provide a public API. This project is not affiliated with Arccos Golf LLC, and upstream changes may occasionally require a library update.
What you can do
- Browse rounds and hole-by-hole scoring
- Track handicap, scoring, and strokes-gained trends
- Inspect smart distances, club shots, and dispersion
- Compare rounds and review personal bests
- Explore courses, pace of play, and hole imagery metadata
- Export data as JSON, CSV, or NDJSON
- Export opt-in operational and golf telemetry through OpenTelemetry/OTLP
- Use the same data through a Python client
Golf data access is read-only by design. The client only sends GET requests
to the Arccos data API. Login and token refresh use the authentication service's
required POST requests, but never create, edit, or delete golf or account data.
Install
Requires Python 3.11 or newer.
pip install arccos-api
For the CLI on macOS or Linux, Homebrew is also available:
brew install pfrederiksen/tap/arccos-api
Optional operating-system keyring support:
pip install 'arccos-api[keyring]'
Optional vendor-neutral OpenTelemetry support:
pip install 'arccos-api[otel]'
Quick start
Authenticate once, then start exploring:
arccos login
arccos rounds
arccos handicap
arccos clubs
Some useful next steps:
arccos round 12345678 # hole-by-hole round detail
arccos stats --dashboard # strokes-gained dashboard
arccos trends # handicap trend
arccos pace # pace of play by course
arccos export -f csv -o rounds.csv
Most display commands support --json, and every command supports --help.
See the CLI guide for the complete command list, filtering,
profiles, shell completion, and export examples.
Use it from Python
arccos login caches credentials, so Python can reuse them without putting a
password in source code:
from arccos import ArccosClient
with ArccosClient() as client:
rounds = client.rounds.list(limit=5)
handicap = client.handicap.current()
distances = client.clubs.smart_distances()
print(f"Handicap: {handicap['userHcp']:.1f}")
for round_ in rounds:
print(round_["startTime"][:10], round_["noOfShots"])
You can also authenticate directly:
client = ArccosClient(email="you@example.com", password="your_password")
See the Python client guide for resources and examples, or browse the complete OpenAPI 3.1 specification.
Documentation
| Guide | Contents |
|---|---|
| CLI guide | Commands, filters, exports, profiles, and environment variables |
| Python client | Authentication, resources, and usage examples |
| OpenTelemetry | Explicit instrumentation, OTLP export, cardinality, and privacy |
| OpenAPI specification | Complete endpoint and schema reference |
| Examples | Runnable Python scripts |
| Contributing | Local setup, tests, style, and releases |
| Security | Credential handling and vulnerability reporting |
| Changelog | Release history |
Credentials and privacy
- Credentials are cached with owner-only permissions in your platform's config
directory. Legacy
~/.arccos_creds.jsonfiles migrate automatically. - Named profiles are available through
ARCCOS_PROFILEor command options. - Set
ARCCOS_KEYRING=trueto use the optional OS keyring integration. arccos logoutclears local credentials but cannot revoke upstream tokens; change your Arccos password if credentials may be compromised.- Use your own account and avoid aggressive polling.
Run arccos doctor to check configuration, credentials, and API connectivity.
See SECURITY.md to report a vulnerability privately.
Development
git clone https://github.com/pfrederiksen/arccos-api.git
cd arccos-api
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest
Tests use mocked and sanitized responses; no Arccos account is required. See CONTRIBUTING.md for the full development workflow.
Disclaimer
Not affiliated with, endorsed by, or connected to Arccos Golf LLC. Use your own account credentials only. This project is intended for personal data access and research.
Released under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arccos_api-0.7.0.tar.gz.
File metadata
- Download URL: arccos_api-0.7.0.tar.gz
- Upload date:
- Size: 80.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d422793f5543bc3bdc5d8010f80783b8031b01da88f508281052f065758e290a
|
|
| MD5 |
8959ab4f3a7a5ba2471dd90af1761631
|
|
| BLAKE2b-256 |
b041f7f0023fbe6fc17c2a466e66e1f47efbee596149ffcf18e82bf8af0ddb43
|
Provenance
The following attestation bundles were made for arccos_api-0.7.0.tar.gz:
Publisher:
release.yml on pfrederiksen/arccos-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arccos_api-0.7.0.tar.gz -
Subject digest:
d422793f5543bc3bdc5d8010f80783b8031b01da88f508281052f065758e290a - Sigstore transparency entry: 2576780567
- Sigstore integration time:
-
Permalink:
pfrederiksen/arccos-api@c9cfc9530d7ec9e5d90f248bb6c116f78d760f65 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/pfrederiksen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c9cfc9530d7ec9e5d90f248bb6c116f78d760f65 -
Trigger Event:
push
-
Statement type:
File details
Details for the file arccos_api-0.7.0-py3-none-any.whl.
File metadata
- Download URL: arccos_api-0.7.0-py3-none-any.whl
- Upload date:
- Size: 60.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
430ef0112b2ab0b14bf3bc7277ed68eab37d66ebd5c0196683c1f3b3a42050f3
|
|
| MD5 |
b6d4c8d1aa77cb1f81d9ac9fae4ce510
|
|
| BLAKE2b-256 |
a0c8883e55d7397309b7752f4ce41e0e197c7d3c0e0db95c7a4ae2d9469591ed
|
Provenance
The following attestation bundles were made for arccos_api-0.7.0-py3-none-any.whl:
Publisher:
release.yml on pfrederiksen/arccos-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
arccos_api-0.7.0-py3-none-any.whl -
Subject digest:
430ef0112b2ab0b14bf3bc7277ed68eab37d66ebd5c0196683c1f3b3a42050f3 - Sigstore transparency entry: 2576780594
- Sigstore integration time:
-
Permalink:
pfrederiksen/arccos-api@c9cfc9530d7ec9e5d90f248bb6c116f78d760f65 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/pfrederiksen
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c9cfc9530d7ec9e5d90f248bb6c116f78d760f65 -
Trigger Event:
push
-
Statement type: