# Cvent Hotel Meeting Capacity Scraper - Per-Room Setup Data (`jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-scraper`) Actor

Extract per-room meeting capacity data for hotels on Cvent's supplier network: dimensions, ceiling height, square footage, and capacity across theater, classroom, banquet, reception, u-shape, and conference setups. Built for event planners, RFP automation, DMC firms, and hotel sales intelligence.

- **URL**: https://apify.com/jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Travel, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 record scrapeds

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

## Cvent Hotel Meeting Capacity Scraper - Per-Room Setup Data

Scrape hotel meeting capacity data from Cvent's supplier network: per-room theater, classroom,
banquet, reception, u-shape, hollow square, and conference capacity, room dimensions, and guest
room counts. Built for corporate event planners, meeting RFP automation, DMC firms, hotel sales
competitive intelligence, and event tech.

### What You Get

Each run returns one record per matching hotel:

**Venue identity & location** — name, Cvent venue type, best-effort brand match, quality tier,
street address, city, state, postal code, country, latitude/longitude, distance to the nearest
airport.

**Capacity summary** — total guest rooms, total meeting rooms, summed meeting-room square
footage, largest and second-largest room size, and the largest room's theater-style capacity.

**Per-room capacity chart** — one formatted line per meeting room: name, square footage, ceiling
height, and seating capacity across theater, classroom, banquet, reception, u-shape, hollow
square, and conference setups — the distinctive grid this actor exists to capture.

**Amenities & logistics** — venue amenity list, outdoor event space flag, exhibit booth
availability, complimentary/paid parking, the venue's own marketing description, website, and
canonical Cvent profile URL.

### Use Cases

- **Meeting RFP automation** — Pre-qualify venues by guest rooms, total meeting space, and
  largest-room theater capacity before sending an RFP.
- **DMC (destination management) sourcing** — Build a shortlist of venues in a city or region
  that meet a client's room-count and capacity requirements.
- **Hotel sales competitive intelligence** — Compare your property's meeting space against named
  brands or a market.
- **Event tech integrations** — Feed structured per-room capacity data into a venue-search or
  CRM tool.

### Inputs

| Field                    | Type    | Description |
|--------------------------|---------|---|
| `mode`                   | select  | `by_city`, `by_brand`, or `by_capacity_filter` — labels which filter the input form highlights. Every non-empty filter below applies together regardless of mode. |
| `cities`                 | array   | City names (e.g. `"Austin, TX"`). Leave empty to search all cities. |
| `brands`                 | array   | Hotel brand/chain keywords (e.g. `"Marriott"`, `"Hilton"`) matched against the venue name. Leave empty to include all brands. |
| `minTotalMeetingSf`      | integer | Skip venues below this summed meeting-room square footage. `0` disables the filter. |
| `minLargestRoomCapacity` | integer | Skip venues whose largest room's theater-style capacity is below this. `0` disables the filter. |
| `minGuestRooms`          | integer | Skip venues with fewer guest rooms than this. `0` disables the filter. |
| `maxItems`               | integer | Maximum number of matching venues to return. |

#### Example Input

```json
{
  "mode": "by_city",
  "cities": ["Austin, TX", "Chicago, IL"],
  "brands": [],
  "minTotalMeetingSf": 5000,
  "minLargestRoomCapacity": 200,
  "minGuestRooms": 100,
  "maxItems": 50
}
```

### Output Schema

```json
{
  "venue_id": "de2e47a3-f13d-41da-9140-019d1099a549",
  "venue_name": "The King Charles Hotel",
  "venue_type": "hotel",
  "brand": null,
  "diamond_level": "BASIC",
  "address1": "Brompton Road",
  "city": "Gillingham",
  "state": "KEN",
  "postal_code": "ME7 5QT",
  "country": "England",
  "lat": 51.390637,
  "lng": 0.537635,
  "num_guest_rooms": 97,
  "num_meeting_rooms": 4,
  "total_meeting_sf": 5759,
  "largest_meeting_room_sf": 2799,
  "second_largest_meeting_room_sf": 1001,
  "largest_meeting_room_capacity_theater": 250,
  "meeting_rooms": [
    "Trafalgar Room — 980 sq ft — Theater 50, Classroom 30, Banquet 100, U-Shape 24, Conference 25",
    "Cavalier — 2799 sq ft — Theater 250, Classroom 150, Banquet 300, Conference 60"
  ],
  "distance_to_airport_mi": 45.4,
  "outdoor_event_space": false,
  "exhibit_space_available": false,
  "parking_complimentary": true,
  "parking_paid": true,
  "amenities": ["Internet", "Laundry", "Room Service"],
  "venue_description": "...",
  "website": "http://www.kingcharleshotel.co.uk",
  "venue_url": "https://www.cvent.com/venues/gillingham/hotel/the-king-charles-hotel/venue-de2e47a3-f13d-41da-9140-019d1099a549"
}
```

