JSON API

Every listing page on FindLocal has a JSON twin. No key, no signup, CORS open, GET only. Base URL https://findlocal.community.

Endpoints

EndpointReturns
GET /api/eventsUpcoming events in one city, filtered and paginated. { data: Event[], meta: { city, count, total, page, page_size } }
GET /api/events/<uuid>One event, including past and delisted ones. { data: Event } or 404 { error: "not found" }
GET /api/venuesActive venues in one city with upcoming counts. { data: Venue[], meta: { city, count } }
GET /event/<uuid>/calendar.icsiCalendar file for one event (text/calendar)

Quick start

# Live music in Boston this week
curl 'https://findlocal.community/api/events?city=boston&cat=music&when=week&limit=5'

# Free things in Brooklyn this weekend, evenings only
curl 'https://findlocal.community/api/events?city=new-york&region=Brooklyn&when=weekend&free=1&tod=evening'

# Literary events in Providence
curl 'https://findlocal.community/api/events?city=providence&cat=literary'

# Every active venue in Chicago
curl 'https://findlocal.community/api/venues?city=chicago'

Filtering /api/events

The parameters mirror the site's URLs exactly: /city/boston?cat=music&when=weekend on the site is /api/events?city=boston&cat=music&when=weekend on the API. Unknown values are ignored rather than rejected; check meta.total if a filter seems to do nothing.

ParameterValuesNotes
cityName or slug: Boston, new-york, portland-meDefaults to Boston. All 47 metros.
whenanytime · today · tomorrow · weekend · week · YYYY-MM-DDResolved in the city's time zone. weekend = upcoming Fri–Sun, week = next 7 days. Default anytime.
catComma list of slugs, or repeated (cat=music&cat=comedy)Category slugs
free1Only free events ($0 or labelled free)
paid1Only ticketed events. free=1&paid=1 returns both.
maxNumber (USD)Maximum parsed ticket price; events without a parsed price are excluded
todComma list of morning, afternoon, eveningTime of day of the start time
regionNeighborhood label, e.g. Brooklyn, CambridgeExact match. Use /api/venues to see the labels a city uses.
qFree text, ≤ 100 charsMatches event title and venue name
page1-based100 events per page by default
limit1–500Overrides the page size
venueVenue uuidUpcoming events at one venue
idsComma list of ≤ 200 event uuidsBypasses every other filter; any date, delisted included

Region vs. region group. region here is a neighborhood inside one city. Multi-metro areas such as New England are a widget concept; to cover one with the API, call it once per city.

Event fields

FieldTypeNotes
iduuidStable event id; public page at /event/<id>, iCalendar at /event/<id>/calendar.ics
titlestring
descriptionstring | nullOften an HTML fragment from the source
event_dateYYYY-MM-DDPlain calendar day in the venue's time zone. Do not new Date() it.
start_time / end_timeHH:MM:SS | null24-hour local time
citystringMetro partition, e.g. "Boston", "Portland ME"
regionstring | nullNeighborhood / borough / town, e.g. "Brooklyn", "Cambridge"
categoryslug | nullOne of the category slugs below
event_typestring[]The venue's own genre tags
pricestring | nullRaw label from the venue ("$15 adv / $20 door", "Free")
price_amountnumber | nullParsed USD amount when we could parse one
statusstring | null
detail_page_url / ticket_page_url / root_urlurl | nullLinks on the venue's site
image_urlurl | null
is_deleted0 | 11 = the venue stopped listing it (only visible via ids= and /api/events/<id>)
first_seen_at / last_seen_at / updated_atISO timestampWhen we first / last saw it on the source
sourcestringscraper_cloudflare, scraper_static, ticketmaster, seatgeek, recurring, …
venue_id, venue_name, venue_address, venue_lat, venue_lng, venue_url, venue_type, venue_region, venue_imageJoined venue columns
series_countnumber> 1 when the same title has that many upcoming dates at this venue (recurring)
series_imageurl | nullFirst image in the series, when series_count > 1

Booleans are 0/1, straight from the database. /api/events never returns is_deleted: 1 rows; /api/events/<id> and ids= do, so you can render an honest "no longer listed" state.

