# ClassPass Studios Scraper - Gyms, Contacts, Classes & Reviews (`scrapersdelight/classpass-studios-scraper`) Actor

Scrape ClassPass studios, gyms, spas and salons by city and activity: activities, address with GPS, rating breakdown, website, phone, emails, Instagram, amenities, booking platform and demand signal. Optional class schedule with credits and review history. Monitor mode returns only new venues.

- **URL**: https://apify.com/scrapersdelight/classpass-studios-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.45 / 1,000 classpass venues

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does ClassPass Studios Scraper do?

**ClassPass Studios Scraper** extracts ClassPass studios, gyms, spas and salons from [classpass.com](https://classpass.com) by city, neighborhood, ZIP or GPS point. Each dataset row is one ClassPass venue with its activities, address and GPS, rating with a 1-5 star breakdown, website, phone, emails, Instagram/Facebook, amenities, booking platform and weekly demand signal. Built for fitness and wellness marketers, B2B sales teams selling to studios, franchise and real-estate analysts, and wellness apps.

ClassPass scraper · ClassPass studios scraper · ClassPass gym list · fitness studio leads

- **Venue leads with contacts:** website on 81-97% of venues, phone on 63-88%, a published email on 14-35%, Instagram on 93-97% (measured on our test runs, see the Fields table).
- **Every venue in a city:** search a city, neighborhood, ZIP or `lat,lon`; ClassPass reported 4,704 venues for New York and we read 1,000 of them in one test run.
- **ClassPass's own filters:** activities (yoga, pilates, barre, boxing, massage, facial ...), category (fitness, wellness, beauty) and amenities (showers, lockers, parking).
- **Class schedule:** upcoming classes with instructor, start/end time, duration, level, credits and availability.
- **Review history:** written reviews with rating, date, class and instructor (thousands per big studio).
- **Monitor mode:** a scheduled run returns only venues it has not delivered before.
- **No login, cookies or API key:** paste places or venue links; that is all.
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, API and MCP.

### What data can you get from ClassPass?

<table>
<tr>
<td>🏋️ Venue name + branch (`studioName`, `subtitle`)</td>
<td>🧘 Activities (`activities`)</td>
<td>🗂️ Category: Fitness, Wellness, Beauty, Food and Drink</td>
</tr>
<tr>
<td>📍 Address, city, state, ZIP, country</td>
<td>🗺️ GPS (`latitude`, `longitude`) + km from your search</td>
<td>🏙️ Neighborhood</td>
</tr>
<tr>
<td>⭐ Rating + ratings count</td>
<td>📊 1-5 star breakdown (`ratingBreakdown`)</td>
<td>🔥 Demand: "500+ bookings this week"</td>
</tr>
<tr>
<td>🌐 Website</td>
<td>☎️ Phone</td>
<td>✉️ Emails</td>
</tr>
<tr>
<td>📸 Instagram</td>
<td>👍 Facebook, X, Yelp links</td>
<td>🚿 Amenities: showers, lockers, mats, towels, parking</td>
</tr>
<tr>
<td>🗓️ Booking platform (MINDBODY, Mariana Tek ...)</td>
<td>💸 Average ClassPass discount %</td>
<td>🏳️‍🌈 Inclusivity labels (woman-owned, LGBTQ-friendly ...)</td>
</tr>
<tr>
<td>📅 Classes: time, instructor, level, credits</td>
<td>💬 Reviews: author, rating, text, date</td>
<td>🖼️ Logo, main image, gallery, YouTube videos</td>
</tr>
</table>

### How to scrape ClassPass with ClassPass Studios Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) (it comes with monthly free credit).
2. Open **ClassPass Studios Scraper** and type one or more **Locations**, for example `New York` or `Austin, TX`.
3. Optional: add **Activities**, a **Category** or **Amenities**, and switch on **Class schedule** or **Review history**.
4. Set **Max venues** and click **Start**.
5. Download the venues as JSON, CSV or Excel, or connect the dataset to your tools.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `locations` | List | City, neighborhood, ZIP/postcode, address or `lat,lon`, one search per line: `"New York"`, `"Shoreditch, London"`, `"10011"`. Empty (and no venues) = New York. |
| `venues` | List | Known venues: a ClassPass studio link, its alias or numeric id: `"https://classpass.com/studios/barrys-park-ave-south-new-york"`, `"crunch-gym-union-square-new-york"`, `"36301"`. |
| `latitude` / `longitude` | Number | One search point instead of a place name; radius from `radiusKm`, else 5 km. |
| **🎯 Filters** (applied by ClassPass) | | |
| `activities` | List | ClassPass activity names: `"yoga"`, `"pilates"`, `"hot yoga"`, `"spin"`, `"massage"`. Several = venues offering any of them. |
| `category` | Select | All categories / Fitness / Wellness / Beauty. Default: all. |
| `amenities` | Multi-select | Showers, Lockers, Parking: venues with every amenity picked. |
| `radiusKm` | Integer | Search radius in km. `0` (default) = ClassPass's own area for the place (New York 34 km, Austin 32 km). |
| **✂️ Refine results** | | |
| `minRating` | Number | Only venues rated at least this, e.g. `4.7`. Default: `0` (off). |
| `minReviewCount` | Integer | Only venues with at least this many ratings. Default: `0`. |
| `withContactOnly` | Boolean | Only venues with a website, phone or email. Default: `false`. |
| **➕ Extra data** | | |
| `includeDetails` | Boolean | GPS, contacts, socials, amenities, rating breakdown, booking platform, photos. Included in the venue price. Default: `true`. |
| `includeSchedule` | Boolean | Upcoming classes per venue. Included in the venue price. Default: `false`. |
| `scheduleDays` / `maxClassesPerVenue` | Integer | Days of classes from now (1-7, default 1) and the cap per venue (default 50). |
| `includeReviews` | Boolean | Written reviews per venue, newest first, charged per review (**review** event). Default: `false`. |
| `maxReviewsPerVenue` | Integer | Reviews per venue, default 20, up to 5,000. |
| **🔁 Monitoring** | | |
| `monitorMode` | Boolean | Return only venues this search did not deliver in earlier runs. Pair it with a schedule. |
| `monitorStoreName` | Text | Named store that remembers delivered venues, one per monitored list. |
| **📦 Output** | | |
| `maxResults` | Integer | Venues in total. Default `100`; `0` = everything ClassPass lists. |
| `maxResultsPerLocation` | Integer | Cap per location line; `0` = none. |
| `compact` | Boolean | Core fields only (name, link, activities, address, GPS, rating, website, phone, email, Instagram, booking platform). |
| **⚙️ Advanced** | | |
| `proxyConfiguration` | Proxy | Direct by default. Requests ClassPass refuses are retried through Apify residential and, last, Apify's Unblocker; pick Apify datacenter groups or your own proxy URLs to add them as a rung. |
| `maxConcurrency` | Integer | Venues read in parallel, default 8. |

#### Input JSON

```json
{
  "locations": ["Austin, TX"],
  "activities": ["yoga"],
  "maxResults": 15,
  "minRating": 4.5,
  "includeSchedule": true,
  "scheduleDays": 2,
  "includeReviews": true,
  "maxReviewsPerVenue": 30
}
```

#### Search a place, not a business name

`locations` takes places: a city, neighborhood, ZIP/postcode or address, resolved by ClassPass's own location search (the first match is used, and the run summary shows what it matched, e.g. `"New York" -> New York, radius 34.4 km`). To get specific studios, paste them into `venues` instead.

#### Use activity names exactly as ClassPass shows them

Activities match ClassPass's own list (yoga, hot yoga, vinyasa yoga, pilates, reformer pilates, barre, boxing, cycling, HIIT, strength training, massage, facial, sauna, nails ...). A word that is not a list name goes through ClassPass's search box (`"spin"` -> Spin). A word that matches nothing is listed in the run summary and skipped, never searched unfiltered.

#### Narrow big cities with a radius or a cap per location

A city name searches ClassPass's whole area for it. For a few neighborhoods, use one line each (`"Williamsburg, Brooklyn"`, `"Park Slope"`) or set `radiusKm`, and `maxResultsPerLocation` so one line does not use the whole run.

### ⬆️ Output

One item per venue. A real row from our New York test run (long text shortened):

```json
{
  "venueId": 2879,
  "studioName": "Barry's",
  "subtitle": "Chelsea",
  "url": "https://classpass.com/studios/barrys-chelsea-new-york",
  "activities": ["Strength Training", "Bootcamp", "HIIT", "Running"],
  "categories": ["Fitness"],
  "address": "135 W 20th St, New York, NY 10011, USA",
  "neighborhood": "Chelsea",
  "latitude": 40.7418488,
  "longitude": -73.9956287,
  "rating": 4.83,
  "reviewCount": 223174,
  "ratingBreakdown": { "1": 704, "2": 892, "3": 5414, "4": 22231, "5": 193933 },
  "website": "http://www.barrys.com",
  "phone": "6465592721",
  "email": "frontdeskchelsea@barrysbootcamp.com",
  "instagramUrl": "https://www.instagram.com/barrys/",
  "amenities": ["Showers", "Lockers", "Mats", "Towels"],
  "bookingPlatform": "MARIANATEK",
  "demandSignal": "500+ bookings this week",
  "averageDiscountPercent": 23,
  "searchRank": 3
}
```

With **Class schedule** and **Review history** on (Black Swan Yoga Westgate, Austin):

```json
{
  "creditsMin": 7,
  "creditsMax": 7,
  "classes": [
    { "className": "Flow", "instructor": "Abby Fine", "startTime": "2026-10-14T07:15:00-05:00",
      "endTime": "2026-10-14T08:00:00-05:00", "duration": "45 min", "difficultyLevel": "Open Level",
      "credits": 7, "status": "available", "demandSignal": "2+ ClassPassers are attending" }
  ],
  "reviewsTotal": 3442,
  "reviews": [
    { "author": "Anya", "rating": 5, "date": "2026-10-09T12:31:20.000Z", "className": "Flow",
      "instructor": "Jacquelyn Ochoa", "reviewText": "Loved everything about the 6am Friday class ..." }
  ]
}
```

#### Fields

Fill = share of rows with a value on our test runs, as a range over three samples: New York's top 100 venues, New York's top 1,000, and 75 venues across New York, Austin and London.

| Field | Type | What it is | Fill |
|---|---|---|---|
| `venueId`, `alias`, `url` | number, string | ClassPass venue id, alias and studio link | 100% |
| `studioName`, `subtitle` | string | Name and branch label | 100%, 45-67% |
| `activities`, `categories` | array | What the venue offers; its ClassPass categories | 100%, 96-97% |
| `description` | string | The venue's ClassPass description | 100% |
| `address`, `streetAddress`, `city`, `zipCode`, `country` | string | Address parts | 100% |
| `state` | string | State / region (UK venues have none) | 67-99% |
| `addressLine2` | string | Suite / unit | 5-18% |
| `neighborhood` | string | ClassPass neighborhood | 21-43% |
| `latitude`, `longitude`, `timezone`, `distanceKm` | number, string | GPS, time zone, km from your search point | 100% |
| `rating`, `ratingBreakdown` | number, object | Average rating and ratings per star (null when the venue has none or hides them) | 73-97% |
| `reviewCount`, `ratingDisplayTotal` | number, string | Ratings count, and how ClassPass displays it | 100% |
| `website` | string | Venue website | 81-97% |
| `phone` | string | Phone as published | 63-88% |
| `email`, `emails` | string, array | Published contact emails | 14-35% |
| `instagramHandle`, `instagramUrl` | string | Instagram | 93-97% |
| `facebookUrl` / `twitterUrl` / `yelpUrl` | string | Social links | 70-77% / 22-37% / 3% |
| `amenities` | array | Showers, Lockers, Mats, Towels, Parking | 53-89% |
| `bookingPlatform`, `bookingWindow` | string | Booking system ClassPass syncs with; how far ahead classes open | 99-100% |
| `whenToArrive`, `whatToBring`, `howToGetThere`, `proTip` | string | Visit guidance | 98-100%; pro tip 10-20% |
| `serviceTypes` | array | CLASS / APPOINTMENT / SKU | 76-88% |
| `demandSignal` | string | e.g. "250+ bookings this week" | 67-81% |
| `averageDiscountPercent` | number | Average ClassPass discount vs drop-in | 58-60% |
| `isNew`, `inclusivity` | boolean, array | New on ClassPass; inclusivity labels | 100%, 42-65% |
| `logoUrl`, `imageUrl`, `photos`, `videos` | string, array | Images and YouTube videos | 100%, 100%, 92-99%, 15-21% |
| `featuredReviews` | array | Reviews ClassPass features on the search card | 65-95% |
| `classes`, `creditsMin`, `creditsMax` | array, number | Upcoming classes (Class schedule on); credits on 53% of classes, so the range is on 93% of venues | Austin yoga test: 100% of venues, 186 classes |
| `reviews`, `reviewsTotal` | array, number | Review history (Review history on) | Austin yoga test: 15/15 venues, 450 reviews |
| `searchLocation`, `searchActivities`, `searchRank`, `scrapedAt` | | Which search found the venue, its rank there, when | 100% |

Class fields: `scheduleId`, `classId`, `className`, `instructor` (61% overall: gym-time slots have none; instructor-led studios 100%), `startTime`, `endTime` (with the venue's UTC offset), `duration`, `durationMinutes`, `difficultyLevel`, `activities`, `credits`, `status`, `demandSignal`, `isLivestream`, `classRating`, `classReviewCount`. Review fields: `reviewId`, `author` (null when the reviewer hides their name: 9% on our test), `rating`, `reviewText`, `date`, `className`, `instructor`.

Not available: ClassPass's signed-out schedule does not say how many spots are left (only an availability `status`), and it shows class prices in ClassPass credits, not dollars.

### How can I use ClassPass data?

- 📇 **Studio lead lists:** website, phone, email and Instagram for every yoga, pilates or boxing studio in a city.
- 🧭 **Market mapping:** count studios by activity, neighborhood and booking platform before opening a location.
- 🛠️ **Sell to studios:** booking-software, payments and marketing vendors can see which platform each venue uses.
- 📈 **Demand tracking:** weekly booking signals and ratings over time with a scheduled run.
- 🗓️ **Class aggregators:** upcoming classes with instructor, level and credits.
- 💬 **Review analysis:** what members say about instructors and classes.

### How much does it cost to scrape ClassPass?

ClassPass Studios Scraper is pay-per-event (the Pricing tab always shows the live rate): one **venue** event per venue delivered to your dataset; the class schedule is included. Review history adds one **review** event per review delivered. There is no start fee, and venues removed by your filters, already delivered in monitor mode, closed or unreachable are not charged.

| Venues delivered | Venues at $0.45 per 1,000 | + 20 reviews each at $0.18 per 1,000 |
|---|---|---|
| 10 | $0.0045 | $0.0081 |
| 100 | $0.045 | $0.405 |
| 1,000 | $0.45 | $4.05 |
| 10,000 | $4.50 | $40.50 |

Apify's free plan includes monthly free credit.

### Integrations, API, scheduling & MCP

Run it on a **schedule** (daily, weekly) with **Only new venues** on and send new venues to Google Sheets, Slack, email, a webhook, Make, Zapier or n8n from the Integrations tab. Call it from code with the [Apify API](https://apify.com/scrapersdelight/classpass-studios-scraper/api) (`apify-client` for [Python](https://apify.com/scrapersdelight/classpass-studios-scraper/api/python) and [JavaScript](https://apify.com/scrapersdelight/classpass-studios-scraper/api/javascript)), or let an AI agent use it through the [Apify MCP server](https://apify.com/scrapersdelight/classpass-studios-scraper/api/mcp). `compact: true` keeps rows small for LLM pipelines.

### More fitness and local business scrapers

- [MINDBODY Scraper](https://apify.com/scrapersdelight/mindbody-scraper): fitness, beauty and wellness businesses listed on MINDBODY.
- [Booksy Salon Scraper](https://apify.com/scrapersdelight/booksy-salon-scraper): salons and barbers with services and prices.
- [Yelp Business Scraper](https://apify.com/scrapersdelight/yelp-business-scraper): any local business with phone, address and rating.
- [Google Maps Polygon Scraper](https://apify.com/scrapersdelight/google-maps-polygon-scraper): every business inside an area you draw.

### Limits & empty runs

- Speed on our test runs (venue details on): 100 venues in about 4 seconds when ClassPass answers directly and 16-27 seconds when every request has to go through a residential proxy; 1,000 venues in about 95 seconds. The schedule and reviews add one call per venue-day and one per 50 reviews.
- `RUN_SUMMARY` in the key-value store shows, per search, ClassPass's own total, pages read, venues delivered, and the venues filtered, closed or unreachable.
- A place ClassPass does not know, or a search with no venues, ends with a clear message and costs nothing. A venue link that no longer exists is listed as closed/removed and costs nothing.
- Credits appear on about half of the classes in the signed-out schedule; the rest show none.

### FAQ

#### How much does ClassPass Studios Scraper cost?

$0.45 per 1,000 venues with details and the class schedule, plus $0.18 per 1,000 reviews when Review history is on. No start fee; see the Pricing tab for the live rate.

#### How many venues can ClassPass Studios Scraper collect in one run?

As many as ClassPass lists for your locations. ClassPass reported 4,704 venues in its New York area; our test run read 1,000 of them in 10 pages of 100. Use several locations or `maxResults: 0` for more.

#### Can I get only new studios on a schedule?

Yes. Turn on **Only new venues** (`monitorMode`) and schedule the actor. Each run delivers only venues that search has not delivered before; on our test, the second run of the same search returned 0 venues and charged nothing.

#### Does ClassPass Studios Scraper return contact details?

Yes, whatever the venue publishes on ClassPass: website (81-97% of venues on our tests), phone (63-88%), email (14-35%), Instagram (93-97%), Facebook, X and Yelp links.

#### Can it scrape class schedules?

Yes. Turn on **Class schedule**: each venue gets its classes for the next 1-7 days with instructor, start and end time, duration, level, credits and availability.

#### Can it scrape ClassPass reviews?

Yes. Turn on **Review history** and set **Max reviews per venue**. Reviews come newest first with author, rating, text, date, class and instructor.

#### Do I need a ClassPass account, cookies or an API key?

No. Everything comes from what ClassPass shows signed-out.

#### Can I use ClassPass Studios Scraper with the Apify API or an MCP server?

Yes, see the API tab for Python, JavaScript and HTTP examples, and the MCP tab to connect it to an AI agent.

#### Why did my run return no venues?

The location was not recognised (check the run summary), the filters removed every venue (try without `minRating` or `withContactOnly`), or monitor mode had already delivered every venue. None of these cost anything.

#### How is it different from other ClassPass scrapers?

It reads ClassPass's own data rather than rendering pages, so it is fast and cheap, and it adds contacts, GPS, the 1-5 star breakdown, booking platform, demand signals, the full review history, venue lookups and monitor mode.

#### Your feedback

Found a problem or need a field? Open an issue on the Issues tab and we will look at it.

# Actor input Schema

## `locations` (type: `array`):

One search per line: a city, neighborhood, ZIP/postcode or address, e.g. "New York", "Austin, TX", "Shoreditch, London", "10011", or "40.7359,-73.9911". Empty (and no venues) = New York.

## `venues` (type: `array`):

Look up known venues: a ClassPass studio link, its alias or its numeric id, e.g. "https://classpass.com/studios/barrys-park-ave-south-new-york", "barrys-park-ave-south-new-york", "36301".

## `latitude` (type: `number`):

Optional search point instead of a place name, e.g. 40.7359. Use with Longitude; the radius comes from Radius (km) or defaults to 5 km.

## `longitude` (type: `number`):

Optional search point instead of a place name, e.g. -73.9911. Use with Latitude.

## `activities` (type: `array`):

ClassPass activity names, e.g. "yoga", "pilates", "barre", "boxing", "massage", "facial". Several = venues offering any of them. Empty = every venue.

## `category` (type: `string`):

ClassPass's top-level category filter.

## `amenities` (type: `array`):

Only venues that offer every amenity picked.

## `radiusKm` (type: `integer`):

Search radius around each location in km. 0 = ClassPass's own radius for the place (a city searches its whole area, e.g. Austin 32 km).

## `minRating` (type: `number`):

Only venues rated at least this on ClassPass (1-5), e.g. 4.7. 0 = no filter. Unrated venues are dropped when set.

## `minReviewCount` (type: `integer`):

Only venues with at least this many ClassPass ratings, e.g. 100. 0 = no filter.

## `withContactOnly` (type: `boolean`):

Keep only venues that publish a website, phone or email on ClassPass.

## `includeDetails` (type: `boolean`):

Read each venue's page data: GPS, website, phone, emails, Instagram/Facebook, amenities, rating breakdown, booking platform, photos. Included in the venue price. Off = search-card fields only (faster).

## `includeSchedule` (type: `boolean`):

Add each venue's upcoming classes: name, instructor, start/end time, duration, level, credits, availability. Included in the venue price.

## `scheduleDays` (type: `integer`):

How many days of classes to collect, starting today in the venue's time zone (1-7).

## `maxClassesPerVenue` (type: `integer`):

Cap on classes listed per venue, e.g. 50.

## `includeReviews` (type: `boolean`):

Add each venue's written reviews, newest first: author, rating, text, date, class and instructor. Charged per review delivered (the review event).

## `maxReviewsPerVenue` (type: `integer`):

Cap on reviews per venue when Review history is on, e.g. 20. Big studios have thousands.

## `monitorMode` (type: `boolean`):

Skip venues this search already delivered in earlier runs, so a scheduled run returns only venues that joined ClassPass (or newly match your filters). Skipped venues are not charged.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers delivered venues. Use a different name per monitored list, e.g. "nyc-yoga-studios".

## `maxResults` (type: `integer`):

Total venues across all locations and lookups. 0 = everything ClassPass lists (New York: ~4,700 venues in its 34 km area).

## `maxResultsPerLocation` (type: `integer`):

Cap per location line, so one big city does not use the whole run. 0 = no per-location cap.

## `compact` (type: `boolean`):

Core fields only (name, link, activities, address, GPS, rating, website, phone, email, Instagram, booking platform) plus any classes/reviews requested - trimmed for CRMs and LLM pipelines.

## `proxyConfiguration` (type: `object`):

Direct by default. If ClassPass refuses a request, the run retries through Apify residential and, last, Apify's Unblocker under a small per-run allowance it pays itself. Pick Apify datacenter groups to add them as an extra rung, or set your own proxy URLs.

## `maxConcurrency` (type: `integer`):

Venues read in parallel.

## Actor input object example

```json
{
  "locations": [
    "New York"
  ],
  "venues": [],
  "activities": [],
  "category": "all",
  "amenities": [],
  "radiusKm": 0,
  "minRating": 0,
  "minReviewCount": 0,
  "withContactOnly": false,
  "includeDetails": true,
  "includeSchedule": false,
  "scheduleDays": 1,
  "maxClassesPerVenue": 50,
  "includeReviews": false,
  "maxReviewsPerVenue": 20,
  "monitorMode": false,
  "monitorStoreName": "classpass-studios-monitor",
  "maxResults": 20,
  "maxResultsPerLocation": 0,
  "compact": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxConcurrency": 8
}
```

# Actor output Schema

## `venues` (type: `string`):

The dataset of ClassPass venues (one item per venue, with classes and reviews nested when requested).

## `summary` (type: `string`):

Per search: ClassPass's venue total, pages read, venues delivered, filtered/closed/unreachable counts, transport totals.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "New York"
    ],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/classpass-studios-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["New York"],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/classpass-studios-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "New York"
  ],
  "maxResults": 20
}' |
apify call scrapersdelight/classpass-studios-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/classpass-studios-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/f9SqxO87Psa0YoVlS/builds/XxBnZUDG83leHpvff/openapi.json
