Discover/theCrag API
live

theCrag APIthecrag.com

Access climbing area details, route grades, styles, star ratings, photos, and geographic hierarchy from theCrag.com via 6 structured endpoints.

Endpoint health
verified 3h ago
search
get_area_details
get_area_routes
get_route_details
get_area_hierarchy
5/6 passing latest checkself-healing
Endpoints
6
Updated
10d ago

What is the theCrag API?

The theCrag API exposes 6 endpoints for retrieving climbing data from theCrag.com, including area details, route listings, individual route specs, photos, and keyword search. The get_route_details endpoint returns grade, style, length, star rating, GPS coordinates, and a full breadcrumb path for any route URL. The get_area_hierarchy endpoint lets you traverse the full geographic tree of climbing areas by node ID, making it straightforward to build location-aware climbing tools.

Try it
Search keyword (e.g. 'Yosemite', 'El Capitan')
api.parse.bot/scraper/db6724e6-21fb-4a2d-8f1f-693ae17bf058/<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/db6724e6-21fb-4a2d-8f1f-693ae17bf058/search?query=Yosemite' \
  -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 thecrag-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.

"""Walkthrough: theCrag Climbing API — search areas, list routes, explore hierarchy."""
from parse_apis.theCrag_Climbing_API import TheCrag, Area, Route, Listing, NotFoundError

crag = TheCrag()

# Search for climbing areas, routes, and climbers
for listing in crag.listings.search(query="Yosemite", limit=5):
    print(listing.name, listing.type, listing.url)

# Get detailed area information by URL
area = crag.areas.get(url="https://www.thecrag.com/en/climbing/australia/blue-mountains")
print(area.name, area.routes_count, area.photos_count)
print(area.location.lat, area.location.lng)

# List routes in the area (auto-paginated, capped)
for route in area.routes(limit=3):
    print(route.name, route.grade, route.style, route.stars)

# Drill into a specific route for full details
first_route = area.routes(limit=1).first()
if first_route:
    try:
        detailed = crag.routes.get(url=first_route.url)
        print(detailed.name, detailed.grade, detailed.length)
    except NotFoundError as exc:
        print(f"Route not found: {exc}")

# Explore sub-area hierarchy
for child in area.children.list(limit=5):
    print(child.name, child.sub_area_count, child.type)

print("exercised: listings.search / areas.get / area.routes / routes.get / area.children.list")
All endpoints · 6 totalmissing one? ·

Full-text search across climbing areas, routes, and climbers on theCrag.com. Returns results grouped by type (area, route, climber). Each result includes name and URL for further lookup.

Input
ParamTypeDescription
queryrequiredstringSearch keyword (e.g. 'Yosemite', 'El Capitan')
Response
{
  "type": "object",
  "fields": {
    "results": "array of search result objects with type, name, url, and description"
  },
  "sample": {
    "data": {
      "results": [
        {
          "url": "https://www.thecrag.com/en/climbing/united-states/yosemite-national-park",
          "name": "Yosemite National Park",
          "type": "area",
          "description": null
        },
        {
          "url": "https://www.thecrag.com/en/climbing/united-states/new-river-gorge/route/14483011",
          "name": "New Yosemite / Climbing Under the Influence",
          "type": "route",
          "description": null
        },
        {
          "url": "https://www.thecrag.com/climber/whatsthequestion",
          "name": "Yosemite Joe",
          "type": "climber",
          "description": null
        }
      ]
    },
    "status": "success"
  }
}

About the theCrag API

What the API Covers

These 6 endpoints cover four data types from theCrag.com: climbing areas, individual routes, photos, and search results. The search endpoint accepts a keyword query and returns results grouped by type — area, route, or climber — each with a name, URL, and short description. Area results can be fed directly into get_area_details or get_area_routes using the returned URL.

Area and Route Data

get_area_details returns the area name, summary, location (lat/lng), routes_count, photos_count, a breadcrumbs array for navigation context, and a sub_areas array listing immediate child areas with their own IDs, URLs, and types. The node_id field in that response is the input key for get_area_hierarchy, which returns the children of any node — letting you walk the full geographic tree from a root node down to individual crags. get_area_routes paginates through routes in an area, returning each route's name, url, grade, style, and stars.

