Events API v1 — structured feed reference
Technical reference for the FindKobi Events API v1: search by city, age, and date; field catalog; JSON, CSV, RSS, and JSON Feed endpoints for automated publishing workflows.
V 1.0
Search family-friendly events in the Bay Area with normalized venues, categories, ages, and plain-text descriptions.
Authentication
Pass your API key as api_key or Authorization: Bearer fk_live_…. Create a key from your account.
Root URL
https://api.findkobi.com/v1/events
Sample feed (no key): https://api.findkobi.com/v1/demo/events
Alternate exports: CSV https://api.findkobi.com/v1/events.csv, RSS https://api.findkobi.com/v1/feed.rss, JSON Feed https://api.findkobi.com/v1/feed.json
Copy-paste integration
Plain HTTP GET — no SDK. Demo needs no key; live calls use Authorization: Bearer fk_live_… (or api_key=).
const url = "https://www.findkobi.com/api/v1/demo/events?city=oakland&age_min=2&age_max=4&week=current&limit=10";
const res = await fetch(url, {
headers: {
"Accept": "application/json"
},
});
if (!res.ok) throw new Error(await res.text());
const data = await res.json();
console.log(data.events.map((e) => e.title));Copy-paste integration
Plain HTTP GET — no SDK. Demo needs no key; live calls use Authorization: Bearer fk_live_… (or api_key=).
const url = "https://www.findkobi.com/api/v1/events?city=oakland&age_min=2&age_max=4&week=current&limit=10";
const res = await fetch(url, {
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_KEY"
},
});
if (!res.ok) throw new Error(await res.text());
const data = await res.json();
console.log(data.events.map((e) => e.title));Common parameters
city,lat,lng,radius_km— geo filterage_min,age_max— child age in yearscategory,q,is_free,start_date,end_datelimit,offset— pagination
Fields
| Name | Type | Description |
|---|---|---|
| id | string | Stable FindKobi event identifier (bsc_evt_…). |
| title | string | Event name. |
| description | string | null | Plain-text description (HTML stripped when present). |
| summary | string | null | Short plain-text blurb; falls back to truncated description. |
| start_datetime | string (ISO 8601) | Start time with timezone offset. |
| end_datetime | string (ISO 8601) | End time when known. |
| venue.name | string | Venue or place name. |
| venue.address | string | Single-line street address. |
| venue.lat | number | Latitude (WGS84). |
| venue.lng | number | Longitude (WGS84). |
| organizer | string | null | Host organization when known (e.g. Oakland Public Library); venue.name is the branch/room. |
| organizer_url | string | null | Host site (library, museum, city org) when safe to share — not upstream feeds. |
| categories | string[] | Normalized category slugs. |
| tags | string[] | Additional topical tags. |
| image_url | string | null | Primary cover image URL. |
| is_free | boolean | True when admission is free. |
| price | object | null | min, max, note when pricing is known. |
| ticket_url | string | null | Host registration URL when on-library/civic site; otherwise use event_url. |
| source | string | null | Optional host domain for attribution (library/museum/gov) — never ingest pipeline ids. |
| source_url | null | Omitted — use event_url and organizer_url so partners cannot re-ingest upstream feeds. |
| destination | string | Destination slug (metro / city cluster). |
| age_range | object | null | min_months, max_months (canonical storage units). |
| age_range_years | object | null | min_years, max_years — mirrors friendly age_min/age_max filters. |
| is_canceled | boolean | Cancellation flag. |
| event_url | string | null | FindKobi canonical event page — may require a paid API tier when billing is enabled. |