# Event Organiser Leads: Who Runs Events in Any City (`precious_bathmat/event-organiser-leads`) Actor

Find the companies and people running events in any city. Reads Eventbrite listings and rolls them up to one row per organiser: how many events they run, in which cities and categories, at which venues, and how often. No API key.

- **URL**: https://apify.com/precious\_bathmat/event-organiser-leads.md
- **Developed by:** [Mariam Ahmed](https://apify.com/precious_bathmat) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 organiser leads

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

## Event Organiser Leads: Who Runs Events in Any City

Find the companies and people who **run** events, not just the events themselves.

This Actor reads public **Eventbrite and Meetup** listings for the cities and keywords you name, then rolls every event up to **one row per organiser**: how many events they run, in which cities, in which categories, at which venues, how often, and how much of it is online.

### What does this do?

Every other events Actor on the Store hands you a list of events. That is the raw material, not the answer. If you sell to the events industry — a venue, a caterer, an AV company, a ticketing platform, a sponsorship desk — the question is never "what is on in Austin next week". It is **"who puts on events here every month, and how do I reach them"**.

So this Actor inverts the data, across **both of the platforms that matter**. 268 Eventbrite events in one test run became **60 organisers**; a two-city, two-platform run returned **47 Eventbrite organisers and 33 Meetup groups** side by side.

```
Strive Networking      17 events   Austin + London   every 28 days   2 venues
Business Minds Events   9 events   Austin            every  6 days   Business & Professional
The Founders Club       9 events   Austin            every  6 days   Business & Professional
London FinTechs         8 events   London            every 13 days   Business & Professional
Astra Tech Hub, LLC     6 events   Austin            every  7 days   Science & Technology
```

That first row is the point. "Strive Networking" runs seventeen events across **two countries** on a monthly cycle. You will not see that by reading a list of events, and it is the difference between a cold contact and a qualified one.

### Who is it for?

- **Venues and event spaces** — find the organisers already running events in your city, and how often
- **Caterers, AV, staffing and production** — a list of repeat buyers rather than one-off hosts
- **Ticketing and event software** — organisers running enough volume to be worth a demo
- **Sponsorship and partnerships** — who reaches your audience, in which categories, at what cadence
- **Market researchers** — how many events a city supports, and how concentrated the organisers are

### What data do you get?

One row per organiser:

| Field | What it tells you |
|---|---|
| `organiser`, `organiserUrl` | Name and their page on whichever platform they run on |
| `events` | How many of their events this run read |
| `primaryCity`, `cities`, `cityCount` | Where they operate, and whether they cross cities |
| `primaryCategory`, `categories`, `subCategories` | What kind of events they run |
| `venues`, `venueCount` | Which venues they use — a direct signal for venue sales |
| `medianDaysBetweenEvents` | Cadence. A 7 is a weekly operator; a null is a one-off |
| `upcomingFrom`, `upcomingTo`, `spanDays` | The window their events cover |
| `onlineEvents`, `inPersonEvents`, `onlineSharePercent` | Whether they are a physical-venue buyer at all |
| `seriesEvents` | How many are recurring series |
| `sampleEventName`, `sampleEventUrl` | A concrete example to open |
| `platform` | Eventbrite or Meetup |
| `totalRsvps`, `medianRsvpsPerEvent` | **Meetup only.** Actual attendance, which Eventbrite does not publish |
| `organiserRating`, `organiserRatingCount` | **Meetup only.** How the group's own attendees rate it |

Every event read is also written to a second dataset (`events`), so you can keep the underlying rows.

### Example: Austin and London, September 2026

Input: two cities, keywords `tech` and `networking`, 4 pages per search.

| Measured | Result |
|---|---|
| Search pages read | 16, no refusals |
| Events read | 268 (after removing duplicates across keywords) |
| Organisers found | 60 |
| Organiser names resolved | **60 of 60** |
| Run time | 141 s, 67 MB |

Keyword overlap is real and handled: the `networking` pages in Austin returned 20 events of which only 5 were new, because `tech` had already found the rest. Events are deduplicated by id, so an organiser's count is never inflated by searching twice.

### What it refuses to do

These are deliberate, and each one is a thing the data cannot honestly support:

- **No ticket prices.** Organic Eventbrite search results carry **no price data at all** — only paid promoted listings do, and those are excluded. A price column here would be built from adverts, so there is not one.
- **No organiser email, phone or website.** Those fields were **empty on every organiser measured**. A blank column that looks like a contact field is worse than no column. You get the organiser's own page on the platform, which is where the contact route actually is.
- **No follower counts.** Same reason.
- **Promoted listings are excluded.** They are paid placements and repeat across pages, which would inflate an organiser's event count.
- **No claim about an organiser's full history.** Every row says so: counts cover the events this run read, nothing more.
- **The two platforms are not merged into one organiser.** A company running events on both appears once per platform, because nothing published by either side proves they are the same entity, and guessing from a name would quietly merge two different organisations. Each row states its platform.

### A limit worth knowing

**Eventbrite starts refusing at roughly 26 to 31 search requests**, answering HTTP 429. This was measured, not guessed, and it shapes how the Actor behaves:

- Requests are paced under that threshold, and a 429 makes the Actor back off and retry rather than hammer a closed door.
- **Depth and breadth share one budget.** 49 pages of one city uses the whole allowance. So if you ask for more than fits, the Actor **spreads the pages evenly across your cities and says so in the log**, rather than reading the first city deeply and silently ignoring the last.
- Eventbrite offers at most **49 pages of 20 events** per search, about 980 events, so that is the ceiling for any one city and keyword.
- Organiser name lookups are on a separate budget and keep working through a search 429.

Raising **Maximum search requests** above the default does not reliably read more — it just meets the refusal sooner.

**Meetup has a different limit, and it is about place names.** Meetup will not accept a city
as free text: asking it for "London, United Kingdom" returns HTTP 200 with about half the
results and no venue cities at all, rather than an error. It needs its own location code
(`gb--17--London`, `us--tx--Austin`, `de--Berlin`). This Actor ships codes for the major
event cities, and for any city outside that list it **reads Eventbrite only and names the
skipped city in the run summary** — because a silently half-empty answer is worse than a
stated gap.

Meetup returns about 20 to 30 events per city and keyword and was not rate limited in testing.

### Popular organiser searches

Ready-made runs you can open and start, or copy as a starting point:

- [Event Organisers in London](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-london)
- [Event Organisers in New York](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-new-york)
- [Event Organisers in Austin](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-austin)
- [Event Organisers in Toronto](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-toronto)
- [Event Organisers in Sydney](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-sydney)
- [Event Organisers in Chicago](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-chicago)
- [Event Organisers in Berlin](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-berlin)
- [Event Organisers in Los Angeles](https://apify.com/precious_bathmat/event-organiser-leads/examples/event-organisers-in-los-angeles)
- [Tech Event Organisers](https://apify.com/precious_bathmat/event-organiser-leads/examples/tech-event-organisers)
- [Business Networking Event Organisers](https://apify.com/precious_bathmat/event-organiser-leads/examples/business-networking-event-organisers)
- [Conference Organisers](https://apify.com/precious_bathmat/event-organiser-leads/examples/conference-organisers)
- [Workshop and Training Organisers](https://apify.com/precious_bathmat/event-organiser-leads/examples/workshop-and-training-organisers)
- [Music Event Promoters](https://apify.com/precious_bathmat/event-organiser-leads/examples/music-event-promoters)
- [Repeat Event Organisers](https://apify.com/precious_bathmat/event-organiser-leads/examples/repeat-event-organisers)
- [Venue Sales Leads](https://apify.com/precious_bathmat/event-organiser-leads/examples/venue-sales-leads)

### Pricing

**$0.01 per organiser** and **$0.0005 per event read**.

The Austin and London run above — 268 events, 60 organisers — costs about **$0.73**.

### Input

| Field | Meaning |
|---|---|
| **Cities** | `"Austin, United States"`, `"London, United Kingdom"`, or an Eventbrite slug like `united-states--austin`. A bare city name is rejected, because "Springfield" alone would resolve to the wrong country |
| **Sources** | Eventbrite, Meetup, or both. Both by default |
| **Keywords** | Searched separately in every city. Leave empty for everything on in the city |
| **Pages per search** | 20 events each, up to 49 |
| **Maximum search requests** | Default 24, just under where Eventbrite starts refusing |
| **Include online events** | Online events have no venue city; turn off for physical events only |
| **Minimum events per organiser** | Set to 2 or 3 to drop one-off hosts and keep the regulars |
| **Look up organiser names** | Costs one request each. Turn off for a faster run returning ids and links only |
| **Maximum organisers** | How many rows to return, most events first |

### Integrations

Results export to JSON, CSV, Excel and Google Sheets, or go straight to your CRM through the Apify API, webhooks, Make, Zapier and n8n.

# Actor input Schema

## `places` (type: `array`):

Write each one as "City, Country", for example "Austin, United States" or "London, United Kingdom". An Eventbrite place slug such as "united-states--austin" also works. A bare city name is rejected, because it is ambiguous.

## `sources` (type: `array`):

Which platforms to read. Eventbrite gives event categories; Meetup gives RSVP counts and a group rating. Meetup needs its own location code, so it is skipped for cities outside the built-in list and the run summary says which.

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

Optional. Each keyword is searched separately in every city, for example "tech", "networking", "business". Leave empty to read everything on in the city.

## `pagesPerSearch` (type: `integer`):

Each page holds 20 events. Eventbrite offers at most 49 pages per search, about 980 events. Depth and breadth share one request budget, so more pages means fewer cities.

## `maxSearchRequests` (type: `integer`):

Eventbrite starts refusing at roughly 26 to 31 search requests, so raising this above the default does not reliably read more. Lower it to keep a run short.

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

Online events have no venue city. Turn this off to keep only events with a physical address.

## `minEventsPerOrganiser` (type: `integer`):

Drop organisers with fewer events than this. Raising it to 2 or 3 filters out one-off hosts and leaves the people who run events regularly.

## `resolveOrganiserNames` (type: `boolean`):

Search results carry only an organiser id, so the name costs one extra request each. Turn this off for a faster, cheaper run that returns ids and links only.

## `maxOrganisers` (type: `integer`):

How many organiser rows to return, most events first. Each costs $0.01.

## Actor input object example

```json
{
  "places": [
    "Austin, United States"
  ],
  "sources": [
    "Eventbrite",
    "Meetup"
  ],
  "keywords": [
    "tech",
    "networking"
  ],
  "pagesPerSearch": 5,
  "maxSearchRequests": 24,
  "includeOnline": true,
  "minEventsPerOrganiser": 1,
  "resolveOrganiserNames": true,
  "maxOrganisers": 200
}
```

# Actor output Schema

## `organisers` (type: `string`):

Every organiser found, most events first, with cities, categories, venues and cadence.

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

Market size per search, how many requests were used, and anything that could not be read.

# 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 = {
    "places": [
        "Austin, United States"
    ],
    "keywords": [
        "tech",
        "networking"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("precious_bathmat/event-organiser-leads").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 = {
    "places": ["Austin, United States"],
    "keywords": [
        "tech",
        "networking",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("precious_bathmat/event-organiser-leads").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 '{
  "places": [
    "Austin, United States"
  ],
  "keywords": [
    "tech",
    "networking"
  ]
}' |
apify call precious_bathmat/event-organiser-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,precious_bathmat/event-organiser-leads"
        }
    }
}
```

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/ctzO498kbbAbluZut/builds/IgKa97PQpIuWhjl2U/openapi.json
