# Partiful Events Scraper: Explore, Event & Host Events (`tidyharvest/partiful-events-scraper`) Actor

Public Partiful events from city Explore pages (SF, NYC, LA, Boston, DC, Chicago, Austin, Miami, London), event URLs or host profiles: time and timezone, venue, address, coordinates, hosts, price, capacity, RSVP state. No login. $2.10 per 1,000 events.

- **URL**: https://apify.com/tidyharvest/partiful-events-scraper.md
- **Developed by:** [TidyHarvest](https://apify.com/tidyharvest) (community)
- **Categories:** Social media, Travel, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 event scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Partiful Events Scraper: Explore, Event & Host Events

Get **public Partiful events** as clean data: every event on a city's **Partiful Explore** page (San Francisco, New York, Los Angeles, Boston, D.C., Chicago, Austin, Miami, London), any **event URL**, or every upcoming event of a **host profile**. Each row has the **title, description, start/end time with timezone, venue, full address, city, coordinates, hosts, price and ticketing, capacity (full or not), RSVP and approval state, categories, cover image, .ics calendar link and the Partiful URL**. **$2.10 per 1,000 events** (less on paid plans), no login, no proxy.

One actor covers all three ways people find Partiful events: browse a city, look up specific events, or follow a host. Deep city mode also reads Partiful's own category and date pages (Parties, Free, Food & pop-ups, This weekend...), which finds about 20% more events than the Explore page alone.

### What you can do with it

- **Build an events calendar or newsletter** for your city: pull every public Partiful event weekly and merge it with Eventbrite, Luma and Meetup.
- **Follow hosts and venues:** put the profiles of clubs, run crews, venues or brands you track in `hostUrls` and get their new events as soon as they are posted.
- **Enrich event links you already have:** paste Partiful links from newsletters, group chats or other calendars and get the date, venue, address and coordinates for each.
- **Market research:** see what kinds of events, prices and hosts trend in each city, and which events fill up.
- **Feeds for apps, maps and AI agents:** one tidy JSON row per event with lat/lon, local time and timezone.

### How to use it

1. Pick **cities** (e.g. `sf`, `nyc`), and/or paste **event URLs**, and/or **host profile URLs**.
2. Optional: date range, free/paid, keywords, in-person only, `maxItems`.
3. Click **Start**, then download JSON, CSV or Excel, or connect to Sheets, Zapier, Make or the API.

### Input

| Field | What it does |
|---|---|
| `cities` | Partiful Explore cities: `sf`, `nyc`, `la`, `bos`, `dc`, `chi`, `atx`, `mia`, `lon` (names like `San Francisco` or `https://partiful.com/explore/nyc` work too). |
| `eventUrls` | `https://partiful.com/e/<id>` links or bare event IDs. |
| `hostUrls` | `https://partiful.com/u/<id>` host profiles or IDs. Returns the host's upcoming public events. |
| `includePastHostEvents` | Also return hosts' past events (newest first). Default off. |
| `includeFacetPages` | Deep city crawl through Partiful's category/date pages. Default on. |
| `includeEventDetails` | Open each Explore event's page for hosts, price, capacity, RSVP/approval state. Default on; turn off for a fast feed-only run. |
| `startDateFrom` / `startDateTo` | Only events starting in this date range. |
| `eventPrice` | `all`, `free` or `paid`. |
| `keywords` | Keep events whose title, description, venue, address, hosts or categories contain any of these. |
| `includeOnline` | Turn off to keep in-person events only. |
| `maxItems` | Hard cap on events (and cost), shared fairly across your cities. Default 100. |

Sources run in this order: event URLs, then host profiles, then cities. Events are de-duplicated across sources.

Examples:

```json
{ "cities": ["sf", "nyc"], "startDateTo": "2026-11-30", "eventPrice": "free", "maxItems": 300 }
```

```json
{ "hostUrls": ["https://partiful.com/u/96zWlHxa9R49qlpyJKO7"], "includePastHostEvents": true }
```

```json
{ "eventUrls": ["https://partiful.com/e/Ih0SQgljjKfLZSrxPusA"] }
```

### Output

One item per event (real record, shortened; this event has four hosts):

```json
{
  "id": "vER83EMgG4AIFkRsnL1u",
  "url": "https://partiful.com/e/vER83EMgG4AIFkRsnL1u",
  "title": "Free Halloween Costume Swap & Craft Night",
  "description": "FREE HALLOWEEN COSTUME SWAP + CRAFT NIGHT
Hosted by Public Works

Got a costume collecting dust in your closet? ...",
  "startAt": "2026-10-16T02:00:00.000Z", "endAt": "2026-10-16T07:00:00.000Z",
  "timezone": "America/Los_Angeles",
  "startLocal": "2026-10-15T19:00:00", "endLocal": "2026-10-16T00:00:00",
  "dateTBD": false,
  "venueName": "Public Works",
  "address": "161 Erie St, San Francisco, CA 94103",
  "neighborhood": "Inner Mission", "city": "San Francisco", "region": "CA", "postalCode": "94103", "country": "US",
  "latitude": 37.77, "longitude": -122.42,
  "isOnline": false, "locationType": "structured",
  "googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=161%20Erie%20St%2C%20San%20Francisco%2C%20CA%2094103",
  "imageUrl": "https://firebasestorage.googleapis.com/...",
  "isPublic": true, "visibility": "public", "publication": "published",
  "isFull": false, "maxCapacity": null, "rsvpOpen": true, "requiresApproval": null, "waitlistEnabled": null,
  "isTicketed": false, "isFree": true, "price": 0, "priceMax": 0, "currency": "USD",
  "goingCount": 105, "interestedCount": 155, "waitlistCount": 0,
  "hostNames": "Public Works", "hostIds": ["Zqhmzd0wcuLTxg85kjGP"],
  "categories": ["FALL"], "exploreSections": ["All Things Fall"],
  "customFields": ["Halloween Costume!"],
  "calendarFileUrl": "https://storage.googleapis.com/.../event.ics",
  "shortUrl": "https://go.partiful.com/1JWc8lQR",
  "publishedAt": "2026-08-22T21:18:29.936Z",
  "detailed": true,
  "sourceType": "explore", "sourceCity": "sf", "sourceUrl": "https://partiful.com/explore/sf",
  "scrapedAt": "2026-10-16T00:03:45Z",
  "schedule": {"startAt": "...", "endAt": "...", "timezone": "America/Los_Angeles"},
  "location": {"name": "Public Works", "address": "...", "city": "San Francisco", "region": "CA", "latitude": 37.77, "longitude": -122.42, "isOnline": false},
  "status": {"visibility": "public", "publication": "published", "capacity": "open", "rsvp": "open"},
  "attendance": {"rsvpBreakdown": [{"status": "going", "count": 105}, {"status": "interested", "count": 155}, {"status": "waitlist", "count": 0}]},
  "hosts": [{"id": "Zqhmzd0wcuLTxg85kjGP", "name": "Public Works", "url": "https://partiful.com/u/Zqhmzd0wcuLTxg85kjGP"}],
  "discovery": {"categories": ["FALL"]},
  "image": {"url": "https://firebasestorage.googleapis.com/..."}
}
```

- Flat fields are for spreadsheets; the nested `schedule`, `location`, `status`, `attendance`, `hosts`, `discovery` and `image` blocks keep the same shape other Partiful actors use, so switching is easy.
- `startLocal`/`endLocal` are in the event's own `timezone`; `startAt`/`endAt` are UTC. `dateTBD` is true when the host has not set a date yet.
- Coordinates come from Partiful's map link and are rounded to about 1 km (2 decimals). Some hosts hide the exact address until you RSVP; then only the city is given.
- Guest counts are the totals Partiful shows on the public page, and only when the host shows them. With `includeEventDetails` off, hosts, price, ticketing and approval fields are empty.

### Pricing

Pay per event, with lower prices on paid Apify plans:

| Event | Free plan | Bronze | Silver | Gold | Platinum / Diamond |
|---|---|---|---|---|---|
| Event (`event-scraped`) | $2.10 / 1,000 | $2.00 / 1,000 | $1.80 / 1,000 | $1.60 / 1,000 | $1.60 / 1,000 |

Host profiles, page loads and skipped events (private, password-protected, deleted or filtered out) are **free**: you pay only for events in your dataset. Filters and `maxItems` apply before you are charged. A run that finds nothing fails with a hint instead of returning an empty dataset.

### Limits and notes

- Only events Partiful marks **public**. Private, link-only "unlisted" and password-protected events are skipped. No guest lists, no guest names and nothing behind a login are ever read.
- Each city's Explore feed lists roughly 20-160 upcoming events (Partiful's own selection); deep mode adds its category and date pages. Partiful supports these Explore cities today: San Francisco, New York, Los Angeles, Boston, Washington D.C., Chicago, Austin, Miami, London. Host and event modes work for events anywhere.
- The actor loads one page at a time, about 1.2 seconds apart, to be gentle on Partiful: about 50 detailed events per minute. Turn off `includeEventDetails` for city feeds in seconds.
- If Partiful starts refusing requests the run stops and keeps what it has.

