AllTrails Scraper — Trails, Ratings, Photos, Difficulty avatar

AllTrails Scraper — Trails, Ratings, Photos, Difficulty

Pricing

from $0.90 / 1,000 results

Go to Apify Store
AllTrails Scraper — Trails, Ratings, Photos, Difficulty

AllTrails Scraper — Trails, Ratings, Photos, Difficulty

Pull AllTrails hiking-trail data by location: name, description, photos, ratings, reviews, difficulty, length, elevation, route type, parking, coordinates. No login.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Arpit Gandhi

Arpit Gandhi

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 days ago

Last modified

Share

🏔️ AllTrails Scraper — Trail Data Extractor

Pull AllTrails hiking-trail data in seconds. Photos, ratings, reviews, difficulty, elevation, route type, coordinates — for any national park, US state, city, or custom coordinates. No login required. ⛰️

📊 20+ fields per trail · 🌍 any location worldwide · 🚫 no auth · ⚡ live data every run


🚀 Quick start

Give it a location and your session (a one-time capture — see below):

{ "location": "Yosemite National Park", "maxItems": 50, "session": "{...your session JSON...}" }

Run it and get clean, structured trail records as JSON, CSV, Excel, XML, or JSONL.


🔑 Getting a session

The scraper talks to AllTrails' mobile API, which needs an anonymous app session — an app-level key plus a DataDome cookie. No AllTrails account is involved (the actor refuses account tokens by design), so nothing of yours is at risk.

To capture one (takes ~2 minutes, lasts until DataDome rotates it):

  1. Run any HTTP proxy on your computer (mitmproxy, Charles, Proxyman) and point your phone's Wi-Fi proxy at it, with the proxy's certificate trusted.
  2. Open the AllTrails app and search anything.
  3. Find a request to api-v5.alltrails.com and copy its request headers as a JSON object — the important ones are x-at-key, x-at-client-id, user-agent, and cookie.
  4. Paste that JSON object into the session input field (it is stored encrypted).

If runs start failing with a 401/403, the DataDome cookie rotated — capture a fresh one the same way.


⚙️ Input

FieldTypeRequiredDescription
locationstringyesA park, region, US state, city, or coordinates — "Yosemite National Park", "Colorado", "Denver, CO", or "37.7261, -119.5587".
sessionstringyesYour AllTrails session as a JSON object of headers — see Getting a session above. Stored encrypted.
maxItemsintegernoHow many trails to return (default 10).
includeDetailsbooleannoAlso fetch each trail's detail page for parking, full photo gallery, and highlights (slower, richer). Default off.
proxyConfigurationobjectnoProxy — residential recommended (AllTrails is behind DataDome).

Examples

{ "location": "Zion National Park", "maxItems": 100, "includeDetails": true }
{ "location": "39.7392, -104.9903", "maxItems": 25 }

📤 Output — one record per trail

{
"id": "10027503",
"name": "Clouds Rest Trail",
"description": "One of Yosemite's classic high-country hikes with 360° summit views…",
"imageUrl": "https://www.alltrails.com/api/alltrails/trails/10027503/profile_photo",
"imageGallery": ["https://…"],
"rating": 4.9,
"reviewCount": 6320,
"difficulty": "Hard",
"difficultyScore": 5,
"lengthMiles": 12.6,
"lengthKm": 20.28,
"elevationGainFt": 3116,
"elevationGainM": 950,
"routeType": "Out & Back",
"area": "Yosemite National Park",
"city": "Yosemite Valley",
"state": "California",
"country": "United States",
"latitude": 37.82563,
"longitude": -119.47054,
"parking": "Trailhead parking available",
"dogsAllowed": false,
"kidFriendly": false,
"verifiedMapId": 287858466,
"url": "https://www.alltrails.com/trail/us/california/clouds-rest--6",
"scrapedAt": "2026-07-14T11:55:48.167Z"
}

🧾 Fields

FieldDescription
🆔 id, 🔗 urlAllTrails trail ID and canonical URL
🏷️ name, 📝 descriptionTrail name and description
🖼️ imageUrl, imageGalleryHero photo + gallery (gallery with includeDetails)
rating, 💬 reviewCountAverage rating and number of reviews
🎯 difficulty, difficultyScoreEasy / Moderate / Hard + AllTrails 1–7 score
📏 lengthMiles, lengthKmTrail length
⛰️ elevationGainFt, elevationGainMElevation gain
🛤️ routeTypeLoop · Out & Back · Point to Point
🏞️ area, city, state, countryLocation detail
📍 latitude, longitudeCoordinates
🅿️ parkingParking info (with includeDetails)
🐶 dogsAllowed, 🚸 kidFriendlyAccess flags where AllTrails exposes them
📅 scrapedAtISO timestamp of the run

💡 Built for

  • 🧭 Travel & outdoor brands — location-aware trail content
  • 📱 App developers — power hike-discovery without owning a crawler
  • 🏨 Hospitality & tourism — recommend nearby trails to guests
  • 📊 Researchers & marketers — outdoor-recreation trends, geo-targeted content

❓ Notes

  • No login / account needed — pulls AllTrails' public trail catalog.
  • Live data — every run reflects AllTrails at run time.
  • Route/loop GPS geometry for each trail is available too (via verifiedMapId) — ask if you want it added to the output.

Not affiliated with AllTrails. Scrapes publicly available trail data.