mountainproject.com 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.
curl -X GET 'https://api.parse.bot/scraper/d806c1ab-d61a-4e73-a2fd-01f0ad04feae/search?query=Yosemite&types=Route%2CArea' \ -H 'X-API-Key: $PARSE_API_KEY'
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.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'Yosemite', 'El Capitan'). |
| types | string | Comma-separated content types to search. Accepted values include Route, Area, Forum, User, Photo. |
| offset | integer | Result offset for pagination. |
{
"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": 3958,
"results": [
{
"id": "areas.126748658",
"url": "https://www.mountainproject.com/area/126748658/yosemite-point",
"name": "Yosemite Point",
"type": "Area",
"rating": 4,
"summary": "1 Routes",
"category": "Areas",
"location": [
-119.593,
37.75642
],
"difficulty": null,
"breadcrumbs": "California > Yosemite National Park > Yosemite Valley > * Yosemite Valley Bouldering",
"description": "Covers bouldering at the top of Yosemite Point and at the base."
}
]
},
"status": "success"
}
}About the mountainproject.com 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.
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.
- Build a trip-planning tool that uses
get_route_finderto surface top-rated climbs within a target area at a specified difficulty range. - Aggregate user beta and conditions reports by pulling
get_route_commentsfor 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_areashierarchy returned byget_areato map all crags within a region. - Feed a recommendation engine with route difficulty, star rating, and type data sourced from
searchandget_route. - Monitor new comments on a watchlist of routes by polling
get_route_commentsand comparingcomment_idvalues. - Cross-reference
classic_routesfromget_areawithget_routedetail to build curated area guidebook content.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 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.
Does Mountain Project have an official developer API?+
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?+
Are tick lists or user ascent logs available?+
How do I get a route or area ID to use with the detail endpoints?+
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.