Data source: public partiful.com pages. Each row links back to its event page. This actor is not affiliated with or endorsed by Partiful. Use the data in line with Partiful's terms and applicable law.

# Actor input Schema

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

Partiful Explore cities to collect public events from. Use a slug or name (`San Francisco`, `Boston, MA`): `sf` (San Francisco), `nyc`, `la`, `bos` (Boston), `dc`, `chi` (Chicago), `atx` (Austin), `mia` (Miami), `lon` (London), or paste `https://partiful.com/explore/<city>`.

## `eventUrls` (type: `array`):

Specific Partiful events: `https://partiful.com/e/<id>` or the bare event ID. Private, password-protected and deleted events are skipped (never charged).

## `hostUrls` (type: `array`):

Partiful host profiles (`https://partiful.com/u/<id>` or the ID). Returns each host's upcoming public events with full details.

## `includePastHostEvents` (type: `boolean`):

Also return the past events listed on each host profile (newest first, after the upcoming ones).

## `includeFacetPages` (type: `boolean`):

Also read each city's Partiful category and date pages (Parties, Free, Food, This weekend, ...). Finds ~20% more events per city for ~10 extra page loads.

## `includeEventDetails` (type: `boolean`):

Open each Explore event's own page for hosts, price/ticketing, capacity, RSVP and approval state, full address and categories. Turn off for a faster feed-only run (no hosts or price). Event and host modes always read the event page.

