Skip to main content

alpin-api

Every night, this project turns posts from dedicated Alpine ski-resort forum topics into a public GeoJSON map of the latest construction and infrastructure progress.

View the live GeoJSON map

For developers

You can install the alpin_api Python package from PyPI: its forum scrapers, AlpinAPI, data types, and deterministic resort/topic constants. The installed package reads live forum pages. The repository's Groq analysis, map generation, nightly automation, and file-writing application are not included in the published package.

pip install alpin-api

Or add it to a uv project:

uv add alpin-api

Forum access requirements

Some forums require FlareSolverr listening on localhost:8191; the package connects to that service. Start FlareSolverr before using:

docker run --rm --detach --name flaresolverr --publish 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest

Examples

Choose the path that matches what you already know.

If you want updates for one registered resort, fetch recent posts from every topic assigned to its marker:

from alpin_api import AlpinAPI, SKI_RESORTS

# List all registered resorts and their names
print("\n".join(f"{resort_id}: {resort.name}" for resort_id, resort in SKI_RESORTS.items()))

posts_by_resort = AlpinAPI().fetch_posts(
    resort_ids=["hintertuxer_gletscher"],  # None fetches all registered resorts
    days_old_max=5,
)
hintertux_posts = posts_by_resort["hintertuxer_gletscher"]

If you first want to see what people are discussing on a forum, discover its latest topics:

from alpin_api import AlpinAPI, Forum

api = AlpinAPI()
latest_topics = api.fetch_latest_topics(
    forum=Forum.ALPINFANS,
    topic_limit=20,
)
for topic in latest_topics:
    print(topic.topic_id, topic.title)

Then select an interesting result and fetch its recent posts:

selected_topic = latest_topics[0]
topic_posts = api.fetch_topic_posts(
    forum=selected_topic.forum,
    topic_identifier=selected_topic.canonical_url,
    days_old_max=5,
)

Retrieval boundaries

  • days_old_max is a rolling clock window, so 1 means exactly 24 hours backward. It intentionally reads the newest page and at most the immediately preceding page.
  • topic_limit applies separately to every discovery listing configured for a forum news and construction topics.

Development

Install the locked development environment and the repository's Git hooks:

uv sync --extra tracker
uv run pre-commit install

Run every configured hook with uv run pre-commit run --all-files. Repository-wide coding guidance lives in AGENTS.md.

Metadata

Release files for alpin-api 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for alpin-api 0.2.0
File Size Uploaded Provenance
alpin_api-0.2.0.tar.gz 39.5 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for alpin-api 0.2.0
File Interpreter ABI Platform
alpin_api-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 79.7 kB

Release files / alpin_api-0.2.0.tar.gz

Download URL alpin_api-0.2.0.tar.gz
Size 39.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8422e80441431a1f8418f591a1953b8cf625818c7e6323d86c6af2cda389db4d
BLAKE2b-256 checksum
How to use checksums
2cd69566f9f92492d56aec82f541da289867a72c72936a6baaa809878e8c24cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Release files / alpin_api-0.2.0-py3-none-any.whl

Download URL alpin_api-0.2.0-py3-none-any.whl
Size 40.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
738a7a19ae8191f27abdcaefb97aba5a9ae37c32f9f4fa2f67c042dbcc1f07c1
BLAKE2b-256 checksum
How to use checksums
16fc11236d46926e4b78447e0412d80c1fbebfc0902635acd3e01fbd33a00107
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

Security for alpin-api 0.2.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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for alpin_api-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page