Route Details and Photos

get_route_details provides the most granular route-level data: grade, style (e.g. Boulder, Sport, Trad), length, stars, GPS location, description text, and a breadcrumbs chain showing the full area path. get_area_photos paginates through photos attached to an area, returning thumbnail, full_image, url, and caption per photo.

Pagination and Inputs

Both get_area_routes and get_area_photos accept an optional page parameter for pagination. All area and route endpoints require a full thecrag.com URL as input, which you can obtain from search results or the sub-area arrays returned by area endpoints. get_area_hierarchy accepts an optional node_id; omitting it returns the top-level children of the global root.

Reliability & maintenanceVerified

The theCrag API is a managed, monitored endpoint for thecrag.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when thecrag.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 thecrag.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
3h ago
Latest check
5/6 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 climbing trip planner that fetches area summaries, sub-areas, and GPS coordinates via get_area_details.
  • Generate a graded route list for a specific crag by paginating through get_area_routes results.
  • Display a photo gallery for any climbing area using get_area_photos thumbnail and full-image URLs.
  • Power a route search feature using the search endpoint to find areas or routes by keyword.
  • Construct a hierarchical climbing directory by walking node IDs with get_area_hierarchy.
  • Build a route detail page showing grade, style, length, and description from get_route_details.
  • Filter and compare routes by style (Sport, Trad, Boulder) across multiple areas using paginated route listings.
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 theCrag.com have an official developer API?+
Yes. theCrag.com provides an official API documented at https://api.thecrag.com. It requires registration and covers a broad set of climbing data. This Parse API offers a simpler, key-based interface to the same source without requiring a separate account on theCrag.
What does `get_area_hierarchy` return, and how do I start traversing from the top?+
get_area_hierarchy returns a children array of area objects, each with id, name, url, sub_area_count, and type. If you omit the node_id parameter, the endpoint returns the top-level geographic children (continent or country level). To go deeper, pass the node_id from any returned child, or use the node_id field from a get_area_details response.
Does the API return ascent logs or tick lists for individual users?+
Not currently. The API covers area details, route specs, photos, and search results. Per-user ascent logs, tick lists, and logbook data are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting user profile or ascent data.
What grade systems does the API return, and can I filter routes by grade?+
The grade field returns the grade as displayed on theCrag.com for that route, which may follow any of the systems used on the site (Yosemite Decimal, Fontainebleau, UIAA, etc.) depending on the area's regional default. The current endpoints do not support filtering routes by grade range — get_area_routes returns all routes for an area paginated. You can fork this API on Parse and revise it to add grade-range filtering logic.
Is location data (lat/lng) available for all areas and routes?+
The location field is returned by both get_area_details and get_route_details, but it reflects what theCrag.com has recorded for that node. Some areas or routes may have null or approximate coordinates if the source data is incomplete. No separate geocoding or fallback is applied.
Page content last updated . Spec covers 6 endpoints from thecrag.com.
Related APIs in SportsSee all →
mountainproject.com API
Discover climbing routes and areas, search by location and difficulty, and access detailed route information including user reviews and beta. Find your next climb with comprehensive area hierarchies and filtered route recommendations tailored to your skill level.
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.
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.
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.
craigslist.org API
Search and retrieve Craigslist listings for apartments, vehicles, jobs, services, and other categories across all regional sites to find exactly what you're looking for. Get detailed information about specific listings, browse by location and category, and compare options all in one place.
backcountry.com API
backcountry.com API
rcdb.com API
Discover and explore roller coasters and amusement parks with detailed information including coaster specifications, park details, images, and search capabilities. Find random coasters for inspiration or quickly search for specific rides to compare features and view photos from the world's largest roller coaster database.
campsites.co.uk API
Search for UK campsites, view detailed information including amenities and facilities, and check real-time availability across different accommodation types and categories. Plan your camping trip by filtering results to find the perfect site that matches your needs.