## `startDateFrom` (type: `string`):

Only events starting on or after this date (YYYY-MM-DD).

## `startDateTo` (type: `string`):

Only events starting on or before this date (YYYY-MM-DD).

## `eventPrice` (type: `string`):

Keep free or paid events only (uses the event page, so needs full details).

## `keywords` (type: `array`):

Keep an event only if its title, description, venue, address, hosts or categories contain one of these. Empty = all.

## `includeOnline` (type: `boolean`):

Turn off to keep in-person events only.

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

Hard cap on events for the whole run (also caps your cost), shared fairly across your cities: a small city's unused share goes to the bigger ones.

## Actor input object example

```json
{
  "cities": [
    "sf"
  ],
  "includePastHostEvents": false,
  "includeFacetPages": true,
  "includeEventDetails": true,
  "eventPrice": "all",
  "includeOnline": true,
  "maxItems": 50
}
```

# Actor output Schema

## `events` (type: `string`):

Public Partiful events with date/time, venue, address, coordinates, hosts, price, capacity and RSVP state, one item per event.

# 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 = {
    "cities": [
        "sf"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidyharvest/partiful-events-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 = {
    "cities": ["sf"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("tidyharvest/partiful-events-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 '{
  "cities": [
    "sf"
  ],
  "maxItems": 50
}' |
apify call tidyharvest/partiful-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tidyharvest/partiful-events-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/WbKGvv4eg6B9Tpw0l/builds/rlJovgWnkWX2Ir4Wd/openapi.json
