Mountain Project Scraper
Pricing
from $3.00 / 1,000 results
Mountain Project Scraper
Scrape Mountain Project, the largest US rock-climbing route database. Search routes, browse by area or crag, fetch by route ID, or get popular classics: route details with grades, ratings, pitches, length, descriptions, photos, and GPS coordinates. HTTP-only via the public API; no auth required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
Scrape Mountain Project — the largest US rock-climbing route database with 500K+ routes, areas, crags, photos and beta. Search routes by keyword, browse every route under an area or crag, look up routes by ID, or pull the site's popular classic routes. Get full route detail: grades (YDS, French, V-scale and more), route type, star ratings, pitches, length, descriptions, protection, approach, first ascent, GPS coordinates and photos. HTTP-only via Mountain Project's public API — no auth, no cookies, no proxy needed.
What this actor does
- Four modes:
search,browseByArea,byRouteIds,popularRoutes - Search both surfaces:
searchType=routes(default) orsearchType=areas— area search returns crag/area records with ratings, coordinates and breadcrumbs - Full route detail: description, approach, protection, descent, first ascent, submitted-by, access notes
- Grades: YDS / French / V-scale / Ewbanks / UIAA / ZA / British plus aid, ice and mixed grades
- Filters: route type dropdown, grade range (YDS/V/aid/ice/mixed), minimum star rating, keyword, location
- Photos: carousel photo URLs from each route page (optional toggle)
- Area records: sub-area tree, route counts per type, coordinates, radius, overview
- Empty fields are omitted
Output per route
routeId— Mountain Project route ID (e.g.105924807)name— route name (e.g. "The Nose")difficulty— combined grade string (e.g.5.9 C2,V2,WI4)gradeYds,gradeFrench,gradeEwbanks,gradeUiaa,gradeZa,gradeBritish— per-system grades (when available)routeTypes[]— e.g.["Trad", "Aid"](Trad / Sport / Toprope / Boulder / Ice / Aid / Mixed / Alpine)pitches,lengthFeet,lengthMetersrating— average star rating (0–5),voteCount,pageViewsdescription,approach,protection,descent,accessNotes[]firstAscent,submittedByareaId,parentAreaId,parentAreaName,breadcrumbs— location path (e.g.California > Yosemite National Park > ...)location—{latitude, longitude}GPS coordinatesthumbnailUrl,photoUrls[]sourceUrl,mountainProjectUrl,recordType: "route",scrapedAt
Output per area (mode = browseByArea)
areaId,name,breadcrumbs,isLeaf,depthsummary,overview,approachrouteTypeCounts— routes per type (sport,trad,boulder,ice, ...)location(GPS),radius,rating,popularity,childAreaCountthumbnailUrl,sourceUrl,recordType: "area",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / browseByArea / byRouteIds / popularRoutes |
searchQuery | string | el capitan | Free-text query (mode=search) |
searchType | enum | routes | routes / areas (mode=search) |
areaIds | array | – | Area IDs or URLs to browse (mode=browseByArea) |
routeIds | array | – | Route IDs or URLs to look up (mode=byRouteIds) |
sortBy | string | relevance | relevance / rating / longest / shortest / popularity |
routeType | string | – | Trad / Sport / Toprope / Boulder / Ice / Aid / Mixed / Alpine |
gradeMin | string | – | e.g. 5.9, V4, WI4, A2, M6 |
gradeMax | string | – | e.g. 5.12, V10, WI5, A4, M8 |
minRating | number | – | 0–5 star minimum |
containsKeyword | string | – | Keep routes with this keyword in name/description |
locationKeyword | string | – | Keep routes in this location path, e.g. Yosemite |
maxAreaDepth | int | 3 | Sub-area recursion depth (mode=browseByArea) |
includeDetails | boolean | true | Fetch full route detail (1 request per route) |
includePhotos | boolean | false | Scrape photo carousel + votes (1 HTML request per route) |
maxItems | int | 50 | Hard cap (1–1000) |
proxyConfiguration | object | off | Optional; only used automatically on 403/429 |
Example: search with filters
{"mode": "search","searchQuery": "el capitan","routeType": "Trad","gradeMin": "5.9","gradeMax": "5.12","minRating": 3,"locationKeyword": "Yosemite","includeDetails": true,"maxItems": 20}
Example: browse a whole crag
{"mode": "browseByArea","areaIds": ["105720495"],"maxAreaDepth": 3,"includeDetails": true,"maxItems": 100}
Example: lookup by route ID with photos
{"mode": "byRouteIds","routeIds": ["105924807", "https://www.mountainproject.com/route/105748138/hand-traverse"],"includePhotos": true}
Example: popular classics
{"mode": "popularRoutes","minRating": 3,"maxItems": 10}
Use cases
- Climbing guidebook data — build route databases for guidebook apps and training platforms
- Route discovery — pull the most popular classic routes in an area with photos and beta
- Location intelligence — GPS coordinates and area trees for outdoor apps and maps
- Market research — climb-quality signals (ratings, votes, page views) across crags
- Training content — grade distributions and route-type mixes by region
Data Source
Mountain Project (mountainproject.com) — the largest US climbing-route community database, operated by onX Maps. The actor uses the site's public JSON API (/api/v2/search, /api/v2/routes/<id>, /api/v2/areas/<id>) and publicly rendered pages (/area/classics, route pages). No API key, login or cookies are required.
Limitations
browseByAreacollects routes from an area's children tree; very large areas (e.g. whole states) have up to 20 direct children and the recursion is bounded bymaxAreaDepthandmaxItems.- Vote counts, page views and the per-system grade breakdown come from the route HTML page and are only populated when
includePhotosis enabled (the JSON API exposes the combined grade string and average rating without them). - Route-grade filtering supports YDS, V-scale, aid (A/C), ice (WI/AI) and mixed (M) grades; grades in other systems or unparseable strings are passed through, not dropped.
- Photo carousels show the photos Mountain Project attaches to a route; the full community photo pool for an area is only reachable through the photo search index.
- The API serves at most 25 results per search page; the actor pages through until
maxItemsor the result set ends.
FAQ
- What is the data source? Mountain Project (mountainproject.com), the largest US climbing-route community site, via its public search/detail API and public pages. This actor is a third-party tool and is not affiliated with Mountain Project or onX.
- Does it require an API key? No. Mountain Project's public
/api/v2/*endpoints and public pages need no authentication. - Are the photos hotlink-safe? Yes — photo URLs point to the public
mountainproject.com/assets/photos/climb/*CDN and load without referer or cookies. - How are grades compared for the grade range filter? YDS (
5.10d), V-scale (V4), aid (A2), ice (WI4) and mixed (M6) grades map onto a single comparable scale; routes whose grade can't be parsed are not dropped. - Why are some fields missing on some routes? Only fields the source actually has are emitted — e.g. boulders have no pitches, sport routes have no protection sections. Empty fields are omitted from every record.
- How fresh is the data? Records are fetched live at run time from Mountain Project's API and pages.
- Is there a rate limit? The public endpoints are unthrottled, but the actor still paces requests politely and retries on 429/5xx with backoff.
- What about areas with very many routes?
browseByAreacollects routes from the area's children tree; themaxAreaDepthandmaxItemsinputs bound the size of a run.