Discover/Mountain Project API
live

Mountain Project APImountainproject.com

Access Mountain Project's climbing route database via API. Search routes and areas, get difficulty ratings, GPS coords, user comments, and filtered route lists.

Endpoint health
verified 5d ago
search
get_route_comments
get_route
get_area
get_route_finder
5/5 passing latest checkself-healing
Endpoints
5
Updated
22d ago

What is the Mountain Project API?

The Mountain Project API exposes 5 endpoints covering the full climbing route database at mountainproject.com — from broad keyword search to per-route beta. The get_route endpoint returns first ascent info, YDS difficulty, GPS coordinates, and approach directions for any route by numeric ID. get_route_finder lets you filter by star rating, difficulty range, and climb type within a specific area, making it straightforward to query best-rated climbs programmatically.

Try it
Search keyword (e.g. 'Yosemite', 'El Capitan').
Comma-separated content types to search. Accepted values include Route, Area, Forum, User, Photo.
Result offset for pagination.
api.parse.bot/scraper/d806c1ab-d61a-4e73-a2fd-01f0ad04feae/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/d806c1ab-d61a-4e73-a2fd-01f0ad04feae/search?query=Yosemite&types=Route%2CArea&offset=0' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace mountainproject-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.mountain_project_api import MountainProject, ClimbType

mp = MountainProject()

# Search for climbing areas
for result in mp.searchresults.search(query="Joshua Tree", types="Area"):
    print(result.name, result.breadcrumbs, result.rating)

# Get a specific route by ID
route = mp.routes.get(route_id="105924807")
print(route.name, route.difficulty, route.type)

# Read comments on a route
for comment in route.comments.list():
    print(comment.user, comment.date, comment.text)

# Get area details and find routes within it
area = mp.areas.get(area_id="105833388")
print(area.name, area.url)

# Use the constructible area to find highly-rated rock routes
yosemite = mp.area(id="105833388")
for r in yosemite.find_routes(climb_type=ClimbType.ROCK, stars="3.8"):
    print(r.name, r.url)
All endpoints · 5 totalmissing one? ·

Search for routes, areas, users, and other content on Mountain Project using the internal v2 search API. Returns paginated results with metadata including location, rating, and breadcrumbs. Paginates via offset. Each result includes type, category, breadcrumbs for navigation context, and a location array for geo-aware filtering.

Input
ParamTypeDescription
queryrequiredstringSearch keyword (e.g. 'Yosemite', 'El Capitan').
typesstringComma-separated content types to search. Accepted values include Route, Area, Forum, User, Photo.
offsetintegerResult offset for pagination.
Response
{
  "type": "object",
  "fields": {
    "total": "integer total number of matching results",
    "results": "array of search result objects with id, name, type, category, url, description, breadcrumbs, location, rating, difficulty, summary"
  },
  "sample": {
    "data": {
      "total": 3962,
      "results": [
        {
          "id": "areas.105833388",
          "url": "https://www.mountainproject.com/area/105833388/yosemite-valley",
          "name": "Yosemite Valley",
          "type": "Area",
          "rating": 3.67,
          "summary": "1894 Routes",
          "category": "Areas",
          "location": [
            -119.63452,
            37.72349
          ],
          "difficulty": null,
          "breadcrumbs": "California > Yosemite National Park",
          "description": "Yosemite Valley is THE PLACE for many rock climbers."
        }
      ]
    },
    "status": "success"
  }
}

About the Mountain Project API

Search and Discovery

The search endpoint accepts a free-text query and an optional types parameter accepting comma-separated values such as Route, Area, User, or Forum. Results return paginated with a total count and per-result fields including breadcrumbs, location, difficulty, rating, and category. Use the offset parameter to walk through large result sets. Route and area IDs surfaced here feed directly into the detail endpoints.

Route and Area Detail

get_route takes a required route_id and returns structured fields: name, type (describing route type and pitch length), difficulty in YDS notation, fa for first ascent attribution, gps coordinates as a string, a prose description, and a location_description covering the approach. get_area works similarly by area_id, returning a list of sub_areas and classic_routes, each with their own id, name, and url — useful for traversing the area hierarchy.

Filtered Route Finding and Comments

get_route_finder queries Mountain Project's Route Finder tool within a given area_id. Filters include stars (minimum average star rating as a decimal string), diff_min and diff_max (numeric code strings bounding the difficulty range), and climb_type accepting boulder or rock. Results are route stubs with id, name, and url. get_route_comments fetches all user-submitted comments and trip beta for a route, returning each entry's user, user_url, text, date, and comment_id, sorted oldest-first.

