Giggster Venue Search
Giggster's search API is unauthenticated and much faster than browsing the site
(hundreds of listings paged in the UI = a few API calls). Reverse-engineered June 2026
and verified working. If results ever come back empty or error, re-derive params from
the live bundle: fetch any giggster.com/search page, grab /static/scripts/search.*.js,
and look for the async function d({query... param builder near ft-search.
Quick start
python3 scripts/giggster_search.py \
--city toronto --activity birthday-party \
--date 2026-06-20 --rules alcohol,loud-noises \
--day Saturday --from 21:00 --until 30:00 \
--min-cap 40 --max-hourly 220 --details --out /tmp/venues.csv
Run --help for all flags. Without --out it prints JSON to stdout. The script only
needs the Python standard library.
| Endpoint |
Purpose |
GET /locations/ft-search |
paginated search (items) |
GET /locations/ft-total |
count only ({"total": N}) |
GET /locations/{id} |
full detail: rules dict, BYO alcohol, own DJ, PA, standing/sitting limits |
GET /locations/{id}/open-hours |
per-weekday hours; literal null body = no record (treat as unknown) |
Search params:
geo (REQUIRED): map bounds ne.lat,ne.lng,sw.lat,sw.lng. Toronto: 43.8555,-79.1168,43.5810,-79.6393
place (city name), country (e.g. CA), q_activity (slug, e.g. birthday-party)
interval: YYYY-MM-DD HH:MM-HH:MM — calendar availability, same-day only
rules: comma list, listing must allow ALL. Valid: alcohol, loud-noises, smoking,
pets, cooking, external-catering, electricity-usage, adult-filming
offset/limit (max 50), sort_order=desc, includes=owner
sort_by is finicky — omit it (only distance/relevance/default accepted, NOT geo)
Gotchas:
- Hours use a >24h clock:
"27:00" = 3AM next day, "30:00" = 6AM. A venue listed
06:00-30:00 is effectively round-the-clock.
properties.currency.value: 2 = CAD, 1 = USD (mixed within one city!).
- Event price =
properties["price-lvl0-event-hourly"].value, fallback price-base-hourly.
celebrate-standing-limit is the real party capacity; max-attendees can be 99999.
- Search results omit the rules dict — only
/locations/{id} detail has it.
Workflow for a venue shortlist
- Run the script with rule/capacity/budget filters and
--details.
- Always read descriptions of finalists — filters lie by omission. Real examples
caught: a "smoking friendly" patio requiring music down by 10PM; a bar that is
strictly non-alcoholic. The script flags
MUSIC CURFEW / NO ALCOHOL / NO PARTIES
patterns in red_flags, but skim the full text of top picks anyway.
- Compute total cost = hourly × booking hours; respect
min_hours.
- Cross-midnight bookings: Giggster's calendar filter only covers same-day. Verify the
overnight stretch via open-hours AND tell the user to confirm with the host before paying.
- Deliver the shortlist however the user prefers (table, CSV, or a spreadsheet) with
per-venue totals, capacity, policies (BYO alcohol / own DJ / smoking), and listing links.
1---2name: giggster-search3description: Search Giggster event/venue rentals via their internal API instead of clicking through the website. Use when the user wants to find an event space, party venue, film/photo location, or asks to "check Giggster". Filters by date availability, house rules (alcohol, loud noise, smoking), capacity, budget, and overnight operating hours — then shortlists.4---56# Giggster Venue Search78Giggster's search API is unauthenticated and much faster than browsing the site9(hundreds of listings paged in the UI = a few API calls). Reverse-engineered June 202610and verified working. If results ever come back empty or error, re-derive params from11the live bundle: fetch any giggster.com/search page, grab `/static/scripts/search.*.js`,12and look for the `async function d({query...` param builder near `ft-search`.1314## Quick start1516```bash17python3 scripts/giggster_search.py \18 --city toronto --activity birthday-party \19 --date 2026-06-20 --rules alcohol,loud-noises \20 --day Saturday --from 21:00 --until 30:00 \21 --min-cap 40 --max-hourly 220 --details --out /tmp/venues.csv22```2324Run `--help` for all flags. Without `--out` it prints JSON to stdout. The script only25needs the Python standard library.2627## Key API facts (base: https://api.giggster.com, no auth)2829| Endpoint | Purpose |30|----------|---------|31| `GET /locations/ft-search` | paginated search (`items`) |32| `GET /locations/ft-total` | count only (`{"total": N}`) |33| `GET /locations/{id}` | full detail: rules dict, BYO alcohol, own DJ, PA, standing/sitting limits |34| `GET /locations/{id}/open-hours` | per-weekday hours; literal `null` body = no record (treat as unknown) |3536Search params:37- `geo` (REQUIRED): map bounds `ne.lat,ne.lng,sw.lat,sw.lng`. Toronto: `43.8555,-79.1168,43.5810,-79.6393`38- `place` (city name), `country` (e.g. `CA`), `q_activity` (slug, e.g. `birthday-party`)39- `interval`: `YYYY-MM-DD HH:MM-HH:MM` — calendar availability, same-day only40- `rules`: comma list, listing must allow ALL. Valid: `alcohol`, `loud-noises`, `smoking`,41 `pets`, `cooking`, `external-catering`, `electricity-usage`, `adult-filming`42- `offset`/`limit` (max 50), `sort_order=desc`, `includes=owner`43- `sort_by` is finicky — omit it (only `distance`/`relevance`/`default` accepted, NOT `geo`)4445Gotchas:46- Hours use a >24h clock: `"27:00"` = 3AM next day, `"30:00"` = 6AM. A venue listed47 `06:00-30:00` is effectively round-the-clock.48- `properties.currency.value`: 2 = CAD, 1 = USD (mixed within one city!).49- Event price = `properties["price-lvl0-event-hourly"].value`, fallback `price-base-hourly`.50- `celebrate-standing-limit` is the real party capacity; `max-attendees` can be 99999.51- Search results omit the rules dict — only `/locations/{id}` detail has it.5253## Workflow for a venue shortlist54551. Run the script with rule/capacity/budget filters and `--details`.562. **Always read descriptions of finalists** — filters lie by omission. Real examples57 caught: a "smoking friendly" patio requiring music down by 10PM; a bar that is58 strictly non-alcoholic. The script flags `MUSIC CURFEW` / `NO ALCOHOL` / `NO PARTIES`59 patterns in `red_flags`, but skim the full text of top picks anyway.603. Compute total cost = hourly × booking hours; respect `min_hours`.614. Cross-midnight bookings: Giggster's calendar filter only covers same-day. Verify the62 overnight stretch via open-hours AND tell the user to confirm with the host before paying.635. Deliver the shortlist however the user prefers (table, CSV, or a spreadsheet) with64 per-venue totals, capacity, policies (BYO alcohol / own DJ / smoking), and listing links.