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

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 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
locationstring✅ yesA park, region, US state, city, or coordinates — "Yosemite National Park", "Colorado", "Denver, CO", or "37.7261, -119.5587".
sessionstring✅ yesYour 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

❓ FAQ

Is it legal to scrape AllTrails? This Actor only collects publicly available data: trail information that anyone can see on AllTrails without an account. Collecting publicly available data is generally legal, but you're responsible for how you use it. You must follow privacy laws such as GDPR, PIPEDA and CCPA, as well as AllTrails' terms. If you're unsure, check with a lawyer. More on this: Is web scraping legal?

Does it access any private data? No. Everything comes from pages AllTrails shows to any visitor without logging in. It never uses a login, never touches private or restricted accounts, and never reaches password-protected areas.

❓ 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.