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

AllTrails hiking-trail data by park, city, state or coordinates: name, description, photos, rating and review count, difficulty, length, elevation gain, route type, parking, coordinates. No AllTrails account; you paste an anonymous app session captured from the AllTrails app (see README).

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Yugenox Corp

Yugenox Corp

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

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