Venue fields

FieldNotes
iduuid; public page at /venue/<id>
name, city, region, address
urlThe venue's website
description, image, type, venue_size
categoriesstring[] of category slugs
latitude, longitudenumber | null
is_active0 | 1
upcomingCount of upcoming non-deleted events

/api/venues accepts city and an optional region.

Categories

SlugLabel
musicMusic
comedyComedy
theaterTheater
danceDance
literaryLiterary
artArts & Culture
food_drinkFood & Drink
familyFamily
marketMarkets
workshopClasses & Workshops
fitnessFitness & Wellness
nightlifeNightlife
communityCommunity
festivalFestivals
parksParks & Outdoors

Cities (47)

SlugNameStateTime zone
atlantaAtlantaGAAmerica/New_York
austinAustinTXAmerica/Chicago
baltimoreBaltimoreMDAmerica/New_York
bangorBangorMEAmerica/New_York
bostonBostonMAAmerica/New_York
brattleboroBrattleboroVTAmerica/New_York
burlingtonBurlingtonVTAmerica/New_York
cape-codCape CodMAAmerica/New_York
charlotteCharlotteNCAmerica/New_York
chicagoChicagoILAmerica/Chicago
cincinnatiCincinnatiOHAmerica/New_York
dallasDallasTXAmerica/Chicago
denverDenverCOAmerica/Denver
detroitDetroitMIAmerica/Detroit
hanoverHanoverNHAmerica/New_York
hartfordHartfordCTAmerica/New_York
houstonHoustonTXAmerica/Chicago
kansas-cityKansas CityMOAmerica/Chicago
las-vegasLas VegasNVAmerica/Los_Angeles
los-angelesLos AngelesCAAmerica/Los_Angeles
manchesterManchesterNHAmerica/New_York
miamiMiamiFLAmerica/New_York
minneapolisMinneapolisMNAmerica/Chicago
new-havenNew HavenCTAmerica/New_York
new-yorkNew YorkNYAmerica/New_York
northamptonNorthamptonMAAmerica/New_York
orlandoOrlandoFLAmerica/New_York
philadelphiaPhiladelphiaPAAmerica/New_York
phoenixPhoenixAZAmerica/Phoenix
pittsburghPittsburghPAAmerica/New_York
pittsfieldPittsfieldMAAmerica/New_York
portlandPortlandORAmerica/Los_Angeles
portland-mePortland MEMEAmerica/New_York
portsmouthPortsmouthNHAmerica/New_York
providenceProvidenceRIAmerica/New_York
rocklandRocklandMEAmerica/New_York
rutlandRutlandVTAmerica/New_York
sacramentoSacramentoCAAmerica/Los_Angeles
san-antonioSan AntonioTXAmerica/Chicago
san-diegoSan DiegoCAAmerica/Los_Angeles
san-franciscoSan FranciscoCAAmerica/Los_Angeles
seattleSeattleWAAmerica/Los_Angeles
st-louisSt. LouisMOAmerica/Chicago
stamfordStamfordCTAmerica/New_York
tampaTampaFLAmerica/New_York
washingtonWashingtonDCAmerica/New_York
worcesterWorcesterMAAmerica/New_York

Examples

JavaScript

const params = new URLSearchParams({ city: 'seattle', when: 'weekend', cat: 'comedy,music', limit: '50' });
const res = await fetch(`https://findlocal.community/api/events?${params}`);
const { data, meta } = await res.json();
console.log(`${meta.total} events this weekend`);
for (const e of data) console.log(`${e.event_date} ${e.start_time ?? ''} · ${e.title} @ ${e.venue_name}`);

Python

import requests

r = requests.get("https://findlocal.community/api/events", params={"city": "denver", "when": "today", "free": "1"}, timeout=15)
r.raise_for_status()
for e in r.json()["data"]:
    print(e["event_date"], e["start_time"], e["title"], "—", e["venue_name"])

Paging

curl 'https://findlocal.community/api/events?city=austin&page=1'
curl 'https://findlocal.community/api/events?city=austin&page=2'   # until data comes back empty

Caching, status codes, fair use

Walkthrough with more examples: How to use the FindLocal Events API.