# Event Sponsorship Prospecting (`aitorsm/event-sponsorship-prospecting`) Actor

Find recurring event organizers and explicit, sourced sponsor/partner evidence for sponsorship prospecting.

- **URL**: https://apify.com/aitorsm/event-sponsorship-prospecting.md
- **Developed by:** [Aitor Sanchez-Mansilla](https://apify.com/aitorsm) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $60.00 / 1,000 qualified sponsorship accounts

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

## Find Event Sponsors and Recurring Event Organizers

[![Actor status](https://apify.com/actor-badge?actor=aitorsm/event-sponsorship-prospecting)](https://apify.com/aitorsm/event-sponsorship-prospecting)

Find recurring event organizers and explicit sponsor or partner mentions from Eventbrite, Meetup, Luma, and Posh. Get source-linked accounts, representative events, sponsor evidence, and public people already shown by the selected source.

This Actor reports observed facts, not a guessed “sponsor fit” score. Every sponsor mention includes the page where it was found.

### Use cases

- Build a prospect list of organizers that run events repeatedly.
- Find brands already sponsoring or partnering with relevant events.
- Research sponsorship opportunities by topic, category, and location.
- Monitor new and disappeared sponsor mentions across comparable searches.
- Export organizer, event, evidence, and public host/member/attendee data to a CRM or spreadsheet.

### Quick start

For normal discovery, enter:

1. **Keywords or topic** — for example, `technology networking`.
2. **City and country** — optional for Eventbrite; required for Meetup.
3. **Maximum accounts** — the number of organizer accounts you want returned.

No API key, dataset ID, or JSON is required.

#### Example input

```json
{
  "keywords": "technology networking",
  "city": "New York",
  "country": "US",
  "sourcePlatform": "auto",
  "maxAccounts": 25,
  "maxCostUsd": 5
}
```

`auto` searches Eventbrite and also searches Meetup when both city and a two-letter country code are supplied. Choose a specific source when you need narrower coverage.

For a particular Luma calendar or Posh organizer, open **Advanced: organizer searches and raw seeds**.

### What you get

The run provides separate views for:

- **Accounts** — deduplicated organizers, recurrence evidence, event count, locations, venues, public scale signals, and billing status.
- **Sponsor evidence** — named sponsor or partner, source URL, excerpt, confidence rule, and change status.
- **Events** — representative events linked to each organizer.
- **People / attendees** — public hosts, organizers, members, attendees, guests, or speakers returned by the selected source.
- **Summary** — delivered totals, charges, coverage status, and any limitations affecting the run.

#### Example account output

```json
{
  "recordType": "account",
  "accountId": "7f2b6c194b9f301a",
  "snapshotId": "4f432c09bf974d7d6da4",
  "accountName": "Community Tech",
  "sourcePlatforms": ["eventbrite"],
  "sourceUrls": [
    "https://www.eventbrite.com/e/community-tech-night-tickets-123456789"
  ],
  "website": "https://community.example.org/",
  "city": "New York",
  "country": "US",
  "categories": ["Science & Technology"],
  "venues": ["Community Hall"],
  "eventsObserved": 2,
  "firstObservedEventAt": null,
  "lastObservedEventAt": null,
  "isRecurring": true,
  "recurrenceRule": "At least two distinct public events were observed.",
  "scaleSignalMax": 245,
  "scaleSignalLabel": "aggregate public organizer follower count (Eventbrite)",
  "businessContact": null,
  "sponsorEvidenceCount": 1,
  "publicPeopleObserved": 0,
  "publicPeopleTruncated": false,
  "billed": true,
  "observedAt": "2026-09-22T18:00:00.000Z",
  "origin": "live",
  "freshness": "fresh",
  "collectedAt": "2026-09-22T18:00:00.000Z"
}
```

#### Example sponsor-evidence output

```json
{
  "recordType": "sponsorEvidence",
  "evidenceId": "9a1b2c3d4e5f6071",
  "snapshotId": "4f432c09bf974d7d6da4",
  "accountId": "7f2b6c194b9f301a",
  "accountName": "Community Tech",
  "sponsorNameRaw": "Acme Cloud",
  "sponsorNameNormalized": "acme cloud",
  "sourceUrl": "https://www.eventbrite.com/e/community-tech-night-tickets-123456789",
  "excerpt": "Sponsored by Acme Cloud.",
  "extractionMethod": "explicit_sponsor_phrase",
  "confidence": "high",
  "confidenceRule": "Explicit sponsor wording with a named organization.",
  "observedAt": "2026-09-22T18:00:00.000Z",
  "deltaStatus": "new",
  "billed": true,
  "origin": "live",
  "freshness": "fresh",
  "collectedAt": "2026-09-22T18:00:00.000Z"
}
```

The exact fields and values depend on what each public source exposes. The Actor does not invent missing dates, people, contacts, sponsors, or relationships.

### Pricing

The Actor uses pay-per-event pricing:

- **$0.06 per qualified account**.
- A qualified account is a deduplicated recurring organizer delivered from complete, current coverage.
- Recurrence requires at least two distinct observed events, or an explicit organizer/group account observation.
- Sponsor evidence, representative events, and public people are included with the account.

You are **not charged** for:

- non-recurring context accounts;
- duplicate accounts;
- stale results;
- missing or failed searches;
- incomplete or capped source coverage;
- accounts excluded by `maxAccounts` or `maxCostUsd`;
- a charge rejected by the platform.

Apify platform usage or upstream source execution costs may be charged separately according to your Apify plan. Use `maxCostUsd` to cap qualified-account charges for a run.

### Inputs

#### Normal search

- `keywords` or `topic` — public search terms.
- `sourcePlatform` — `auto`, Eventbrite, Meetup, or both for normal discovery.
- `city`, `country`, `category` — location and category filters. Use a two-letter country code for Meetup.
- `dateFrom`, `dateTo` — optional inclusive UTC calendar dates.

#### Result and cost limits

- `maxAccounts` — maximum organizer accounts returned; default `25`.
- `maxEvents` — maximum observations processed; default `200`.
- `maxCostUsd` — maximum qualified-account charges; default `$5`.
- `maxPeoplePerEvent` and `maxPeople` — limits for public people returned by sources.
- `includeBusinessContacts` — include public organizer business contacts already present in source data.

#### Advanced options

Advanced users can search a particular Luma calendar or Posh organizer, control freshness, or provide private inline observations. The standard keyword/location workflow does not require these options.

### Coverage and limitations

- Source pages change, disappear, or limit the fields they expose.
- A search can return no sponsors even when it finds organizers and events.
- Public people lists may be samples or partial lists; truncation and completeness are reported.
- Incomplete runs can still return validated results, but those results are unbilled and are not used to declare sponsor evidence “lost”.
- A single event does not prove that an organizer runs events repeatedly.
- Sponsor evidence means an explicit observed mention or named sponsor link; it does not prove an active commercial relationship today.

### Data handling and privacy

Search terms and public-source results are processed by a creator-operated service so current public results can be reused and stale coverage can be refreshed. Public results may be retained for reuse in later searches.

Private inline observations stay within your Actor run. They are not added to the shared public-results corpus. Keep your Apify run private if its input or output is sensitive.

The Actor preserves only publicly available data returned by the selected sources. It does not infer identities, guess private contact details, or enrich people beyond the source output.

### FAQ

#### Does this find companies likely to sponsor my event?

It finds recurring organizers and explicit sponsor or partner evidence. It does not claim to predict buying intent or sponsorship probability.

#### Why did I receive organizers without sponsor evidence?

Those accounts provide useful event-market context, but the inspected source text did not contain a qualifying named sponsor or partner mention.

#### When is an account considered recurring?

When at least two distinct events are observed for the organizer, or when the source explicitly represents a recurring organizer/group account. One Meetup event alone is not enough.

#### Can a partial run charge me?

No. Qualified-account charging is suppressed when source coverage is incomplete, capped, or cannot be saved reliably.

#### Are attendees and members included?

Yes, when the selected public source returns them. Rows include their association and available completeness/truncation information. The Actor does not reconstruct hidden lists.

#### Why are some event dates empty?

The Actor only emits a date when the source provides a trustworthy canonical timestamp. It does not guess a timezone for local date strings.

#### Can I use my own observations?

Yes. Add them under **Advanced: private inline observations**. They remain local to that run and do not enter the shared public-results corpus.

### Related Actors

- [Eventbrite Scraper — Event & Organizer Data](https://apify.com/aitorsm/eventbrite) for raw Eventbrite event discovery.
- [Luma Events Scraper — Event & Host Data](https://apify.com/aitorsm/luma-events) for Luma calendars, events, and public hosts.
- [Posh Events Scraper — Nightlife & Organizer Data](https://apify.com/aitorsm/posh-events) for Posh events and organizer data.

# Actor input Schema

## `keywords` (type: `string`):

Search words, such as climate or startup networking.

## `topic` (type: `string`):

Optional topic words added to the source keyword search.

## `sourcePlatform` (type: `string`):

Broad public discovery. Use Advanced for Luma or Posh organizer searches.

## `city` (type: `string`):

Used for public discovery and as a case-insensitive filter when the source supplies this field.

## `country` (type: `string`):

Used for public discovery and as a case-insensitive filter when the source supplies this field. Use a two-letter country code for Meetup. Simple discovery defaults to US when omitted; inline/advanced filters have no default.

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

Used for public discovery and as a case-insensitive filter when the source supplies this field.

## `dateFrom` (type: `string`):

Date from.

## `dateTo` (type: `string`):

Date to.

## `maxAccounts` (type: `integer`):

Max accounts.

## `maxEvents` (type: `integer`):

Max events.

## `maxCostUsd` (type: `number`):

Max cost usd.

## `includeBusinessContacts` (type: `boolean`):

Off by default. Applies to organizer/company channels, not public People rows returned by selected sources.

## `maxPeoplePerEvent` (type: `integer`):

Maximum deduplicated public people rows emitted from one event or account observation.

## `maxPeople` (type: `integer`):

Maximum public people rows emitted for the full run.

## `refreshPolicy` (type: `string`):

Use fresh cached coverage first. Cache-only never collects from sources.

## `maxCacheAgeHours` (type: `integer`):

Maximum age of fresh source observations.

## `allowStaleOnError` (type: `boolean`):

Deliver marked, unbilled stale cache when refresh cannot complete, including cache-only and wait responses.

## `maxRefreshSeeds` (type: `integer`):

Maximum leased seeds collected per run. Zero disables collection.

## `seeds` (type: `array`):

Up to 20 searches and up to 40 source calls per run (Meetup searches events and groups). Each seed returns at most 100 observations.

## `records` (type: `array`):

Records.

## Actor input object example

```json
{
  "sourcePlatform": "auto",
  "country": "US",
  "maxAccounts": 25,
  "maxEvents": 200,
  "maxCostUsd": 5,
  "includeBusinessContacts": false,
  "maxPeoplePerEvent": 50,
  "maxPeople": 1000,
  "refreshPolicy": "missing-or-stale",
  "maxCacheAgeHours": 168,
  "allowStaleOnError": true,
  "maxRefreshSeeds": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `accounts` (type: `string`):

No description

## `evidence` (type: `string`):

No description

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

No description

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

No description

## `people` (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 = {
    "country": "US",
    "maxAccounts": 25,
    "maxEvents": 200,
    "maxCostUsd": 5,
    "maxPeoplePerEvent": 50,
    "maxPeople": 1000
};

// Run the Actor and wait for it to finish
const run = await client.actor("aitorsm/event-sponsorship-prospecting").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 = {
    "country": "US",
    "maxAccounts": 25,
    "maxEvents": 200,
    "maxCostUsd": 5,
    "maxPeoplePerEvent": 50,
    "maxPeople": 1000,
}

# Run the Actor and wait for it to finish
run = client.actor("aitorsm/event-sponsorship-prospecting").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 '{
  "country": "US",
  "maxAccounts": 25,
  "maxEvents": 200,
  "maxCostUsd": 5,
  "maxPeoplePerEvent": 50,
  "maxPeople": 1000
}' |
apify call aitorsm/event-sponsorship-prospecting --silent --output-dataset

```

## MCP server setup

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

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/RsOl0t7HUtf11Ebfk/builds/cD3FGk6bGXbK9pnFB/openapi.json