IDs and Slugs

Most endpoints require a numeric ID (route_id or area_id). The slug parameter accepted by get_route and get_area appears in the URL path but does not change the data returned — only the numeric ID is functionally required. IDs can be obtained from search results or directly from Mountain Project URLs.

Reliability & maintenanceVerified

The Mountain Project API is a managed, monitored endpoint for mountainproject.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mountainproject.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official mountainproject.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
5/5 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a trip-planning tool that uses get_route_finder to surface top-rated climbs within a target area at a specified difficulty range.
  • Aggregate user beta and conditions reports by pulling get_route_comments for a list of routes before a climbing trip.
  • Populate a climbing logbook app with route metadata — name, difficulty, GPS, first ascent — via get_route.
  • Build an area directory that traverses the sub_areas hierarchy returned by get_area to map all crags within a region.
  • Feed a recommendation engine with route difficulty, star rating, and type data sourced from search and get_route.
  • Monitor new comments on a watchlist of routes by polling get_route_comments and comparing comment_id values.
  • Cross-reference classic_routes from get_area with get_route detail to build curated area guidebook content.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Mountain Project have an official developer API?+
Mountain Project does offer a limited official API at https://www.mountainproject.com/data. It covers basic route lookups by ID and GPS-based route queries, but does not expose area hierarchies, Route Finder filtering, or comment data. This Parse API covers those additional endpoints.
What does `get_route_finder` return, and how do the difficulty filters work?+
get_route_finder returns a list of route stubs — id, name, and url — matching the filters you provide. diff_min and diff_max are numeric code strings that correspond to Mountain Project's internal difficulty scale (not raw YDS text). The stars filter sets a minimum average community rating as a decimal, e.g. '3.8'. Set climb_type to boulder or rock to narrow by discipline. All filters are optional except area_id.
Does the API return topo images or photo galleries for routes or areas?+
Not currently. The route and area endpoints return text fields — description, location directions, GPS, difficulty — but no image URLs or topo attachments. You can fork this API on Parse and revise it to add an endpoint that pulls photo data for a route or area.
Are tick lists or user ascent logs available?+
Not currently. The API covers route metadata, area hierarchies, filtered route search, and user comments. Personal tick lists and ascent history are not exposed by the current endpoints. You can fork this API on Parse and revise it to add a user-ticks endpoint targeting a specific user profile.
How do I get a route or area ID to use with the detail endpoints?+
The search endpoint returns an id field on each result object. Alternatively, IDs appear directly in Mountain Project URLs — for example, mountainproject.com/route/105924807/the-nose uses 105924807 as the route ID. The slug parameter in get_route and get_area is optional and does not affect what data is returned.
Page content last updated . Spec covers 5 endpoints from mountainproject.com.
Related APIs in SportsSee all →
thecrag.com API
Search and explore outdoor climbing areas, routes, and photos with access to detailed route information and geographic hierarchy. Build climbing apps, trip planners, or guides by pulling real-time climbing data organized by location and route details.
komoot.com API
Search and explore outdoor routes on Komoot by location and sport type, accessing detailed GPS coordinates, elevation profiles, trail maps, and route photo galleries. Browse curated regional collections and public user profiles to discover hiking, biking, running, and climbing routes worldwide.
alltrails.com API
Search hiking trails by location and difficulty, then dive into detailed trail information, AI-generated review summaries, and authentic user feedback all in one place. Plan your next outdoor adventure with comprehensive trail data at your fingertips.
mammothmountain.com API
Get Mammoth Mountain’s current trail status, snow report (base depth and recent/season snowfall), and weather conditions with a multi-day forecast for different elevations.
backcountry.com API
backcountry.com API
ifsc-climbing.com API
Track world rankings, search athlete profiles, and browse competition results and schedules across the international sport climbing circuit. Stay updated with the latest news and event information from the official IFSC competition calendar.
patagonia.com API
Access Patagonia's full product catalog via search and category browsing. Retrieve detailed product information including variants, pricing, specs, and materials. Fetch customer reviews, locate nearby stores and authorized dealers, and browse the Worn Wear used and refurbished gear selection.
rei.com API
Search and browse REI's full catalog of outdoor gear and clothing, compare detailed product specifications, check real-time store availability, and read customer reviews to find the perfect equipment for your adventures. Explore products by category or use targeted searches to discover gear that matches your needs, all with instant access to pricing and local stock information.
Mountain Project API – Routes, Areas & Beta · Parse