### How It Works

Cvent's supplier network lists hotels, and each listing reads its per-room meeting capacity grid
straight off the venue's own profile page — no document to download, no account required. `brand`
is a best-effort match against known hotel chain names: Cvent doesn't publish a structured brand
field, so this is populated where the venue name makes the chain obvious and left blank otherwise.

### Resuming a Large Crawl

A run that stops partway through — timeout, manual abort, a transient error — can be continued
without re-paying for records it already saved. The run's log and Actor output carry a
`resumeCursor` value; pass it back in as the `resumeCursor` input field on a new run to pick up
where the previous one left off.

### Limits and Notes

- All data is public on Cvent's supplier network — no account required.
- Cvent does not model hotel brand/chain as structured data, so `brand` is sparse by design —
  expect it populated for well-known chains and blank for independent properties.
- A handful of properties carry a meeting-room count but ship no per-room breakdown; those still
  pass through with `num_meeting_rooms` populated and an empty `meeting_rooms` array.
- Set `maxItems` to a small value (10–50) for quick tests; a broad, unfiltered query draws from
  Cvent's full global venue corpus (hundreds of thousands of hotels).

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

## `mode` (type: `string`):

Primary filter axis. All non-empty filters below apply together regardless of mode — mode only picks which one the input form highlights.

## `cities` (type: `array`):

City names to match against the venue's Cvent city slug (e.g. 'Austin, TX' matches city slug 'austin'). Leave empty to search all cities.

## `brands` (type: `array`):

Hotel brand/chain keywords (e.g. 'Marriott', 'Hilton') matched against the venue name. Cvent does not expose a structured brand field, so this is a best-effort name match. Leave empty to include all brands.

## `minTotalMeetingSf` (type: `integer`):

Skip venues whose summed meeting-room square footage is below this threshold. 0 disables the filter.

## `minLargestRoomCapacity` (type: `integer`):

Skip venues whose largest room's theater-style capacity is below this threshold. 0 disables the filter.

## `minGuestRooms` (type: `integer`):

Skip venues with fewer guest rooms than this threshold. 0 disables the filter.

## `maxItems` (type: `integer`):

Maximum number of matching venues to return.

## Actor input object example

```json
{
  "sp_contact": "Share your email here...",
  "mode": "by_city",
  "cities": [
    "Austin, TX",
    "Chicago, IL"
  ],
  "brands": [],
  "minTotalMeetingSf": 5000,
  "minLargestRoomCapacity": 200,
  "minGuestRooms": 100,
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "sp_contact": "Share your email here...",
    "mode": "by_city",
    "cities": [
        "Austin, TX",
        "Chicago, IL"
    ],
    "brands": [],
    "minTotalMeetingSf": 5000,
    "minLargestRoomCapacity": 200,
    "minGuestRooms": 100,
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-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 = {
    "sp_contact": "Share your email here...",
    "mode": "by_city",
    "cities": [
        "Austin, TX",
        "Chicago, IL",
    ],
    "brands": [],
    "minTotalMeetingSf": 5000,
    "minLargestRoomCapacity": 200,
    "minGuestRooms": 100,
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-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 '{
  "sp_contact": "Share your email here...",
  "mode": "by_city",
  "cities": [
    "Austin, TX",
    "Chicago, IL"
  ],
  "brands": [],
  "minTotalMeetingSf": 5000,
  "minLargestRoomCapacity": 200,
  "minGuestRooms": 100,
  "maxItems": 10
}' |
apify call jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/cvent-hotel-meeting-capacity-pdf-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/quseb69H3KjMBBcy3/builds/Lyk7sQCEDNhERLPIl/openapi.json
