# Partiful Scraper: Events, Cities & Organizers (`softprodlabs/partiful-scraper`) Actor

Find public Partiful events in nine cities or extract event and organizer URLs. Filter by local date, keyword and going count. Export schedules, venues, hosts and public RSVP counts as JSON/CSV. No login required.

- **URL**: https://apify.com/softprodlabs/partiful-scraper.md
- **Developed by:** [Software Production Labs](https://apify.com/softprodlabs) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 event or organizer saveds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Partiful Scraper: Events, Cities & Organizers

Find public Partiful events for local newsletters, event calendars, venue research and community discovery. Supply cities or Partiful event/organizer URLs and get structured records with source links. No Partiful login, cookies or external API subscription is required.

### Quick start

Collect five detailed New York events:

```json
{"cities":["nyc"],"maxItems":5,"getEventDetails":true}
```

Filter a city snapshot for a newsletter:

```json
{"cities":["London"],"keyword":"music","startDateFrom":"2026-09-11","startDateTo":"2026-09-30","maxItems":20,"maxRequests":200}
```

Change the example dates for your run. Date filters use each event's published timezone. The end date is inclusive. Keyword matching checks title, description and venue; it does not perform a platform-wide search.

Extract a public event directly:

```json
{"urls":["https://partiful.com/e/QaHfjVa0FI6sWdWYlZdI"],"maxItems":1}
```

Extract a public organizer and its published event snapshot:

```json
{"urls":["https://partiful.com/u/2KgDoRZix3CnC9fcdYUz"],"includeHostEvents":true,"maxItems":20}
```

Use `includeHostEvents: false` to return only the organizer. Date and attendance filters exclude organizer records; keyword filtering checks their name and public bio.

### Cities and URLs

Nine public Explore cities: **New York (nyc), Los Angeles (la), San Francisco (sf), Boston (bos), Washington DC (dc), Chicago (chi), London (lon), Miami (mia), Austin (atx)**. City names and slugs both work. `cities: ["all"]` visits all nine, subject to your result/request limits.

Supported URLs: `/explore`, `/explore/city`, `/e/eventID`, and `/u/hostID` on `https://partiful.com`. Up to 50 URLs. Query tracking parameters are removed. Tagged Explore URLs, short links and unsupported cities produce a clear input error. API callers may use `startUrls` with URL strings or `{ "url": "..." }` objects as an alternative to `urls`.

### What you get

One dataset row per distinct event or organizer, with `recordType` distinguishing them.

| Event fields | Meaning |
| --- | --- |
| `id`, `sourceUrl`, `discoveredFrom` | Stable event ID, canonical source and discovery page |
| `title`, `description` | Published event text |
| `startDate`, `endDate`, `timezone`, `localStartDate` | Source timestamps and calendar date in the event's timezone |
| `city`, `region`, `venueName`, `addressLines`, `neighborhood` | Discovery city and displayed venue information where available |
| `goingGuestCount`, `approvedGuestCount`, `interestedGuestCount`, `maybeGuestCount`, `waitlistGuestCount` | Separate public counters; hidden/missing counts are null |
| `hosts` | Public host names, profiles, public bios and photo links, when full details expose them |
| `status`, `rsvpsEnabled`, `atCapacity` | Public status and RSVP flags, when provided |
| `coverImageUrl`, `shortUrl`, `publishedAt`, `updatedAt` | Published metadata where available |
| `placements` | Discovery sections and positions on the fetched page; not a global ranking |
| `coverage`, `schemaVersion`, `retrievedAt` | Listing/detail level, schema version and extraction timestamp |

Organizer rows include `id`, `sourceUrl`, `name`, public `bio`, `photoUrl` and `isManaged`. Missing optional values remain null. Source timestamps are preserved. An explicit event URL has no inferred discovery city.

`getEventDetails: false` returns faster city/organizer listing snapshots. Direct event URLs always fetch details. Full-detail failures are reported instead of silently substituting incomplete records.

### Controls and cost

| Input | Default | Limit |
| --- | --- | --- |
| `maxItems` | 20 | 1–1,000 total saved records |
| `maxRequests` | 100 | 1–1,100 page requests |
| `getEventDetails` | true | Enrich discovered events |
| `includeHostEvents` | true | Include published organizer-page events |
| `keyword` | none | Case-insensitive phrase |
| `startDateFrom`, `startDateTo` | none | Inclusive event-local start date |
| `minGoing` | 0 | Filter guests marked going; zero disables |

**Base price: $2.00 per 1,000 saved results**, plus **$0.00025 per GB for Actor start (minimum one GB)**. Event and organizer records each count as one result. Duplicate, filtered, private and failed records have no result charge. A run returning no results can still incur the start charge.

| Apify plan | Price per 1,000 results |
| --- | ---: |
| Free | $2.00 |
| Bronze | $1.90 |
| Silver | $1.80 |
| Gold / Platinum / Diamond | $1.70 |

The Store's “from” price is the lowest eligible plan price. Use Apify's maximum charge setting to cap your run. Platform usage is included in this pay-per-event price. Five results at the base price and the minimum start unit cost $0.01025.

### Coverage and failure handling

- City pages contain trending sections, other curated sections and the initial feed. The actor deduplicates event IDs across them. This is the **public HTML snapshot**, not every Partiful event or the complete infinite-scroll feed.
- Organizer pages can include old events and expose a partial published-event history. Use dates to select the period you need.
- Public event pages only: password-protected, nonpublic and unavailable events are rejected. No login, RSVP, guest list collection, private address recovery or access-control bypass is performed.
- Hidden counts and host lists remain hidden. Addresses use displayed address lines, not a more precise address embedded in map metadata.
- The actor does not infer ticket prices or availability from descriptions. Attendance counters are not summed into an ambiguous total.
- Results follow source order. With a low global `maxItems`, an earlier city can consume the cap before later cities. Separate runs are appropriate when you need a quota per city.
- `maxRequests` excludes robots.txt checks and one transient retry per failed request. Requests are paced. No paid proxy is required in tested runs.
- `SUMMARY` records source counts, filters, request/result limits and errors. `ERRORS` lists failed URLs and reasons. A wholly failed run fails explicitly. A valid search with no filter matches succeeds with zero results. Partial failures preserve successful rows and remain visible in both records.

### Use with AI agents and automation

Example prompt: “Use `softprodlabs/partiful-scraper` to find public New York events starting this weekend. Return title, local date, venue and source URL. Check SUMMARY for coverage limits before describing the list as complete.”

Connect via Apify API, MCP, schedules, Make, Zapier or n8n. Use the Store's API tab for generated calls using this actor's actual schema. Export the dataset as JSON, CSV or Excel. Schedule repeated snapshots and compare event IDs in your destination to track changes; this version does not keep a persistent change history.

Built by [Software Production Labs](https://softwareproductionlabs.com). Report a problem in the actor's Issues tab with the run URL and expected result. Independent tool; not affiliated with Partiful.

# Actor input Schema

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

City names or slugs: nyc (New York), la, sf, bos, dc, chi, lon, mia, atx. Use all for nine cities. Optional when URLs are supplied.

## `urls` (type: `array`):

Event /e/ID, public organizer /u/ID, or /explore/city URLs. Up to 50. Short links and tagged Explore URLs are not supported.

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

Maximum total event and organizer records saved across the entire run. Duplicates and filtered records are not billed.

## `getEventDetails` (type: `boolean`):

Visit each discovered event for public hosts, RSVP settings and dates. Direct event URLs always return full details. Disable for faster city snapshots.

## `includeHostEvents` (type: `boolean`):

For /u/ URLs, also collect events embedded in the public organizer page. This can include past events and is not a complete event history.

## `keyword` (type: `string`):

Case-insensitive phrase filter on event title, description and venue; or organizer name and bio. Filters returned snapshots, not a global Partiful search.

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

Inclusive YYYY-MM-DD, compared in the event’s published timezone. Events without a known date/timezone and organizer rows are excluded.

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

Inclusive YYYY-MM-DD in each event’s timezone. Filters event start dates, not overlapping date ranges.

## `minGoing` (type: `integer`):

Zero disables filtering. Positive values exclude hidden/unknown counts and organizer rows. Approved, interested and waitlisted counts remain separate.

## `maxRequests` (type: `integer`):

Maximum city, event and organizer page requests. robots.txt checks and transient retries are additional. SUMMARY reports truncation and ERRORS lists failed URLs.

## Actor input object example

```json
{
  "cities": [
    "nyc"
  ],
  "maxItems": 20,
  "getEventDetails": true,
  "includeHostEvents": true,
  "minGoing": 0,
  "maxRequests": 100
}
```

# Actor output Schema

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

No description

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

No description

## `errors` (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 = {
    "cities": [
        "nyc"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("softprodlabs/partiful-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": ["nyc"] }

# Run the Actor and wait for it to finish
run = client.actor("softprodlabs/partiful-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": [
    "nyc"
  ]
}' |
apify call softprodlabs/partiful-scraper --silent --output-dataset

```

## MCP server setup

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