Skip to content
ProspectAPIs

API reference / Events

Search events in a city

Written and maintained by The ProspectAPIs team

GET/v1/events

GET /v1/events is the ProspectAPIs operation searchEvents, in the Events group of the REST API. Public Luma and Partiful events in one city, soonest first, in one record shape, read without an account. Billed per event returned at GET /pricing events.price_per_event_usd once events are available; an empty page is free. Launching soon: answers 503 and charges nothing until GET /pricing reports events available. sources gives each platform's status: ok, not_covered (the platform does not cover the city or filter; Partiful publishes no category) or unreadable with a reason. Pass next_cursor back as cursor for the next page. Cost: Launching soon. Send your API key as a Bearer token in the Authorization header.

How this fits with the rest of the events API, with worked examples, is in the event discovery guide.

Parameters

Parameters of GET /v1/events
NameInTypeDescription
city requiredquerystringA city slug such as sf, nyc or london, or a city name; GET /v1/events/cities lists them.
platformquerystringluma, partiful, or both comma-separated (default both).
sincequerystring (date)Only rounds announced on or after this date (inclusive), YYYY-MM-DD.
untilquerystring (date)Only rounds announced on or before this date (inclusive), YYYY-MM-DD.
categoryquerystring: ai, tech, crypto, arts, climate, fitness, wellness, food, books, games, family, runningLuma's category: ai, tech, crypto, arts, climate, fitness, wellness, food, books, games, family or running.
min_guestsqueryintegerAt least this many guests; only events that show their count match.
max_guestsqueryintegerAt most this many guests.
hostquerystringA host or organiser name or handle contains this text.
speakerquerystringA listed speaker, a host or the title names this person.
qquerystringThe title contains this text.
freequerybooleantrue for free events only, false for paid only.
limitqueryintegerPage size, 1 to 100 (default 25).
cursorquerystringThe previous page's next_cursor, passed back unchanged.

An unknown query parameter is refused with a 400 rather than ignored, so a typo never widens a search you pay for.

Responses

Response codes of GET /v1/events
StatusMeaning
200A page of events.
400The request was invalid (e.g. a bad filter or input); nothing was charged.
401The API key is missing or invalid.
402Out of credits. The body carries top_up_url; nothing was charged.
429Too many requests; retry after the window.
503Events are not available yet, or every platform asked for is unreadable and nothing is stored for this search. Nothing is charged.

Every error answers with the same JSON body, an error string and sometimes a code; the errors page lists each status and when it happens. A per-key 429 carries Retry-After; see rate limits.

200 response fields

A page of events. The body is a EventList.

Fields of the 200 response
FieldTypeDescription
data requiredarray of EventOne public event, the same shape for every platform. A field the platform does not publish is null, never guessed.
data[].id requiredstringThe platform and its own id, such as luma.evt-AbC123.
data[].platform requiredstring: luma, partiful
data[].platform_event_id requiredstringThe platform's own stable id.
data[].url requiredstring (uri)
data[].title requiredstring
data[].start_at requiredstring (date-time)UTC.
data[].end_atstring (date-time) or null
data[].start_localstring or nullLocal time with the offset.
data[].end_localstring or null
data[].timezone requiredstring or null
data[].citystring or null
data[].city_slugstring or null
data[].country_codestring or null
data[].venueobject or null
data[].onlineboolean
data[].categorystring or nullLuma's own category slug; null on Partiful.
data[].categories requiredarray of string
data[].guest_countinteger or nullNull when the host hides the guest list.
data[].guest_count_exactboolean or null
data[].hosts requiredarray of object
data[].speakersarray of object
data[].organizerobject or null
data[].ticketobject or null
data[].cover_urlstring or null
data[].first_seen_atstring (date-time) or null
data[].last_seen_atstring (date-time) or null
next_cursor requiredstring or null
count requiredinteger
city requiredobject
city.slugstring
city.namestring
city.timezonestring
sources requiredarray of EventSource
sources[].platform requiredstring: luma, partiful
sources[].status requiredstring: ok, not_covered, unreadable, stored
sources[].reasonstring
sources[].read_atstring (date-time)
sources[].events_seeninteger
sources[].completeboolean
sources[].cachedboolean
Response headers
HeaderMeaning
RateLimit-LimitRequests this API key may make per minute.
RateLimit-RemainingRequests left in the current one-minute window.
RateLimit-ResetSeconds until the current window resets.

Code samples

Each sample sends the same request. Set PROSPECTAPIS_KEY in your environment first. Values come from the spec's examples; replace them with your own.

curl
curl -G https://api.prospectapis.com/v1/events \
  -H "Authorization: Bearer $PROSPECTAPIS_KEY" \
  --data-urlencode "city=city" \
  --data-urlencode "since=2026-10-01" \
  --data-urlencode "limit=10"
JavaScript (fetch)
const params = new URLSearchParams({ city: "city", since: "2026-10-01", limit: "10" });
const res = await fetch(`https://api.prospectapis.com/v1/events?${params}`, {
  headers: { Authorization: `Bearer ${process.env.PROSPECTAPIS_KEY}` },
});
if (!res.ok) throw new Error(`${res.status}: ${(await res.json().catch(() => ({}))).error ?? res.statusText}`);
const data = await res.json();
console.log(data);
Python (requests)
import os, requests

res = requests.get(
    "https://api.prospectapis.com/v1/events",
    headers={"Authorization": f"Bearer {os.environ['PROSPECTAPIS_KEY']}"},
    params={"city": "city", "since": "2026-10-01", "limit": 10},
    timeout=30,
)
res.raise_for_status()
data = res.json()
print(data)

Billing

Billing reserves before it serves: the call holds what it may cost, serves at most what that hold covers, and refunds the rest when the response closes. Any non-2xx answer refunds the whole hold, so a failed call costs nothing. The response reports your balance in X-Credits-Remaining.

The event discovery guide covers this area end to end. Previous operation: Find the contacts a website lists. Next operation: List event cities. Every operation, grouped by area, is on the API reference index.

Create a free account to get a key, then run the samples above with your own values.

Was this page helpful?