Skiresort.com Scraper: Ski Resort Directory & Comparison Data
Pricing
from $2.63 / 1,000 resort records
Skiresort.com Scraper: Ski Resort Directory & Comparison Data
Scrape Skiresort.com's ski resort directory: elevation, slope km, lift count, ski pass price, and rating for 530 US resorts plus Europe/worldwide. Filter by country, rating, elevation, slope, or lift count. Full-detail mode adds lift/ticket breakdowns and season date. $3.50/1,000 records.
Pricing
from $2.63 / 1,000 resort records
Rating
0.0
(0)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
⛷️ Skiresort.com Scraper: Resort Directory & Comparison Data
|
Ski resort data, structured and ready Slopes, lifts, ratings, and prices for 530 US resorts plus global coverage, no manual lookups. |
|
🗺️ Full directory coverage 530 US resorts plus global listings including Europe, pulled straight from Skiresort.com. |
⛷️ Slope & lift breakdown Optional detail mode adds slope kilometres by difficulty and lift counts by type. |
🎫 Real ski pass prices Day-ticket prices for adults, youth, and children, pulled straight from each resort's page. |
🧹 Clean, honest data Only real fields get filled in. Nothing fake ever pads out your dataset. |
🔍 What does Skiresort.com Scraper do?
Skiresort.com Scraper reads the resort directory on Skiresort.com and turns it into structured, downloadable data: resort name, region, rating, elevation, slope kilometres, lift count, and ski pass price for every resort in a country or region listing.
Point it at a country listing (the US directory alone covers 530 resorts) or a region like Europe, or paste specific resort URLs directly. Turn on full detail mode to also pull the slope breakdown by difficulty, lift counts by type, day-ticket prices for adults, youth, and children, the season start date, and the full resort description for each resort. Optional filters narrow the output to resorts matching a country, minimum rating, minimum elevation, minimum slope length, or minimum lift count, all checked before a resort counts against Max Resorts.
🤔 Why use Skiresort.com Scraper?
The only other Skiresort.com scraper on the Apify Store has seen almost no use. It already covers elevation, slope kilometres by difficulty, lift count, and price, so this Actor is not reinventing that part. Where this Actor adds real coverage: lift counts broken down by lift type, ski pass prices split by adult, youth, and child, the season start date, a dedicated direct-resort-URL mode for pulling specific named resorts without a full directory crawl, and built-in filters (country, rating, elevation, slope length, lift count) so you get only the resorts you actually want instead of filtering a full export yourself.
- "I'm building a ski trip comparison page and need real slope and lift numbers for every resort, not just a name and photo." Travel content writers and comparison-site builders pull structured resort data instead of copying it by hand.
- "My research team tracks winter tourism trends across US resorts and needs elevation, slope, and pricing data in one table." Market researchers and data teams build resort comparisons across an entire country or region in one run.
- "I want a resort database to power search and filters in my trip-planning app, without hand-entering 500 resorts." App and tool builders seed a resort database directly from the source instead of manual data entry.
🚀 How to use Skiresort.com Scraper
|
1. Pick a directory or resort Choose a country or region listing, or paste specific resort URLs. |
2. Run the Actor It reads Skiresort.com's own listing and detail pages directly. |
3. Export your data Download as JSON, CSV, or Excel, or connect it to your own pipeline. |
- Click Try for free and open the Input tab.
- Add one or more Listing URLs (a country or region directory page), or paste specific Direct Resort URLs if you already know which resorts you want.
- Set Max Resorts to how many resorts you want back in this run.
- Turn on Fetch Full Resort Detail Page if you want the slope breakdown, lift types, ticket prices, season start date, and description too.
- Optionally set Country Filter, Minimum Rating, Minimum Top Elevation, Minimum Total Slope Length, or Minimum Lift Count to narrow the output before it counts against Max Resorts.
- Click Start. Results land in the Output tab as they're collected.
📥 Input
| Field | Type | Required | Description |
|---|---|---|---|
listingUrls | array of URLs | No | Skiresort.com country or region directory pages to crawl. Pagination is followed automatically up to Max Resorts. |
resortUrls | array of URLs | No | Specific Skiresort.com resort pages to scrape directly, without crawling a country listing first. |
countryFilter | string | No | Only keep resorts whose parsed country matches this text (case-insensitive, partial match), e.g. "France". A resort with no parsed country is left out when this is set. |
minRating | number | No | Only keep resorts with a Skiresort.com test rating of at least this many stars out of 5. |
minTopElevationM | integer | No | Only keep resorts whose highest point reaches at least this many metres above sea level. |
minSlopeTotalKm | number | No | Only keep resorts with at least this many kilometres of total marked slopes. |
minLiftCount | integer | No | Only keep resorts with at least this many lifts in total. |
maxItems | integer | No | Maximum number of resorts to return in total, across both the listing crawl and any direct resort URLs. |
fetchFullDetail | boolean | No | When on, also opens each resort's detail page for the slope breakdown, lift types, ticket prices, season start date, and description. Off by default since it adds one extra request per resort. |
proxyConfiguration | object | No | Proxy settings. Defaults to Apify's datacenter proxy, which this target does not need residential IPs to reach. |
All five filters check fields already present on the listing-page summary card, so they apply identically whether or not Fetch Full Resort Detail Page is on, and they never trigger an extra request. A resort missing the data a filter checks is left out when that filter is set, since it cannot be verified either way.
📤 Output
Each item in the dataset looks like this:
{"resortId": "97","name": "KitzSki – Kitzbühel/Kirchberg","detailUrl": "https://www.skiresort.com/en/ski-resort/kitzski-kitzbuehel-kirchberg/","continent": "Europe","country": "Austria","regionPath": ["Europe", "Austria", "Tyrol (Tirol)", "Tiroler Unterland", "Kitzbühel (District)", "Kitzbühel"],"ratingValue": 4.9,"ratingLabel": "Test result","baseElevationM": 800,"topElevationM": 2000,"verticalDropM": 1200,"slopeTotalKm": 188,"slopeEasyKm": 102,"slopeIntermediateKm": 66,"slopeDifficultKm": 20,"liftCount": 58,"ticketPriceAdult": "€ 83,-","ticketPriceYouth": "€ 62.50","ticketPriceChild": "€ 41.50","seasonStartDateRaw": "06.11.2026","sourceUrl": "https://www.skiresort.com/en/ski-resort/kitzski-kitzbuehel-kirchberg/","scrapedAt": "2026-09-29T12:00:00.000Z"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
📊 Data table
| Field | Type | Description |
|---|---|---|
name | string | Resort name. |
detailUrl | string | Link to the resort's own page on Skiresort.com. |
continent / country | string | Continent and country, taken from the resort's own region breadcrumb. |
regionPath | array | Full region breadcrumb, from continent down to the most specific listed area. |
ratingValue / ratingLabel | number / string | Skiresort.com's own test rating out of 5, and whether it's a full test result or a basic evaluation. |
baseElevationM / topElevationM | number | Base and summit elevation in metres. |
verticalDropM | number | Vertical drop in metres. (full detail mode only) |
slopeTotalKm / slopeEasyKm / slopeIntermediateKm / slopeDifficultKm | number | Slope length in kilometres, total and by difficulty. |
slopeBreakdown | object | Full slope breakdown including ski routes kilometres. (full detail mode only) |
liftCount / liftCountTotal | number | Total number of lifts. |
liftsByType | array | Lift counts broken down by type, e.g. gondola, chairlift, t-bar. (full detail mode only) |
extras | array | Extra features shown on the listing card, e.g. "Cat-skiing". |
priceText | string | Ski pass price as shown on the listing card. |
ticketPriceAdult / ticketPriceYouth / ticketPriceChild | string | Day-ticket prices by age group, main season. (full detail mode only) |
seasonStartDateRaw | string | Season start date exactly as shown on the page at scrape time. Not a live snow or lift-status feed, see the note below. |
description | string | Resort description text. (full detail mode only) |
sourceUrl / scrapedAt | string | The exact page scraped and when, so you can judge freshness for yourself. |
💰 Pricing
Skiresort.com Scraper uses Apify's pay-per-event pricing: $3.50 per 1,000 resort records returned. You only pay for the resorts actually returned, an empty run costs nothing, and there's no subscription to manage.
Free plan runs are limited to 25 resorts per run, 3 runs per day, and a short wait between runs. Upgrade to a paid Apify plan to remove these limits.
⭐ Enjoying Skiresort.com Scraper?
| If this Actor saved you from copying resort data by hand, a quick rating helps other travel builders find it too. ⭐⭐⭐⭐⭐ |
🛠️ Tips or advanced options
- Leave Fetch Full Resort Detail Page off for a fast overview sweep across a whole country; turn it on only when you need the slope, lift-type, or pricing breakdown, since it adds one request per resort.
- Combine a Listing URL with a low Max Resorts for a quick preview before committing to a full country run.
- Use Direct Resort URLs when you already know which specific resorts you want, instead of crawling a whole directory to find them.
- Stack the Resort & Search Filters (country, rating, elevation, slope length, lift count) to narrow a broad directory like Europe down to exactly the resorts you care about, at no extra request cost either way.
- Season start date and any lift status reflect the page at the time it was scraped. Re-run this Actor closer to your travel dates for the freshest seasonal fields, and don't treat older runs as a live snow report.
❓ FAQ
Does this need a Skiresort.com account or login? No. It reads Skiresort.com's own public directory and resort pages. No account, login, or API key needed.
Is the season start date and lift status always current?
No. These fields reflect whatever Skiresort.com's page showed at the moment of the scrape, which is why every item carries a scrapedAt timestamp. This Actor is a directory and comparison tool, not a live snow or safety feed.
Why is full detail mode off by default? It visits each resort's own page for fields the listing page doesn't show, like lift types and ticket prices by age group. That's one extra request per resort, so it's an opt-in.
Is this legal? This Actor reads publicly available directory and resort pages that require no login. It does not access any private, paywalled, or authenticated data. Always review the target site's terms before large-scale or commercial use, and reach out via the Issues tab with any questions.
🔗 Other actors
- Choice Hotels Scraper: Room Rates, Reviews & Rate-Drop Alerts ↗ - tracks Choice Hotels room rates and reviews.
- Ostrovok Hotels Scraper: Отели Островок ↗ - pulls hotel listings and rates from Ostrovok.
- PlugShare Scraper: EV Charging Station Data ↗ - extracts EV charging station locations and details.
- AirDNA Scraper: STR Market Revenue, Occupancy, ADR & YoY Trends ↗ - pulls short-term rental market data by location.
- Award Flights Scraper: Miles, Seats & Taxes ↗ - tracks award flight availability and pricing.